Я пишу сообщение в блоге Medium об опережении и, похоже, не могу найти информацию о порядке транзакций в том же блоке. Я провел две сделки, одну с более низкой комиссией, назовите ее A: https://etherscan.io/tx/0x7332ec032bcd421e8137a623c542f38448bd7860b4b310acf4aef940dae85778 , и одну с более высокой ценой газа и тем же количеством газа, B: https://etherscan.io /tx/0x422d289768ce4fd6a7acf15dad9326ac80aaf0dcda696c306da69d5e83bfeb9b . Они оба были включены в один и тот же блок: https://etherscan.io/block/9494989 . Какая транзакция произошла первой, А или Б?
И вообще, как получить порядок транзакций в одном блоке?
Каждая транзакция включает одноразовый номер транзакции — добавочный номер. Майнеры включают транзакции в блок, чтобы они упорядочивались по одноразовому номеру и цене транзакции (точные реализации различаются). Но им приходится выбирать какой-то порядок: все транзакции всегда выполняются одна за другой, никакого параллелизма. Вот еще немного информации о порядке: Каков порядок транзакций по умолчанию во время майнинга, например, в geth?
Вы можете увидеть порядок (индекс) транзакций в блоке в Etherscan, например ваша транзакция https://etherscan.io/tx/0x7332ec032bcd421e8137a623c542f38448bd7860b4b310acf4aef940dae85778 , нажмите «Нажмите, чтобы увидеть больше» и отметьте «Позиция» рядом с «Nonce» . Каждая транзакция имеет уникальную позицию (индекс) внутри блока. Таким образом, «В» произошло после «А».
У майнеров есть свобода выбора порядка транзакций в блоке. Есть гибкость. Они также могут выбирать, какие транзакции включить из пула транзакций.
Они заинтересованы в том, чтобы упаковать как можно больше в блок по максимально возможной цене на газ. У каждого блока есть лимит газа блока, сетевое свойство, за которое проголосовали майнеры. Транзакция имеет цену газа, цену в эфире, которую отправитель готов заплатить за исполнение. Таким образом, поощрения делают это чем-то вроде игры в тетрис ... упаковать максимальное количество обработки, которое подходит, с самым высоким вознаграждением за максимально возможную комиссию за транзакцию.
Обратите внимание, что они не обязаны включать что-то конкретное и нет правильного порядка. Действительно, функция майнинга заключается в установлении канонического порядка.
Есть еще одно ограничение.
Каждая отправляющая учетная запись как одноразовая учетная запись, которая нумерует транзакции. Транзакции, исходящие из данной учетной записи, должны обрабатываться в порядке одноразовых номеров. Это предотвращает повторные атаки, а также гарантирует, что отправители не будут удивлены порядком подтвержденных транзакций.
Надеюсь, поможет.
странный шпион