Luke-Jr [ARCHIVE] on Nostr: 📅 Original date posted:2011-12-06 🗒️ Summary of this message: A proposal for ...
📅 Original date posted:2011-12-06
🗒️ Summary of this message: A proposal for a new version numbering system for Bitcoin addresses has been put forward, taking into account usability in base58 encoding. The proposal assigns bits to define network class, network, and data class, with some bits left for aesthetic assignment. The proposal reassigns versions used by Namecoin and testnets, and may affect key export and signature formats. The proposal suggests sparing use of two first-class "networks" besides Bitcoin, with merged mining support as a requirement except for networks with a proven-better proof-of-work.
📝 Original message:sipa made a nice specification for version numbers a while back, that seemed
great at the time. However, there are concerns that it has overlooked a very
important factor: usability in base58 encoding. The version currently chosen
for script-based addresses (2) makes this excessively complicated for end
users-- these addresses, once encoded, may begin with ANY of the following
characters: 2opqrstuvwxyz
Taking this into account, as well as sipa's original goals, I have come up
with the following proposal:
* Bits 128/64 define network class
** 0 = main network
** 64,128 = reserved
** 192 = test network
* Bits 32/16 define network
** 0 = Bitcoin
** 16,32 = reserved
** 48 = OTHER (next octet)
* Bits 8/4/2 define data class
** 0 = Public key hash
** 2 = Public key (raw)
** 4 = Script hash
** 6 = reserved
** 8 = Private key (raw)
** 10 = Signature
** 12 = reserved
** 14 = OTHER (next octet)
* Bit 1 is freely chosen (for aesthetic assignment)
Unlike sipa's proposal, however, I have (intentionally) neglected to consider
the versions currently in use other than the widespread Bitcoin addresses.
That means this reassigns the versions used by Namecoin and testnets, and
probably messes with the (unmerged) key export format and signature formats.
It "wastes" 2 bits (64 and 1) to accomplish aesthetic norms. Bit 64 *could* be
assigned in the future if we ever have a "crunch". By using the high bit (128)
to designate test networks, all testnet addresses will now begin with '2'.
Bitcoin script-hash (aka OP_EVAL) addresses are assigned version 5 (using the
aesthetic +1), which means they always begin with '3'. Signatures are on
version 10 and/or 11, beginning with '5'.
We get two first-class "networks" besides Bitcoin, addresses starting with '7'
and 'E' (pubkey), and '9' and 'F' (script). I propose these should be assigned
sparingly, only when a network has significant adoption-- the only one I would
even *consider* might fit the requirement today is Namecoin. I would also
suggest making merged mining support a requirement except for networks that
have a proven-better proof-of-work (ie, NOT scrypt). Other networks can use
the "other" value (thus beginning with 'L' and 'N') and a second octet (which
can be divided up later).
Thoughts?
Luke
Published at
2023-06-07 02:42:14Event JSON
{
"id": "ab4f551dde219431a9cc9372b42340e6bebb2d0516bbf28f46402b458a300255",
"pubkey": "6ac6a519b554d8ff726a301e3daec0b489f443793778feccc6ea7a536f7354f1",
"created_at": 1686105734,
"kind": 1,
"tags": [
[
"e",
"dafc4bff7fddee669abc41128874a420e7bc18987891f3733e199622fbdd2ca8",
"",
"reply"
],
[
"p",
"a23dbf6c6cc83e14cc3df4e56cc71845f611908084cfe620e83e40c06ccdd3d0"
]
],
"content": "📅 Original date posted:2011-12-06\n🗒️ Summary of this message: A proposal for a new version numbering system for Bitcoin addresses has been put forward, taking into account usability in base58 encoding. The proposal assigns bits to define network class, network, and data class, with some bits left for aesthetic assignment. The proposal reassigns versions used by Namecoin and testnets, and may affect key export and signature formats. The proposal suggests sparing use of two first-class \"networks\" besides Bitcoin, with merged mining support as a requirement except for networks with a proven-better proof-of-work.\n📝 Original message:sipa made a nice specification for version numbers a while back, that seemed \ngreat at the time. However, there are concerns that it has overlooked a very \nimportant factor: usability in base58 encoding. The version currently chosen \nfor script-based addresses (2) makes this excessively complicated for end \nusers-- these addresses, once encoded, may begin with ANY of the following \ncharacters: 2opqrstuvwxyz\n\nTaking this into account, as well as sipa's original goals, I have come up \nwith the following proposal:\n* Bits 128/64 define network class\n** 0 = main network\n** 64,128 = reserved\n** 192 = test network\n* Bits 32/16 define network\n** 0 = Bitcoin\n** 16,32 = reserved\n** 48 = OTHER (next octet)\n* Bits 8/4/2 define data class\n** 0 = Public key hash\n** 2 = Public key (raw)\n** 4 = Script hash\n** 6 = reserved\n** 8 = Private key (raw)\n** 10 = Signature\n** 12 = reserved\n** 14 = OTHER (next octet)\n* Bit 1 is freely chosen (for aesthetic assignment)\n\nUnlike sipa's proposal, however, I have (intentionally) neglected to consider \nthe versions currently in use other than the widespread Bitcoin addresses. \nThat means this reassigns the versions used by Namecoin and testnets, and \nprobably messes with the (unmerged) key export format and signature formats.\n\nIt \"wastes\" 2 bits (64 and 1) to accomplish aesthetic norms. Bit 64 *could* be \nassigned in the future if we ever have a \"crunch\". By using the high bit (128) \nto designate test networks, all testnet addresses will now begin with '2'. \nBitcoin script-hash (aka OP_EVAL) addresses are assigned version 5 (using the \naesthetic +1), which means they always begin with '3'. Signatures are on \nversion 10 and/or 11, beginning with '5'.\n\nWe get two first-class \"networks\" besides Bitcoin, addresses starting with '7' \nand 'E' (pubkey), and '9' and 'F' (script). I propose these should be assigned \nsparingly, only when a network has significant adoption-- the only one I would \neven *consider* might fit the requirement today is Namecoin. I would also \nsuggest making merged mining support a requirement except for networks that \nhave a proven-better proof-of-work (ie, NOT scrypt). Other networks can use \nthe \"other\" value (thus beginning with 'L' and 'N') and a second octet (which \ncan be divided up later).\n\nThoughts?\n\nLuke",
"sig": "b073593a5b5aff5a560ab8d33f25ee83bd488144f128e0637eb420144a5bc9c4558e2d85873082bcd23f50e59b5c2afcb999223fcbc0f5cf22693483ac00079f"
}