2

Do all transactions that are included in a valid block have to have at least one bitcoin address as part of their outputs (vout)?

I found this to be similar: Are Bitcoin transactions permitted to have no outputs (i.e. all inputs become transaction fee)? although not quite the same.

1 Answer 1

3

No. A notable example of a pubkey script that doesn't typically include addresses or keys is the nulldata standard transaction type. Examples of pubkey scripts that include public keys but not addresses are pay-to-pubkey (P2PK)[1] and "bare" multisig.

Although I'm not absolutely sure, I believe its allowed to have an empty pubkey script. (That is, the compactSize uint that describes the size of the pubKey script is 0x00.)

Note: Bitcoin Core's getrawtransaction RPC, decodetransaction RPC, and other RPCs will display the public keys in P2PK, bare multisig, and redeem scripts as addresses---which can be a bit confusing.

[1] P2PK was formerly used for most coinbase transactions, but that usage has mostly disappeared on mainnet with pooled mining. It's still a standard transaction type and quite common for coinbase transactions on testnet.

3
  • Great answer David, thanks! Do all transactions have to have at least one output amount (value)? Dec 23, 2014 at 18:55
  • 1
    You're welcome. All transactions must have at least one output. All outputs must have a value, but that value can be 0 satoshis. For example, in order to be standard, a nulldata standard transaction must have a value of 0. Dec 23, 2014 at 19:43
  • 1
    +1 for the additional note, been banging my head against the wall due to this for hours. Jun 10, 2015 at 10:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.