Here are some details that need to be decided before the new currencies proposal can be implemented.
Units
First the new currency units. We currently have ‘S’ for NuShares and ‘B’ for US-NBT (formerly NuBit). I suggest we use the obvious ‘C’ for CN-NBT, ‘E’ for EU-NBT and ‘X’ for X-NBT.
Address versions
Then there are the version numbers that determine the first letter of the addresses. We need 6 versions for each currency: public keys, scripts (multisig addresses for example), and private keys, for the main network and for testnet.
Main network
Current versions on the main network:
NuShares:
- pubkey: 63, S
- script: 64, S or T
- privkey: 149, N or P
US-NBT:
- pubkey: 25, B
- script: 26, B
- privkey: 150, P
Proposal for new currencies:
CN-NBT:
- pubkey: 28, C
- script: 29, C or D
- privkey: 151, P
EU-NBT:
- pubkey: 33, E
- script: 34, E or F
- privkey: 152, P
X-NBT:
- pubkey: 75, X
- script: 76, X
- privkey: 153, P
Testnet
NuShares:
- pubkey: 125, s
- script: 126, s or t
- privkey: 223, Z
US-NBT:
- pubkey: 85, b
- script: 86, b or c
- privkey: 224, a
CN-NBT:
- pubkey: 87, c
- script: 88, c
- privkey: 225, a
EU-NBT:
- pubkey: 92, e
- script: 93, e
- privkey: 226, a
X-NBT:
- pubkey: 137, x
- script: 138, x
- privkey: 227, a
Protocol switch percentage
Also needs to be decided the percentage of votes that will trigger the protocol switch 2 weeks later. I suggest 60% like on B&C.
Note that if there’s a conflict between shareholders the majority is enough to make the protocol switch (they would have to actively work on that though).
Default fees
The new currencies need a default fee used when a shareholder doesn’t specify one in his vote. The current default fees are 1 NSR and 0.01 NBT.
I suggest we use 0.01 as the default fee. It will also be the default fee for future currencies.
Allowed future currency units
It was decided to allow unknown currencies at the protocol level to make adding new currencies easier (it would only require a new client for the users who want to use them).
The protocol currently encodes the unit in an 8 bit number, so there are 256 possible values. In the proposal I suggested we use only printable ASCII caracters to make things easier. But I now think it would be better to allow all the 256 possible units and should not take much more time. Future clients may use a mapping of names instead of single characters. We could already start now and use for example “US” as US-NBT unit in addition to ‘B’, but that’s out of the perimeter of my proposal.
For this release the client will display ‘?’ whenever it needs to mention an unknown unit.