я читал документ о данных транзакции , и, кажется, есть два противоречащих друг другу абзаца:
Каждый блок должен включать одну или несколько транзакций. Первая из этих транзакций должна быть транзакцией coinbase, также называемой транзакцией генерации, которая должна собирать и тратить вознаграждение за блок (состоящее из субсидии блока и любых комиссий за транзакции, уплачиваемых транзакциями, включенными в этот блок).
Блоки не обязаны включать какие-либо транзакции, отличные от coinbase, но майнеры почти всегда включают дополнительные транзакции, чтобы получить комиссию за транзакцию.
мои вопросы касаются транзакций coinbase и комиссий за транзакции:
добавляется ли транзакция coinbase автоматически (т. е. предполагается консенсусом) для каждого блока, или майнеры должны явно добавлять ее как первую транзакцию в каждом блоке? если да, то как они помечают это как транзакцию coinbase? достаточно ли не указывать входы и указывать его первым?
как майнеры собирают комиссию за транзакции? должны ли они явно добавлять транзакции, отличные от coinbase, со своим собственным адресом в качестве вывода? если да, то имеют ли транзакции по взиманию платы тот же тип, что и другие транзакции, или они в чем-то особенные?
первый абзац цитируемого текста, по-видимому, подразумевает, что комиссия за транзакцию в блоке может быть собрана через транзакцию coinbase, но второй абзац, по-видимому, подразумевает, что майнеры должны явно добавлять транзакции, не связанные с coinbase, для сбора комиссии за транзакцию; если майнер M
хочет получить комиссию за транзакцию A->B
, должен ли он M
также включать дополнительную транзакцию A->M
помимо A->B
? если нет, то как другие узнают, где собираются сборы, то есть адрес M
?
Майнеры самостоятельно создают транзакцию coinbase для блока. Чтобы создать транзакцию coinbase, эта транзакция должна быть первой в блоке и иметь только 1 ввод coinbase. Ввод Coinbase означает, что транзакция outpoint равна 0000000000000000000000000000000000000000000000000000000000000000000, а выходной индекс равен FFFFFFFF. Вводит сумму транзакции, рассчитываемую как сумма вознаграждения за блок в соответствии с высотой блока, плюс все суммы комиссий за все другие транзакции внутри блока. Майнер способен взять эту общую сумму на выходы. Майнер указывает собственный адрес и сумму вознаграждения за блок плюс комиссионное вознаграждение. В случае, если майнер неправильно посчитает суммы и укажет больше, чем ожидалось, блок будет отклонен другими узлами. Если майнер укажет, нижний блок будет принят, но майнер потеряет деньги.
Пример в основной сети, когда майнер теряет все вознаграждение из-за ошибки:
https://bitaps.com/410995608537d591d6ce5ff2a7966fa84f891c5e2269ef85e8ecdb68d5188f9b
Сайкер
bitaps.com