What is a Stealth Address?
Learn what a stealth address is: read a detailed explanation and infographics.
While the bitcoin blockchain is created as a transparent network, privacy blockchains are, by design, created to protect the privacy of senders and receivers of transactions. If you look at bitcoin blockchain explorer, you can see a public address of both sender and receiver, an amount that is sent, and the accurate date. If you click on the bitcoin address provided by the link, you can see their current wallet balance, all the previous transactions, and all the previous connections with other senders, and other receivers, until the very first transaction. On privacy blockchains, that’s not possible, and one of the reasons why stealth addresses are used.
The Stealth Address is a one-time public key generated in every transaction on a privacy blockchain, such as Safex Blockchain. Roughly speaking, it protects the receiver's privacy, while ring signatures preserve the sender's privacy.
The Stealth Address is automatically generated by the wallet software from the Recipient’s Safex Address during the transaction creation process. By just looking at the blockchain, a random observer can not tell if Safex Cash is sent from Ivana to Dan, nor if the wallet addresses are connected. So, when Ivana sends Safex Cash to Dan, those coins will not be publicly associated with wallet addresses. Even Dan will not know where he got these coins from. In the case he wants some proof, Ivana's wallet has the ability to prove that a transaction is sent by her, and no one else will see when and even if a transaction was made.
If Dan were a merchant, this feature would be irreplaceable: no one would be able to tell who his customers are, how often his products are sold, how many different customers he has, they are coming back for more products, and so on.
Each Safex address is associated with 2 public and 2 private keys: Public view key, Public spend key, Private view key, Private spend key. When Ivana sends Safex Cash or Safex Token to Dan, the her wallet will use:
- her Private Spend Key to create a one-time stealth (sending) address
- Dan's public view key and public spend key (extracted from Dan’s shared Public Address) + some other data with the idea to generate a unique one-time public key - stealth address for Dan's new output.
The transaction output is created by the Ivana’s wallet and the following steps take place to complete the transaction:
- Ivana’s Wallet: pushes the transaction output to the node it is connected with.
- Node: The Key Image for any inputs used get checked to ensure no Double Spend, and once validated as unspent, the Key Images for any used inputs are then added to the Key Image list maintained by the blockchain, and the transaction is added to the Transaction Pool, awaiting processing. The node relays the transaction info with the network. (The fully detailed process a node undertakes to verify an incoming transaction can be found here.)
- Ivana’s Wallet: Once the requested transaction is accepted by the Node, Ivana’s Wallet Balance adjusts for the entire amount of all inputs used in the transaction
- Node: Transaction gets processed and written to the mined block.
- Ivana’s Wallet: synchronizes by scanning the blockchain and sees the transaction has been processed - adds the transaction to the wallet’s transaction history and adjusts Ivana’s wallet balance accordingly, with any returning outputs (‘change’ leftover from the transaction outputs used) added to Pending Balance for 10 blocks, and then becoming part of the available balance again.
- Dan’s Wallet: synchronizes (by scanning the blockchain) using his private view key. If it detects a valid one-time address associated with his private view key, it adds the incoming transaction to the transaction history and adjusts the wallet balance accordingly.
The wallets belonging to both the Sender (Ivana) and the Recipient (Dan) never need to communicate directly with each other, nor put their public address information into the transaction. A private and trustless system is created with the blockchain acting as an impartial and immutable intermediary, to complete the transaction, via the one-time stealth address system.
Anyone can see the stealth addresses on the blockchain, but only Ivana and Dan know a transaction happened between them.
This is how Safex blockchain explorer looks like:
Here you can see what is displayed for one transaction: Tx hash, Tx public key, stealth addresses, inputs and outputs relating to the transaction (this is not necessarily the exact amount being sent, due to the nature of the Cryptonote outputs protocol), you can prove the sending, among others.