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.

HackMoney 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.

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.

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

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.

What’s Next?

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.