I have received a lot of questions about the anonymous transactions and what the difference is between the 'private balance' and the 'public balance' in the Spectre wallet. So here is an overview. I will try to cover different topics of the network and the wallet in the next few weeks.
Anonymous Transactions with ‘Spectre Tokens’ - overviewIntroductionSpectre employs dual-key stealth addresses and traceable ring signatures layered with non-interactive zero knowledge proofs (NIZKP) to create anonymous cryptographic transactions on the Spectrecoin blockchain.
Below you will find a presentation of the anonymous transaction protocol which employs the above mentioned cryptographic techniques. We explain how Spectre introduces a very high level of privacy and anonymity to the network while still preserving the core philosophies of trust-less decentralization, immutability, token fungibility, unforgeability and double-spend prevention.
‘Spectre Token’ (ST)In order to transact anonymously, we have introduced an anonymous token, which we will refer to as ‘Spectre Token’ or ST for the rest of this presentation. ST can be minted / created whilst destroying ‘Spectrecoins’ or XSPEC for the rest of the presentation. The creation of ST outputs a group of STs totalling the same value (minus the transaction fee) of the destroyed XSPEC. That is, the creation of 1 ST will destroy 1 XSPEC. ST takes the form of anonymised spendable outputs on the Spectrecoin blockchain and each ST output has its own private and public key.
In the Spectre wallet the ST you are able to spend will appear in the ‘Private Balance’ field. Your ‘normal’ Spectrecoins will appear in the ‘Public Balance’ field. ST is only spendable by providing a traceable ring signature to prove ownership of ST of the same value. Once STs are created, you can claim a different ST output in a pool of the same value, by providing a traceable ring signature. You provide a keyImage of the private key to prevent double spending.
To increase the pool of ST outputs available to spend using traceable ring signatures, the ST value is broken up into separate STs for each decimal place of the total value. The STs are further broken up into values of 1, 2, 3, 4 and 5. For example 1.7 XSPEC would become 3 STs with values of 1.0, 0.3 and 0.4.
In this example as it appears in the CryptoID block explorer three inputs of 4.0 XSPEC (ST) have been ‘converted’ into 4 outputs of 10.11, 1.0, 0.5, 0.3 and 0.05 but it is not possible to assess which output was spent.
https://chainz.cryptoid.info/xspec/tx.dws?53be1457a5ee4c64ba2b73fa8a053f99e31e57f3fe374339a00adab41b1514d4.htmThe same data can be retrieved inside the wallet in the ‘tool’ and ‘chain data’ as below:
You can also use the command ‘anoninfo’ in the debug console:
The command ‘anonoutputs’ will give you the ST balance you own:
We will explain in a later section how to successfully make an anonymous transaction and also elude to the limitations and what you can do to make the system work better.
Think of the transfer of anonymous tokens (ST) like this; when spending ST, a list is obtained of all the available (and mature) anonymous outputs in the system, then STs that don’t have enough same value outputs in the system are removed, then the smallest ST or the least number of smallest STs that can cover the amount + transaction fee are chosen.
Dual-key Stealth AddressesA Dual-key stealth address is one of the cornerstones of most anonymous cryptocurrencies currently available. The usage allows the recipient to remain anonymous, even after sharing his stealth address publicly.
Once the stealth address has been revealed to the payer(s), it will enable the payee to receive infinite unlinkable payments. That means that each payment to a Stealth address computes a new unused normal address into which the funds will be received. Any observer / attacker will be unable to link the two addresses. The original visionaries were the creators of Bytecoin. However, the information they provide may not always apply to Spectrecoin / ‘Spectre Tokens’. If you wish to understand more about stealth addresses follow the below link:
http://sx.dyne.org/stealth.htmlAddress EncodingStealth addresses are generated in a different way than normal bitcoin addresses, but they have a similar structure. A dual-key stealth address contains a lot more information than a normal Bitcoin address because it requires the sender of a transaction to know the public scan key and the public spend key which is not stored on the blockchain. All data required to perform such transaction is derivable from the stealth address itself.
Ring signaturesThe ring signatures are a crucial part to anonymize the sender of a transaction. As previously mentioned, all STs have their own public and private key. The Ring Signature consists of the public key of the token being spent, plus the public keys from 3 to 200 other tokens of the same value as the token being spent. The nature of ring signatures makes it impossible to discover which member token in the ring signature is being spent, and transactions are no longer traceable.
Spending STThere are two ways in which ST can be spent:
STs can be sent as STs. When sent as tokens, new tokens are minted for the recipient to the value of the input tokens minus the transaction fee. This will enter the ‘private balance’ in the Spectre wallet.
STs can be redeemed as XSPEC. When redeemed as XSPEC, new XSPEC is created to the value of the input ST minus the transaction fee. In both cases the input tokens become unspendable.
In order to spend ST, we use ring signatures to sign the transaction. The scheme consists of three functions, generateRingSignature, generateKeyImage, verifyRingSignature.
Each ST consist of a unique private key and public key. What happens when you spend your ST? When doing a normal transaction (like in Bitcoin), you would prove that you received an amount of coins by pointing to the transaction that got you the coins in the first place. That’s signed with the private key to prove you hold the keys to the address. For an anonymous transaction that procedure is different: we do not point to the previous transactions. Rather we take a pool of anonymous token (public keys of other people’s anonymous tokens) that have the same value as the token we are trying to spend and then we drop our public key. We then say “we own one of the public keys in this pool of tokens”, or in cryptographical terms: a ring signature.
ST TO XSPEC1. Go to the Send section of your wallet and click ‘Advanced Options’ and select ‘Private’ to ‘Public’ as the send type:
2. Paste the stealth address of the recipient (if you are the recipient then paste your own stealth address) in the ‘pay to’ field. This part may appear counter-intuitive but you MUST enter a stealth address to create XSPEC!
3. Enter a send amount of 100 (for example) If you don't have 100 try 10, if u don't have 10 try 1. If necessary refer to the ‘Chain Data’ section of your wallet to determine available input/output amounts (this will be less necessary as the network grows).
4. Click "Suggest Ring Size"
5. Click "Send"
6. You will receive the XSPEC in a new XSPEC address generated in your wallet.
Reminder: The anon outputs need to be 10 blocks deep before they can be spent.
If you wish to send XSPEC to ST / ST to ST then just choose the appropriate options in the wallet and remember ST = ‘Private Balance’ and XSPEC = ‘Public Balance’
I would suggest that all users who wish to assist in making anonymous transactions possible keep between 10-20% of their total balance as ‘Private Balance’. This will make it possible to transaction anonymously.