сбор вознаграждения за блок и комиссии за транзакцию

я читал документ о данных транзакции , и, кажется, есть два противоречащих друг другу абзаца:

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

Блоки не обязаны включать какие-либо транзакции, отличные от coinbase, но майнеры почти всегда включают дополнительные транзакции, чтобы получить комиссию за транзакцию.

мои вопросы касаются транзакций coinbase и комиссий за транзакции:

  • добавляется ли транзакция coinbase автоматически (т. е. предполагается консенсусом) для каждого блока, или майнеры должны явно добавлять ее как первую транзакцию в каждом блоке? если да, то как они помечают это как транзакцию coinbase? достаточно ли не указывать входы и указывать его первым?

  • как майнеры собирают комиссию за транзакции? должны ли они явно добавлять транзакции, отличные от coinbase, со своим собственным адресом в качестве вывода? если да, то имеют ли транзакции по взиманию платы тот же тип, что и другие транзакции, или они в чем-то особенные?

первый абзац цитируемого текста, по-видимому, подразумевает, что комиссия за транзакцию в блоке может быть собрана через транзакцию coinbase, но второй абзац, по-видимому, подразумевает, что майнеры должны явно добавлять транзакции, не связанные с coinbase, для сбора комиссии за транзакцию; если майнер Mхочет получить комиссию за транзакцию A->B, должен ли он Mтакже включать дополнительную транзакцию A->Mпомимо A->B? если нет, то как другие узнают, где собираются сборы, то есть адрес M?

Ответы (1)

Майнеры самостоятельно создают транзакцию coinbase для блока. Чтобы создать транзакцию coinbase, эта транзакция должна быть первой в блоке и иметь только 1 ввод coinbase. Ввод Coinbase означает, что транзакция outpoint равна 0000000000000000000000000000000000000000000000000000000000000000000, а выходной индекс равен FFFFFFFF. Вводит сумму транзакции, рассчитываемую как сумма вознаграждения за блок в соответствии с высотой блока, плюс все суммы комиссий за все другие транзакции внутри блока. Майнер способен взять эту общую сумму на выходы. Майнер указывает собственный адрес и сумму вознаграждения за блок плюс комиссионное вознаграждение. В случае, если майнер неправильно посчитает суммы и укажет больше, чем ожидалось, блок будет отклонен другими узлами. Если майнер укажет, нижний блок будет принят, но майнер потеряет деньги.

Пример в основной сети, когда майнер теряет все вознаграждение из-за ошибки:

https://bitaps.com/410995608537d591d6ce5ff2a7966fa84f891c5e2269ef85e8ecdb68d5188f9b

введите описание изображения здесь

привет спасибо за пример блока! но я все еще немного смущен; Означает ли это, что майнер должен правильно и самостоятельно рассчитывать вознаграждение за блок и комиссию за транзакцию ? кроме того, я видел, как многие недавние транзакции coinbase фактически отправляли более 12,5 биткойнов, означает ли это, что майнер может получить как вознаграждение за блок, так и все комиссии за транзакцию в этом блоке за одну транзакцию? Спасибо
Да, майнер должен рассчитывать все суммы (вознаграждение и сборы) самостоятельно. Рассчитайте общее вознаграждение + комиссионные и соберите в одиночных транзакциях coinbase.