Транзакции — 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)
Что я собираюсь сделать, так это создать транзакцию и стимулировать майнера забрать ее и поместить в цепь. У меня есть два персонажа — Алиса и Боб. Алиса собирается отправить с помощью своего приватного ключа некоторую ценность Бобу. Здесь нет поля адреса «от кого» (from), потому что — помните — мы выполняем подписание и восстановление с помощью нашей пары ключей. Транзакция упаковывается, подписывается, а затем отправляется по сети. Никто не может ее подделать, а на другой стороне кто-то может восстановить ее и обнаружить, что это действительно мы ее подписали. Адрес «от кого» вычисляется.
Стратегия цены газа (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)
Мы можем отправлять ценность и делать ставки, чтобы наша транзакция была признана в цепи. Но давайте посмотрим на еще одну вещь — поле данных. Мы можем отправлять информацию вместе с нашей транзакцией. Она будет в шестнадцатеричном формате. Алиса собирается отправить еще 6 долларов Бобу, и мы прикрепим сообщение: «hey Bob». Мы видим, как «hey Bob» конвертируется в шестнадцатеричный формат.
Мы подписываем эту транзакцию, отправляем ее майнеру, она уходит в сеть, и мы получаем хеш обратно. Мы наблюдаем, как она добывается, и это происходит. Когда мы проверяем этот блок, мы видим нашу транзакцию с прикрепленными данными.
Пул транзакций и повышение газа (12:43)
Для последней демонстрации я поместил транзакцию в пул с очень низкой ценой газа — около 1.001 Gwei. Она находится там недобытой, потому что мы недостаточно стимулируем майнеров. Мы видим, что транзакция находится в ожидании в пуле транзакций. В пуле от 100 до 300 транзакций, но последние добытые блоки показывают, что наименьшая цена газа составляет около 5.
Поэтому нам нужно повторно отправить эту транзакцию — давайте повысим ее до 10. Это намного больше, чем нужно, но мы повторно отправим ту же транзакцию с тем же нонсом, но с более высокой ценой газа. Сеть говорит: «тот же человек, та же транзакция, готов платить больше». Она подхватывается и добывается в следующий блок.
Итоги (14:52)
Мы отправили транзакцию, мы заплатили немного газа, чтобы стимулировать майнера поместить ее в цепь блоков. Мы также отправили данные вместе с транзакцией — теперь, когда у нас есть эти данные вызова, мы можем делать множество действительно крутых вещей, и позже мы перейдем к смарт-контрактам и множеству других интересных тем.