Две транзакции: одно и то же «от», разные «куда». Что случится?

Давайте представим, что у меня есть две почти одинаковые транзакции, разница только в их toполе. Первая транзакция - A, has 0x1111....и вторая - B, has 0x22222....в toполе.

Если я отправлю их одновременно - что произойдет? Я вижу два разных пути:

  1. «Мир» будет разделен на две части: те узлы, которые получили Aсначала, и те, которые получили B. Так что в зависимости от того, где находится "наш" майнер - Aили Bбудет майнить, 50/50.

  2. Узлы Ethereum позволяют заменять транзакции, если они не подтверждены. Итак, если транзакция еще не добыта, а нода получает новую — она заменяет.

И второй вопрос. Давайте установим gasPriceдля в Bдва раза больше, чем в A.

  1. я отправляюA
  2. Ожидание, например, 2 секунды
  3. отправкаB

Есть ли Bшансы победить в этой гонке? Я имею в виду, есть ли такое правило, как: "Если есть транзакция с какого-то адреса в tx pool, но есть другая транзакция с того же адреса и она дороже - первая транзакция должна быть заменена на вторую"

Заранее спасибо!

Ответы (2)

Если я отправлю их одновременно - что произойдет?

Узел не заменит транзакции одним и тем же одноразовым номером, если только цена газа для новой транзакции не превысит определенное значение ( по умолчанию: 10%, минимум: 1% ). В результате Aили Bбудет добыто зависит от того, какую транзакцию майнер получил первой. Обратите внимание, что не добытая транзакция будет удалена, когда узел получит добытый блок.

Есть ли у B какие-либо шансы выиграть эту гонку?

Да. Account Nonceиспользуется в Ethereum для замены транзакции, которая не добывается. Отправка транзакции с такой же nonceи более высокой ценой газа заменит старую. В обычном случае nonceследует увеличивать на 1 каждый раз, когда вы отправляете транзакцию, чтобы учетная запись могла отправлять несколько транзакций одновременно.

Это не то.

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

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

Блок — это упорядоченный набор транзакций. Блокчейн — это упорядоченный набор блоков. В более широком смысле блокчейн — это упорядоченный набор транзакций. На самом деле все будут обрабатывать транзакции в одинаковой последовательности, рано или поздно.

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

Это никогда не будет А, затем В или В, а затем А, поскольку единственная разница между А и В состоит в том, что toи gasPrice. Это всегда будет A или B, так как они имеют одинаковый одноразовый номер.
Я полагаю, это то, что вы имели в виду под «единственной разницей». Выполнение двух транзакций с одним и тем же одноразовым номером очень необычно и не так, как я интерпретировал ваш вопрос. Мир не делится на две части. В лучшем случае реорганизация сети. В конечном счете, одна из ваших транзакций входит, а другая нет.
(Примечание: я не был тем, кто задал вопрос). Я просто указал, что ОП подразумевает, что одноразовый номер был таким же, он же замена tx. Это не так уж странно, если вы пытаетесь повысить цену на газ. Происходит постоянно, в Metamask даже есть опция для этого.