Сомнения относительно трансляции транзакций и концепции tx pool

Это будет долго, и некоторые вопросы могут показаться глупыми. Но давайте продолжим с этим.

Насколько я понимаю, как только мы отправляем транзакцию в блокчейн, она попадает в пул транзакций с другими транзакциями. Как только транзакция выбрана любым майнером и включена в блок, транзакция удаляется из пула транзакций (мемпул, аналогия с биткойнами).

  1. Является ли пул транзакций (или мемпул или пул очередей) специфичным для узла ethereum или клиента ethereum (geth, prity)?
  2. В чем разница между tx pool geth и tx pool моей ноды (если они разные, то я в этом не уверен)?
  3. Как я могу узнать, находится ли транзакция в пуле tx? Можем ли мы предположить, что все не добытые транзакции находятся в пуле tx?
  4. Если каким-либо образом транзакция не находится в пуле транзакций и не добывается, можем ли мы предположить, что эта транзакция никогда не сможет попасть в блок? или Когда я могу быть уверен, что моя транзакция полностью удалена и не будет добыта.
  5. Я вижу много ожидающих/поставленных в очередь транзакций на моем узле.
      Эти транзакции отправляются только с моего узла?
      Что происходит с этими транзакциями, когда:
      а) я останавливаю узел geth на некоторое время и перезапускаю
      б) я удаляю db, обновляю geth и повторно синхронизирую, используя легкую/быструю синхронизацию
  6. Предположим, что сеть эфириум находится под большой нагрузкой. Каковы случаи, когда моя транзакция никогда не будет включена в блок (при условии, что транзакция не иссякнет и будет предоставлена ​​достаточная цена газа).

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

Ответы (1)

Технически это должен быть «пул транзакций», а не «пул транзакций»: у каждого узла есть набор транзакций, о которых он знает (или хочет знать), которые ожидают подтверждения от всех пользователей (не только ваших) -- собственный пул транзакций. Таким образом, если есть n узлов Ethereum, есть n пулов транзакций. Транзакции могут исчезнуть из пулов транзакций, если узлу не хватает памяти, выделенной для пула транзакций, или, я полагаю, он отфильтровывает их, когда получает (например, если он не соответствует требованиям цены на газ, он может их отфильтровать). ). Обратите внимание, что пул tx предназначен специально для ожидающих транзакций (ваш вопрос 7 предполагает путаницу в этом вопросе).

Если ваша транзакция была передана в сеть, она может не появиться ни на одном конкретном узле даже без злоумышленников по нескольким причинам. К ним относятся

Чтобы ответить на ваш вопрос более конкретно, нет, вы не можете предполагать, что ненайденный tx находится в каком-либо пуле tx (даже не в вашем собственном). Даже если ваша транзакция не находится ни в одном пуле транзакций, вы не можете быть уверены, что она не будет добыта, если только вы не отправите «отменяющую» транзакцию с тем же одноразовым номером , и эта транзакция будет добыта (хотя кто-то все еще может откатить сеть ) . . Причина, по которой вы не можете предположить, что транзакция не будет добыта в противном случае, заключается в том, что кто-то мог сохранить вашу транзакцию и может повторно передать ее позже. Или, что менее злонамеренно, узел может отключиться, например, в период высоких комиссий при кэшировании вашей транзакции, а затем вернуться, когда комиссии будут низкими.

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