Транзакції — ETH.BUILD
Демонстрація того, як працюють транзакції в Етеріумі, за допомогою освітнього інструменту ETH.BUILD. Дізнайтеся, як створюються, підписуються та надсилаються транзакції в мережі Етеріум.
Date published: 14 січня 2021 р.
Посібник від Остіна Гріффіта, який демонструє, як працюють транзакції в Етеріумі за допомогою інструменту візуального програмування ETH.BUILD — охоплює структуру транзакції, ціни газу, підписання, трансляцію та пул транзакцій.
Ця стенограма є доступною копією оригінальної стенограми відео (opens in a new tab), опублікованої Остіном Гріффітом. Її було трохи відредаговано для зручності читання.
Комісії за транзакції та стимули для майнерів (0:00)
Сьогодні на ETH.BUILD ми поговоримо про транзакції. До цього моменту ми розглядали, як ці транзакції майняться в блоки, пакуються в блоки та майняться в ланцюг. Ми хочемо поговорити про те, що стимулює майнера — окрім винагороди за блок — витягти нашу транзакцію з пулу, помістити її в блок і замайнити в ланцюг, порівняно з іншими людьми в пулі. У пулі можуть бути тисячі людей, які роблять ставки, і ця ставка здійснюється за допомогою цієї комісії.
Я можу вказати комісію у своїй транзакції, яка каже: «Я Аліса, і я надсилаю п'ять Бобу, а мій нонс дорівнює одиниці для захисту від повторного відтворення». Крім того, той, хто замайнить це, може забрати комісію собі. По суті, Аліса надсилає п'ять Бобу, але також платить майнеру п'ятак, щоб він помістив це в ланцюг.
Анатомія транзакції в Етеріумі (1:10)
Як виглядає транзакція в Етеріумі? У нас більше не буде «Боба» та «Аліси» — у нас будуть адреси. Значення буде у Wei, а не в ETH. І комісія також буде у Wei.
Давайте перейдемо до справи і подивимося на цю транзакцію. У мене є акаунт із введеною мнемонічною фразою, і я підключений до головної мережі Ethereum. Я також запускаю модуль для отримання даних про ціни з CoinMarketCap, тому я бачу, що нуль цілих і одна десята з чимось ETH перетворюється приблизно на 23 долари.
Налаштування транзакції (2:25)
Що я збираюся зробити, так це створити транзакцію та стимулювати майнера забрати її та помістити в ланцюг. У мене є два персонажі — Аліса та Боб. Аліса збирається надіслати за допомогою свого приватного ключа певну суму Бобу. Тут немає поля адреси «від кого», тому що — пам'ятайте — ми підписуємо та відновлюємо за допомогою нашої пари ключів. Транзакція пакується, підписується, а потім надсилається через мережу. Ніхто не може її підробити, а на іншій стороні хтось може відновити її та виявити, що це дійсно ми її підписали. Адреса «від кого» є похідною.
Стратегія ціни газу (4:20)
Ціна газу за замовчуванням встановлена на рівні близько 4.1 Gwei — це 4.1 мільярда Wei. Але ми хочемо підійти до цього більш стратегічно і подивитися, що відбувається ончейн прямо зараз. Ми бачимо, що в останньому блоці було 78 транзакцій, а ціна газу коливалася від приблизно 5 до якогось мінімуму. По суті, нам потрібно було б мати більше 5, щоб потрапити в цей блок. Тож давайте встановимо ціну газу на рівні 5.001 — зовсім трохи більше.
Конвертація у Wei (5:20)
Нам потрібно зробити конвертацію у Wei. В Етеріумі ви в основному маєте справу з двома номіналами: ETH, про який люди зазвичай говорять, і Wei, який є дуже крихітною часткою ETH. Gwei — те, що ми використовуємо для цін на газ — знаходиться посередині. Причина цього схожа на те, чому ми не ходимо і не говоримо в частках копійок.
Аліса має 0.18 ETH, і ми збираємося надіслати 0.05 ETH Бобу. Ми встановлюємо ціну газу 5 Gwei.
Підписання та трансляція (7:02)
Коли Аліса вирішує підписати транзакцію, вона вилітає як підписана транзакція, яка може йти через мережу. Ніхто не може втрутитися в неї — на іншій стороні хтось може визначити, що саме Аліса підписала її, і вона містить усю інформацію про те, кому ми хочемо надіслати кошти, та газ, який йде майнеру.
Ми беремо цю підписану транзакцію і вставляємо її у функцію надсилання модуля блокчейну. Коли я натискаю «надіслати», вона видає нам хеш — хеш транзакції. По суті, я надіслав її в розподілену мережу, і вони повернули мені хеш транзакції. Вона виходить у мережу, а потім з'являється цей пул транзакцій — усі люди роблять ставки, щоб їхня транзакція пройшла.
Перевірка блоку (8:41)
Ми можемо зробити запит до блокчейну щодо нашої транзакції. І дійсно, вона вже замайнена. Ми можемо подивитися на блок, відсортувати за ціною газу і знайти себе. Ось наша транзакція з ціною газу 5.001 — Аліса надсилає Бобу без додаткових даних. Ми там, приблизно на четвертій чи п'ятій позиції знизу.
Надсилання даних разом із транзакцією (9:54)
Ми можемо надсилати цінність і робити ставки, щоб наша транзакція була розпізнана в ланцюзі. Але давайте подивимося на ще одну річ — поле даних. Ми можемо надсилати інформацію разом із нашою транзакцією. Вона буде в шістнадцятковому форматі. Аліса збирається надіслати ще шість доларів Бобу, і ми додамо повідомлення: «hey Bob». Ми бачимо, що «hey Bob» конвертовано в hex.
Ми підписуємо цю транзакцію, надсилаємо її майнеру, вона потрапляє в мережу, і ми отримуємо хеш назад. Ми спостерігаємо, як вона майниться, і це відбувається. Коли ми перевіряємо цей блок, ми бачимо нашу транзакцію з прикріпленими даними.
Пул транзакцій та підвищення газу (12:43)
Для останньої демонстрації я помістив транзакцію в пул із дуже низькою ціною газу — близько 1.001 Gwei. Вона лежить там незамайнена, тому що ми недостатньо стимулюємо майнерів. Ми бачимо, що транзакція очікує в пулі транзакцій. У пулі від ста до трьохсот транзакцій, але останні замайнені блоки показують, що найменша ціна газу становить близько 5.
Тож нам потрібно повторно надіслати цю транзакцію — давайте піднімемо її до 10. Це набагато більше, ніж потрібно, але ми повторно надішлемо ту саму транзакцію з тим самим нонсом, але з вищою ціною газу. Мережа каже: «та сама людина, та сама транзакція, готова платити більше». Її забирають і майнять у наступний блок.
Підсумок (14:52)
Ми надіслали транзакцію, ми заплатили трохи газу, щоб стимулювати майнера помістити її в ланцюг блоків. Ми також надіслали дані разом із транзакцією — тепер, коли у нас є ці дані виклику, ми можемо робити безліч дійсно крутих речей, і пізніше ми перейдемо до смарт-контрактів та багатьох інших цікавинок.