У меня есть этот сценарий:
Поэтому всякий раз, когда пользователь кошелька инициирует транзакцию, это, насколько я понял, переходит в мемпул. И что у каждого узла есть свой мемпул.
Однако у меня есть несколько вопросов: каждый узел получает все транзакции в свой мемпул, что означает, что это похоже на место синхронизации, где все могут видеть одни и те же транзакции? Если да, то как остальная часть сети майнеров узнает, что транзакции, которые они выбрали из майнингового пула, еще не добываются другим майнером?
Или каждый узел получает разные транзакции в своих мемпулах? Если да, то как транслируется транзакция? Он попадает случайным образом в мемпул какого-то майнера?
Спасибо за ваше терпение!
Когда новая транзакция широковещательная, она будет передана от исходного узла всем доступным одноранговым узлам. Затем эти одноранговые узлы передают его всем своим одноранговым узлам и так далее, пока (надеюсь) каждый узел в сети не узнает о транзакции. Каждый узел может иметь мемпул, если они того пожелают, и этот мемпул будет хранить все транзакции, о которых они недавно слышали. Операторы узлов могут настроить несколько переменных в своем программном обеспечении для хранения только определенной суммы (в байтах) txs, для ретрансляции только транзакций, превышающих определенный минимум комиссии, и т. д.
Таким образом, мемпул каждого узла может немного отличаться, не существует консенсуса в отношении того, что хранится в мемпуле каждого узла. На самом деле, оператор узла может вообще не хранить мемпул!
Майнеры будут запускать полные узлы, которые взаимодействуют с сетью, так они узнают о новых транзакциях для включения в блоки, которые они добывают. Как только новый блок будет найден, майнер отправит его в сеть. Когда каждый узел узнает о новом блоке, он будет работать над независимой проверкой блока и всех транзакций в нем. Часть этого процесса включает определение транзакций, подтвержденных в блоке, и удаление этих транзакций из мемпула узла. Вскоре после получения информации о новом блоке мемпул каждого узла будет обновлен для удаления уже подтвержденных транзакций.
Получает ли каждый узел все транзакции в своем мемпуле, что означает, что это похоже на место синхронизации, где все могут видеть одни и те же транзакции?
Нет принудительной синхронизации, консенсуса или мемпулов, но многие мемпулы, вероятно, будут хранить множество одних и тех же транзакций в любой момент времени.
…как остальная часть сети майнеров узнает, что транзакции, которые они выбрали из майнингового пула, еще не добыты другим майнером?
Скорее всего, транзакции, хранящиеся в мемпуле каждого майнера, будут сильно перекрываться. При работе над новым блоком майнеры будут использовать транзакцию из своего мемпула, но не имеет значения, если более одного майнера попытаются добыть блок с одинаковыми транзакциями в нем. В конце концов один из майнеров найдет действующий блок, и после передачи его в сеть другие майнеры просто обновят свои собственные мемпулы, чтобы удалить уже подтвержденные транзакции, которые были включены в последний блок (так же, как любой другой узел воля). Затем процесс начинается снова, и все спешат добыть следующий блок, снова используя неподтвержденные транзакции, которые есть в их локальных мемпулах.