• Hash256
  • Hash160
  • Reverse Bytes
  • Hexadecimal
  • Satoshis

Coinbase Transaction

A transaction used to claim a block reward.

A coinbase transaction is the first transaction in a block. Miners use it to collect the block reward, and any additional transaction fees.

It’s like putting your details on a self-addressed envelope so you can collect prize winnings.

Usage

When a miner creates a candidate block, the very first space for a transaction is reserved for the coinbase transaction.

Every block must have a coinbase transaction.

Structure

A coinbase transaction is only slightly different to normal transaction data. The main difference is its single “blank” input, which we call the coinbase:

Raw Data (source)

01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4503ec59062f48616f4254432f53756e204368756e2059753a205a6875616e67205975616e2c2077696c6c20796f75206d61727279206d653f2f06fcc9cacc19c5f278560300ffffffff01529c6d98000000001976a914bfd3ebb5485b49a6cf1657824623ead693b5a45888ac00000000
  • The TXID is all zeros. (We’re not referencing an existing transaction)
  • The VOUT is all f’s (the maximum hexadecimal value for this field). (Again, because we’re not trying to refer to an existing output).
  • The scriptSig can actually contain any data you like.1,2 (Because we do not have to unlock anything).


Other than that, you just need to be sure that the sum of your output values does not exceed the block reward + transaction fees you’re collecting.

Notes

BIP 34

As of BIP 34 the scriptSig must start with a push of the height of the block. This change was made to prevent coinbase transactions from having the same TXID.

Example.

In the transaction data above, the 03 gives us the number of bytes being pushed, so the next 3 bytes ec5906 indicates the height of the block.

ec5906 is 416236 when you swap the endianness and convert to decimal.

Messages in coinbase transactions.

Miners often use the scriptSig for strings of text. You just have to decode them (from Hex to ASCII) to read them.

Here are some interesting ones:

Coinbase Transaction scriptSig (decoded) Notes
8b50f51b49f27e7bb0efb0b3bf38d12ce4f7e6258b90a75802a394cb585c879d BitFury/BIP100/ Miners typically include the name of their mining pool.
d0ec21e1d73d06be76c2b5b1e5ec486085bda8264229046c11b95f66f2eded83 /HaoBTC/Sun Chun Yu: Zhuang Yuan, will you marry me?/ You can put any string of text in to it.
4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b The Times 03/Jan/2009 Chancellor on brink of second bailout for banks This is the first coinbase transaction, mined by Satoshi Nakamoto.

A coinbase transaction must be 100 blocks deep before you can spend its outputs.

This is a safeguard to prevent outputs that originate from the coinbase transaction from becoming unspendable (in the event the mined block moves out of the active chain due to a fork).

By Greg Walker,

Last Updated: 21 Jul 2020
  • 21 Jul 2020: renamed /guide/ to /technical/
Back to Top

Hey there, it's Greg.

I'll let you know about cool website updates, or if something seriously interesting happens in bitcoin.


Don't worry, it doesn't happen very often.