Coin IDs
cryptocurrency

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 c7dd35a4f81977feac0d235d0e77265cacd362bfc2f0246e384a80d3b0a53a9b:0.

I find this representation unsatisfying:

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.

For example:

c7dd35a4f81977feac0d235d0e77265cacd362bfc2f0246e384a80d3b0a53a9b:A0

Becomes:

coin1clwntf8cr9mlatqdydwsuaextjkdxc4lctczgm3cf2qd8v9982dsqqqqqqqenjt7

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.

Best regards,
Casey Rodarmor

[0] blockstream.info, blockchain.com, mempool.space, blockcypher.com, and blockchair.com