Что заставляет транзакции быть видимыми для всех майнеров?

Как транзакции предоставляются майнерам? И что удерживает от реализации следующего сценария?


О допустимой транзакции первоначально сообщается «мошенническому» узлу Aв сети. Если этот узел является майнером, он просто сохраняет транзакцию для себя, чтобы (в конечном итоге) получить вознаграждение в следующий раз, когда он получит блок в цепочке. Сеть примет блок, так как транзакция действительна, а?

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


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

Ответы (2)

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

Вот почему вы не отправляете свою транзакцию только на один узел. Вы отправляете его как можно большему количеству разных узлов. (Bitcoin Core по умолчанию будет пытаться оставаться подключенным к 125 узлам в любой момент времени, и, насколько я знаю, он попытается отправить вновь созданную транзакцию на все 125 из них.) Возможно, некоторые из этих узлов « эгоистичный», но вы надеетесь, что по крайней мере некоторые из них не связаны с каким-либо конкретным майнером и приложат усилия, чтобы ретранслировать вашу транзакцию как можно шире, что является поведением по умолчанию стандартного программного обеспечения узла.

Если повезет, ваша транзакция быстро распространится среди всех майнеров в сети, и у каждого из них есть стимул (а именно плата) включить ее в следующий блок, который они добывают. (Если майнер X отказывается включать ее в свой следующий блок, надеясь сидеть на ней до тех пор, пока он не добудет другой блок в более позднее время, он рискует, что какой-то другой майнер Y, получивший транзакцию, включит ее в один из своих блоков до того, как майнер X добывает второй блок. В этом случае майнер X вообще не получает комиссию.)

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

Тот, кто инициирует транзакцию (отправитель), хочет , чтобы его транзакция была завершена как можно быстрее, особенно если он приложил к ней большой «стимул» (плату).

Таким образом, они объявят о своей транзакции многим другим узлам.

На самом деле ничто не заставляет эти узлы делиться транзакцией со всеми другими узлами, хотя они должны делиться ею.

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

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