Nicknamed Accounts & BitCash Addresses

Image for post
Image for post

One of the first features introduced by the BitCash team was nicknamed accounts. The hopes were with named accounts, there would be no more fiddling with messy blockchain addresses designed for geeks and crypto enthusiasts, but instead convenient nicknames that made it easy for anyone to use and transact with.

You might be curious of how exactly the nicknames become attached to your blockchain address. Let’s take a deep, technical dive into nicknames and Christian’s unique approach to the different BitCash address types.

Nicknames

A special type of transaction occurs when a nickname is created. Consequently, there is a flag which indicates if a transaction is a nickname transaction or a regular transaction. If it is, indeed, a nickname transaction, then it stores the public key, the nickname, and a signature inside of the transaction. This will link the public key and the nickname together. The signature ensures that only the owner of the private key which belongs to the public key can create such a transaction.

To ensure the safety and security of the nicknames, Christian implemented stealth addresses.

Stealth addresses (b addresses)

Although BitCash is a direct fork of Bitcoin v0.16, Christian has managed to implement a key feature of Monero, stealth addresses. Stealth addresses are an incredibly powerful tool because of the layer of anonymity that they provide. They protect users from having their account balance publicly viewable on a blockchain by generating one-time addresses. With stealth addresses, another user can not see your transactions, nor how much BitCash you hold. Full stealth addresses are utilized in the desktop wallet, work with the nickname feature, and all have a b prefix. Every time a user sends coins to another BitCash address, the coins will end up on another random stealth address. Also, every time you use the same nickname, the coins will end up on a new random receiver address.

Monero computes the destination key from the sender as follows:

P=Hs(rA)G+B

The receiver can compute the one-time public key as follows:

P’=Hs(aR)G+bG

The receiver can compute the one-time private key as follows:

X=Hs(aR)+b

BitCash initially had a master public key and a master private key, but we removed the master private key with the hard fork held on 23 July 2019. Since that time BitCash uses the public key from the transaction of block 1 of the Bitcoin blockchain as dummy public key to replace the master public key with the assumption that nobody knows the private key for this public key. Also, we only use one public and private key for the addresses. So only A and a is used. B and b is not used. The master public key is known to the public, but master private key is not known by anyone.

The sender calculates a shared secret through a Diffie Hellman exchange with the receiver as follows:

S=rA

The receiver can calculate the same shared secret as follows:

S=aR

This shared secret is used by the sender to encrypt the random data r with AES encryption. This encrypted version of r can later be decrypted by the receiver with the shared secret as password.

The sender computes the destination key as follows:

P=Hs(rM)G+A

The receiver can compute the one-time public key as follows:

P’=Hs(rM)G+aG

The receiver can compute the one-time private key as follows:

X=Hs(rM)+a

The owner of the Master Private Key can compute the one-time public key as follows:

P’=Hs(mR)G+A

BitCash also stores 2 bytes of the real public key of the receiver in without any encryption. This enables BitCash to find potential matching transactions much faster. Before this was introduced, the stealth addresses were very slow. The sender of a transaction can reveal r to prove that they sent the transaction and to enable any person to check decrypt the stealth address and the description line.

Addresses With Viewkey (X addresses)

BitCash uses addresses with a viewkey for the web wallet and the mobile wallets and they use prefix X. The web server can store the view key to recognize incoming transactions. The web server is, however, not able to spend any coins with only the view key.

These addresses are longer and contain two full public keys, like the Monero addresses. V is the public viewkey and v is the private view key. If the addresses with viewkey are used the shared secret S is calculated with the viewkey as follows:

The sender calculates a shared secret through a Diffie Hellman exchange with the receiver as follows:

S=vA

The receiver can calculate the same shared secret as follows:

S=aV

This enables the receiver who knows the viewkey private key V to decrypt the encrypted random private key r.

Then the real address can be decrypted:

P=Hs(rM)G+A

Non Privacy Addresses (L addresses)

BitCash also provides a special address format for non privacy transactions. These addresses are mainly intended for the exchanges, but are also used for the PeerQ addresses and begin with the prefix L. These addresses are faster to compute than the stealth addresses. If a wallet contains thousands of addresses, it is preferable to use non privacy addresses.

For the non privacy address, the shared secret S is calculated as usual. But it is then only used to encrypt the description line, but not to encrypt the real address.

Conclusion

For more information on the specifics of stealth addresses please take a look at the Monero whitepaper.

Hopefully you find this information helpful regarding how you store your BitCash. If you have any questions please join us in Discord using the link below!

BitCash Official Links:

Website — https://www.choosebitcash.com/ and https://www.peerq.com/

Discord — https://discordapp.com/invite/7P4YcXU

Twitter — https://twitter.com/ChooseBitCash

Bitcointalk ANN — https://bitcointalk.org/index.php?topic=5106123.0

Telegram — https://t.me/chooseBitCash

Reddit — https://www.reddit.com/r/BitCashCoin/

BitCash combines the power of block-chain with the features of banking to create the world's most useable cryptocurrency.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store