<p>No.  A notable example of a pubkey script that doesn't typically include addresses or keys is the <a href="https://bitcoin.org/en/developer-guide#null-data" rel="nofollow">nulldata standard transaction type</a>.  Examples of pubkey scripts that include public keys but not addresses are <a href="https://bitcoin.org/en/developer-guide#null-data" rel="nofollow">pay-to-pubkey (P2PK)</a>[1] and <a href="https://bitcoin.org/en/developer-guide#null-data" rel="nofollow">"bare" multisig</a>.</p>

<p>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.)</p>

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

<p>[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.</p>

CC BY-SA 3.0
2014-12-23T18:55:17.343Z
Great answer David, thanks! Do all transactions have to have at least one output amount (value)?
Doug Peters
CC BY-SA 3.0
2014-12-23T19:43:16.433Z
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.
David A. Harding
CC BY-SA 3.0
2015-06-10T10:35:50.300Z
+1 for the additional note, been banging my head against the wall due to this for hours.
Priidu Neemre
CC BY-SA 3.0
2014-12-23T18:46:08.283Z
2014-12-23T18:46:08.283Z
David A. Harding
<p>Do all transactions that are included in a valid block have to have at least one bitcoin address as part of their outputs (vout)?</p>

<p>I found this to be similar: <a href="https://bitcoin.stackexchange.com/questions/12451/are-bitcoin-transactions-permitted-to-have-no-outputs-i-e-all-inputs-become-tr">Are Bitcoin transactions permitted to have no outputs (i.e. all inputs become transaction fee)?</a> although not quite the same.</p>

<transactions><address><output>
Do all transactions have at least one output that contains at least one bitcoin address
Doug Peters
# Do all transactions have at least one output that contains at least one bitcoin address

(Asked by: username_0 on 2014-12-23)

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)?](https://bitcoin.stackexchange.com/questions/12451/are-bitcoin-transactions-permitted-to-have-no-outputs-i-e-all-inputs-become-tr) although not quite the same.

**Tags:** transactions, address, output


---

## 1 answers

### Answer by username_1 on 2014-12-23. Score: 3 | Accepted answer

No. A notable example of a pubkey script that doesn't typically include addresses or keys is the [nulldata standard transaction type](https://bitcoin.org/en/developer-guide#null-data). Examples of pubkey scripts that include public keys but not addresses are [pay-to-pubkey (P2PK)](https://bitcoin.org/en/developer-guide#null-data)[1] and ["bare" multisig](https://bitcoin.org/en/developer-guide#null-data).

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.

> **Comments:**
> **username_0**: Great answer David, thanks! Do all transactions have to have at least one output amount (value)?  
> **username_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.  
> **username_2**: +1 for the additional note, been banging my head against the wall due to this for hours.  

---

