Порядок транзакций в одном блоке

Я пишу сообщение в блоге Medium об опережении и, похоже, не могу найти информацию о порядке транзакций в том же блоке. Я провел две сделки, одну с более низкой комиссией, назовите ее A: https://etherscan.io/tx/0x7332ec032bcd421e8137a623c542f38448bd7860b4b310acf4aef940dae85778 , и одну с более высокой ценой газа и тем же количеством газа, B: https://etherscan.io /tx/0x422d289768ce4fd6a7acf15dad9326ac80aaf0dcda696c306da69d5e83bfeb9b . Они оба были включены в один и тот же блок: https://etherscan.io/block/9494989 . Какая транзакция произошла первой, А или Б?

И вообще, как получить порядок транзакций в одном блоке?

Ого, у меня вчера был тот же вопрос!

Ответы (2)

Каждая транзакция включает одноразовый номер транзакции — добавочный номер. Майнеры включают транзакции в блок, чтобы они упорядочивались по одноразовому номеру и цене транзакции (точные реализации различаются). Но им приходится выбирать какой-то порядок: все транзакции всегда выполняются одна за другой, никакого параллелизма. Вот еще немного информации о порядке: Каков порядок транзакций по умолчанию во время майнинга, например, в geth?

Вы можете увидеть порядок (индекс) транзакций в блоке в Etherscan, например ваша транзакция https://etherscan.io/tx/0x7332ec032bcd421e8137a623c542f38448bd7860b4b310acf4aef940dae85778 , нажмите «Нажмите, чтобы увидеть больше» и отметьте «Позиция» рядом с «Nonce» . Каждая транзакция имеет уникальную позицию (индекс) внутри блока. Таким образом, «В» произошло после «А».

У майнеров есть свобода выбора порядка транзакций в блоке. Есть гибкость. Они также могут выбирать, какие транзакции включить из пула транзакций.

Они заинтересованы в том, чтобы упаковать как можно больше в блок по максимально возможной цене на газ. У каждого блока есть лимит газа блока, сетевое свойство, за которое проголосовали майнеры. Транзакция имеет цену газа, цену в эфире, которую отправитель готов заплатить за исполнение. Таким образом, поощрения делают это чем-то вроде игры в тетрис ... упаковать максимальное количество обработки, которое подходит, с самым высоким вознаграждением за максимально возможную комиссию за транзакцию.

Обратите внимание, что они не обязаны включать что-то конкретное и нет правильного порядка. Действительно, функция майнинга заключается в установлении канонического порядка.

Есть еще одно ограничение.

Каждая отправляющая учетная запись как одноразовая учетная запись, которая нумерует транзакции. Транзакции, исходящие из данной учетной записи, должны обрабатываться в порядке одноразовых номеров. Это предотвращает повторные атаки, а также гарантирует, что отправители не будут удивлены порядком подтвержденных транзакций.

Надеюсь, поможет.

ах это здорово! это означает, что я не могу бежать впереди себя. Спасибо
будет ли фактически считаться, что транзакция исходит из одной и той же учетной записи, если: я отправляю одну транзакцию с адреса А, а вторую, направленную на опережение этой транзакции, из смарт-контракта Б, созданного А?
"контракт B, который был создан A" - созданный A имеет детерминированный порядок транзакций относительно "Я отправляю одну транзакцию с адреса A".
Взгляните на шаблон 3 в исходном вопросе здесь, чтобы узнать больше о последствиях детерминированного упорядочения (по учетной записи). эфириум.stackexchange.com/questions/39790/…