Good evening list,
This mail is inspired by Chia's coin IDs. Chia coin IDs consist of:
sha256(parent id, sha256(scriptpubkey), amount)
One consequence of this is that outputs in Chia have a dedicated textual ID. This seems beneficial, separate from any larger technical consequences, and made me wonder if we couldn't replicate that in Bitcoin.
Outputs, a.k.a. outpoints, are commonly represented as
TXID:INDEX. For example,
the first output of transaction
c7dd35a4f81977feac0d235d0e77265cacd362bfc2f0246e384a80d3b0a53a9b is represented as
I find this representation unsatisfying:
- It places outpoints hierarchically beneath transactions, even though after a transaction is confirmed, the outpoint is relatively independent.
- It can't be double-clicked to be easily copied.
- It isn't popular or widely used. I tried using it in searches in a few block explorers, and none of them support it, even though they do support direct searches by transaction ID, block hash, and block height.
I propose a dedicated representation of outputs using Bech32m. Bech32m is especially legible, due to its human-readable part, and is compact, and easy to type and verify. Although having error correction doesn't seem absolutely necessary, it doesn't seem like a downside. The representation uses "coin" as the human-readable part, with the payload being the transaction ID, followed by the 4 byte index.
Anacdotally, I find that many non-expert users I talk to think and talk about Bitcoin as if it were an account-based system, and tend to think in terms of transactions. I wonder if having coin IDs, in the form I propose or in some other form, would help remedy this, similar to how transaction ids, block hashes, and addresses help reify those concepts. The particulars of the representation are of secondary importance.
 blockstream.info, blockchain.com, mempool.space, blockcypher.com, and blockchair.com