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

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b1f72bc · Aug 8, 2024
Jul 4, 2024
Jul 4, 2024
Aug 8, 2024
Jul 30, 2024
Feb 23, 2024
Dec 24, 2023
Jul 4, 2024
Jan 18, 2024
Dec 25, 2023
Jul 30, 2024
Jul 4, 2024
Dec 26, 2023
Dec 26, 2023
Jul 4, 2024

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.