Skip to content

Magical Internet Money - EVM chain crypto asset manager, with support for ERC-5564 Stealth Addresses and ERC-6538: Stealth Meta-Address Registry (WIP)

Notifications You must be signed in to change notification settings

bokkypoobah/MagicalInternetMoney

Repository files navigation

Magical Internet Money

Status: Work In Progress

Magical Internet Money is here to help manage your crypto assets.

Features

  • Multiple addresses
  • EVM chain crypto assets:
    • ETH and ERC-20 Fungible Tokens
    • ERC-721 and ERC-1155 Non-Fungible Tokens
    • ENS Names (ERC-721 and ERC-1155)
    • ERC-5564 Stealth Transfer support for ETH, ERC-20 and ERC-721 tokens (testing on Sepolia Testnet). Note that the ERC-1155 tokens are not supported under the current ERC-5564 Stealth Transfers
  • All data is stored in your local browser storage
  • Execute simply from GitHub Pages
  • No additional backend servers required
  • On-chain data is used where possible, supplemented with public data sources
  • Source code can be downloaded and run using e.g. anywhere in the ./docs folder

Requirements

  • Web3 browser, connected to Ethereum Mainnet or the Sepolia Testnet currently

URL

https://bokkypoobah.github.io/MagicalInternetMoney/

Notes

This project is currently heavily under development. Clear your browser's LocalStorage and IndexedDB if this dapp is not operating as expected as the configuration data may have a new format.

TODOs

  • Base ERC-20/721/1155 event log scraping very slow - has a max number of blocks of ~10k
  • Disable unhandled Fungibles e.g. CryptoPunks, MoonCats, CryptoCats
  • Display total and individual Fungible balances

References



Deployments

We are using the contracts listed in Stealth Address - Deployments on the Sepolia network:

Deployed on Sepolia:



Screenshots

Addresses

ERC-20 Fungible Tokens

ERC-20 Fungible Tokens Contract With Approvals

ERC-721 and ERC-1155 Non-Fungible Tokens

ENS ERC-721 and ERC-1155 Non-Fungible Tokens With Expiries

Refresh ERC-721 and ERC-1155 Non-Fungible Tokens Metadata From The Reservoir API

View ERC-721 and ERC-1155 Non-Fungible Tokens

Select ERC-721 and ERC-1155 Non-Fungible Token Contract

ERC-721 Non-Fungible Token Contract With Approvals

ERC-721 and ERC-1155 Non-Fungibles Filter By Owners

ERC-721 and ERC-1155 Non-Fungibles Filter By Collections

ENS Non-Fungibles With Events

ERC-721 and ERC-1155 Non-Fungibles Icon VIew

ERC-20, ERC-721 and ERC-1155 Approvals

Add Stealth Meta-Address To Registry



Old Stuff

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.



Enjoy!

(c) BokkyPooBah / Bok Consulting Pty Ltd 2024. The MIT Licence.