Magical Internet Money
An implementation of ERC-5564: Stealth Addresses and ERC-6538: Stealth Meta-Address Registry (using address
instead of bytes
).
Test it at https://bokkypoobah.github.io/MagicalInternetMoney/ (WIP) connected to the Ethereum Sepolia testnet.
How The ERC-5564: Stealth Addresses Protocol Works
- Alice wants to pay Bob in ETH/ERC-20/ERC-721 tokens
- Bob generates a Stealth Meta-Address and provides this to Alice
- Alice uses Bob's Stealth Meta-Address to compute a random Stealth Address that can be accessed only by Bob
- Alice transfers the tokens to this address and announces the transfers in the ERC-5564: Stealth Address Announcer contract
- Bob can access the private keys to their computed Stealth Addresses, using information included in the announcements
- The ERC-6538: Stealth Meta-Address Registry allows any account to publish their associated Stealth Meta-Addresses
How This Dapp Works
This dapp:
- Allows Bob's web3 attached account to generate a unique Stealth Meta-Address for each unique associated phrase
- Allows Alice to compute a random Stealth Address using Bob's Stealth Meta-Address
- Allows Alice to then execute the transfer to Bob's Stealth Address and announce the transfer to the Announcer
- Retrieve all event logs published to the Announcer
- Retrieves all event logs published to the Registry
Sample Screens
Generate And Register New Stealth Meta-Address
Generate New Stealth Meta-Address - Initial Addresses
Click [+] from the Addresses menu to access the Stealth Meta-Address generation screen.
Generate New Stealth Meta-Address - Generate And Sign
Click [Generate] to generate a new Stealth Meta-Address, then sign the phrase with your web3 attached account.
Generate New Stealth Meta-Address - After Generation
Click [Add] to add your newly generated Stealth Meta-Address to your addresses.
Generate New Stealth Meta-Address - Add To Registry
Click [Add/Update] to add your newly generated Stealth Meta-Address to the Stealth Address Registry, then sign and send the web3 transaction.
Generate New Stealth Meta-Address - Addresses
Generate New Stealth Meta-Address - Sync
Click [Sync] to retrieve events from the blockchains.
Generate New Stealth Meta-Address - Registry
The newly registered Stealth Meta-Address.
Stealth Transfer
Stealth Transfer - To Stealth Meta-Address In Registry
Click on the [>] button to send ETH/ERC-20/ERC-721 tokens to that Stealth Meta-Address.
Stealth Transfer - Specify Transfer Amount
Stealth Transfer - Send Transaction
Stealth Transfer - Sync
Stealth Transfer - New Stealth Transfer
Stealth Transfer - New Stealth Transfer Details
Stealth Transfer - Sign Message To View Private Key
Stealth Transfer - Private Key Entered In Web3 Wallet
0.000012345 ETH
rounded to 0 in the web3 wallet.
References
- ERC-5564: Stealth Addresses
- ERC-6538: Stealth Meta-Address Registry
- https://github.com/nerolation/stealth-wallet
- https://github.com/kassandraoftroy/erc5564-contracts
- An incomplete guide to stealth addresses
- ERC-5564 Stealth Addresses
- EIP-5564: Improving Privacy on Ethereum through Stealth Address Wallets
- Ethereum stealth addresses (ERC-5564) library
- https://github.com/paulmillr/noble-curves
Deployments
- ERC5564Announcer.sol v0.8.1 on Sepolia 0xFe6335f5dc5a469e74fB6a9FDAe116bFD5346365
- ERC5564Registry.sol v0.8.1 on Sepolia 0x5F8ac9e3B2DD28cA2c9bc7A992Ce36c3C4929Cde
- MagicInternetMoney.sol v0.8.2 on Sepolia 0x5B84e1706CD6Ae0d79486Dd6F30503B4330742E1
Enjoy!
(c) BokkyPooBah / Bok Consulting Pty Ltd 2024. The MIT Licence.