ETHStacks.xyz is an account management interface for token bound accounts (TBAs). Stack your assets in token bound accounts and manage them all through a simple interface.
ETHStacks.xyz is an account management interface for token bound accounts (TBAs). By leveraging the properties of ERC-6551 tokens, ETHStacks allows you to create token bound accounts and manage them all through a simple interface.
- Manage multiple token bound accounts through a simple interface
- Stack assets within token bound accounts
- Interact with dApps and dynamic NFTs as your token bound accounts
- Take advantage of the security, privacy and capabilities of smart contract wallets
Our goal was to explore use cases leveraging the parent-child relationship of ERC-6551 tokens, improve the existing wallet management user experience and build a future-facing solution for managing assets and inventory of token bound accounts.
ETHStacks.xyz used an NFT Contract factory to deploy and NFT contract for each user. Each NFT token minted represents a Stack
, a ERC-6551 token-bound account that can hold ERC20 and ERC721 tokens, and execute functions on other contracts.
When s Stacks NFT contract is deployed, it also mints the master NFT stack, and deploys an ERC-6551 Account for the master or "root" Stack. All subsequent NFTs minted are "children" NFTs that are owned by this master tokenbound account. Each NFT has it own tokenbound account that hold assets, though it may not be deployed until the user wants to withraw any of the assets. Due to the couterfactual deterministic addresses, asssets can be sent to these addresses prior to deployment, and the user can be confident that only the only of the Stack NFT will ever be able to access them.
Note: contracts for ETH Stacks can be found in a separate repo at https://github.com/maceip/eth-stacks-contracts
While the potential is limitless, example included in this submission include:
- transferring assets between Stacks
- supplying assets to both Compound and Aave to earn yield (ie. "Savings Stacks")
- borrowing assets from Aave (ie. "Loan Stacks")
- using a Stack to send your spam assets
- creating a Stack for high value assets and then sending the Stack to your cold wallet
- adding a joint account holder who has equal access to the Stack's assets
- adding a trusted social recovery address that can access the asset if you lose your private key
- creating a Stack as a stealth address that you want to receive payment, without immediately being linked your main address
- creating Stacks to act as NFT galleries
- recycle your private keys periodically by sending your master Stack to a new wallet address -- only 1 transaction required!
Contracts were deployed using Hardhat via Scaffold.eth, interfacing with already-deployed registry and account implementation contracts for ERC-6551 tokenbound accounts.
The front-end is powered by React, Wagmi, Tailwind, Prisma, Sign-in with Ethereum, ConnectKit and Viem.
User assets are pulled using Airstack endpoints.
Unit tests were written using hardhat and ethers.js.
All of the above was powered by caffeine.
Are you using any Ethereum developer tools for your project? Wagmi, Viem, ConnectKit, Sign In With Ethereum
Which blockchain networks will your project interact with? Polygon, Goerli
Which programming languages are you using in your project? Typescript and Solidity
Are you using any web frameworks for your project? Next.js
Are you using any databases for your project? Railway
Are you using any design tools for your project? Figma
Are there any other specific technologies, libraries, frameworks, or tools you're making heavy usage of don't fit into the categories above?
Contributors:
- Roy Sandoval, Product Designer
- Ryan MacArthur, Smart Contract Developer
- Mark Carey, Full Stack Developer
- Taylan McRae-Yu, Product Manager
Credits: