Introducing Umbra – Privacy Preserving Stealth Payments On The Ethereum Blockchain
May 27, 2020 / Ben DiFrancesco
On March 31st, 2020, Vitalik Buterin tweeted about the need for a stealth address scheme in the Ethereum ecosystem. Less than two months later, we’re excited to announce Umbra, a protocol for simple stealth payments on Ethereum.
Next step in improving ethereum's privacy (in addition to ongoing improvements to https://t.co/f8JT3wFmD4 and the like): some clean easy-to-use stealth-address-like scheme to send coins to an ENS name without publishing to the world that they got coins.— vitalik.eth (@VitalikButerin) April 1, 2020
Umbra was developed by Matt Solomon and Ben DiFrancesco for the HackMoney 2020 virtual hackathon. The MVP was built in 23 days and is available on the Ropsten Testnet. You can play with it by visiting https://ropsten.umbra.cash. (Note: the interface does not render correctly in Firefox at this time. A fix is coming soon!)
To learn more, and to see Umbra in action, you can also check out our hackathon submission video.
How Does Umbra Work?
As a protocol, Umbra defines a simple set of standards, coupled with a singleton smart contract instance, to enable stealth addresses on Ethereum.
With a stealth address, a payer can send Ether or ERC20 tokens to an address controlled by the receiver, but no one except the two parties know who that receiver is.
Image via @IoTeX hackernoon.
On chain, the transaction looks like a simple transfer to an otherwise unused address on the Ethereum network.
View of an Umbra ETH send & withdraw on Etherscan. On chain, stealth address looks like a normal EOA.
Off chain, the sender has used a public key published by the receiver using ENS to generate the new address. By encrypting the data used to generate the address, and announcing it via the Umbra smart contract, the sender can let the receiver know they’ve sent them a payment to a new stealth address. Only the receiver can generate the private key needed to withdraw the funds.
The Umbra interface, available at https://ropsten.umbra.cash
By leveraging Gas Station Network and Uniswap, Umbra enables withdrawers to pay for gas using the tokens they’ve received. This avoids the need to fund stealth addresses with Ether before withdrawing.
To learn more about how Umbra works, checkout the information available on our GitHub repository.
We plan on finalizing version one of the Umbra protocol and getting it to mainnet soon. Our number one priority is security and safety of user funds, which can’t be rushed.
If you’re interested in using Umbra, or integrating it into your DApp or service, sign up below to be notified when Umbra goes live.