The "address"
field in the Bitcoin Core RPC output is present for all transaction outputs for which a corresponding address exists. In the first 10000 blocks there are lots of pay-to-public-key (P2PK) outputs, which while possible to construct internally in wallet software, don’t have a corresponding address format that allows instructing a payer to create such an output.
The existing address types in Bitcoin today are:
- pay-to-pubkey-hash (P2PKH)
- pay-to-script-hash (P2SH)
- native witness addresses, for:
- pay-to-witness-public-key-hash (P2WPKH)
- pay-to-witness-script-hash (P2WSH)
- pay-to-taproot (P2TR)
Whenever you inspect any output whose scriptPubKey matches any of these address types, the RPC output will report the address. But scriptPubKeys are free form byte arrays, and there is no strict requirement that they follow the structure encoded by any of the defined address types.
The "addresses"
is older, and was deprecated and removed. Its purpose was listing the individual participants in bare multisig outputs. Such outputs predate the introduction of P2SH in 2012, and were never widespread. Today they’re effectively unusable.
For documentation of Bitcoin Core’s RPC, see the help
RPC command, or https://bitcoincore.org. The https://bitcoin.org website is unrelated to Bitcoin Core, and its information is often outdated.
The "desc"
field reports information about the output in “output descriptor” notation. This format is described in BIP380 and the following BIPs, and Bitcoin Core documentation about it can be found in its doc directory: https://github.com/bitcoin/bitcoin/tree/master/doc/descriptors.md. And indeed, pk()
stands for public key, indicating a P2PK output with the argument as public key.
The "address"
field in the Bitcoin Core RPC output is present for all transaction outputs for which a corresponding address exists. In the first 10000 blocks there are lots of pay-to-public-key (P2PK) outputs, which while possible to construct internally in wallet software, don’t have a corresponding address format that allows instructing a payer to create such an output.
The existing address types in Bitcoin today are:
- pay-to-pubkey-hash (P2PKH)
- pay-to-script-hash (P2SH)
- native witness addresses, for:
- pay-to-witness-public-key-hash (P2WPKH)
- pay-to-witness-script-hash (P2WSH)
- pay-to-taproot (P2TR)
Whenever you inspect any output whose scriptPubKey matches any of these address types, the RPC output will report the address. But scriptPubKeys are free form byte arrays, and there is no strict requirement that they follow the structure encoded by any of the defined address types.
The "addresses"
is older, and was deprecated and removed. Its purpose was listing the individual participants in bare multisig outputs. Such outputs predate the introduction of P2SH in 2012, and were never widespread. Today they’re effectively unusable.
For documentation of Bitcoin Core’s RPC, see the help
RPC command, or https://bitcoincore.org. The https://bitcoin.org website is unrelated to Bitcoin Core, and its information is often outdated.
The "desc"
field reports information about the output in “output descriptor” notation. This format is described in BIP380 and the following BIPs, and Bitcoin Core documentation about it can be found in its doc directory: https://github.com/bitcoin/bitcoin/tree/master/doc/descriptors.md. And indeed, pk()
stands for public key, indicating a P2PK output with the argument as public key.