💵
Meta-Multi-Sig Wallet
An off-chain signature-based multi-sig wallet
Author: Amogh Jahagirdar
Source code: https://github.com/scaffold-eth/scaffold-eth-examples/tree/meta-multi-sig
Intended audience: Intermediate
Topics: Scaffold-eth basics, multi-sig wallets
git clone https://github.com/scaffold-eth/scaffold-eth-examples.git meta-multi-sig
cd meta-multi-sig
git checkout meta-multi-sig
yarn install
yarn start
in a second terminal window:
cd scaffold-eth
yarn chain
🔏 Edit your smart contract
MetaMultiSigWallet.sol
in packages/hardhat/contracts
📝 Edit your frontend
App.jsx
in packages/react-app/src
💼 Edit your deployment script
deploy.js
in packages/hardhat/scripts
in a third terminal window:
yarn backend
🔧 Configure your deployment in
packages/hardhat/scripts/deploy.js
Edit the chainid, your owner addresses, and the number of signatures required:
in a fourth terminal deploy with your frontend address as one of the owners:
yarn deploy
Use the faucet wallet to send your multi-sig contract some funds:
To add new owners, use the "Owners" tab:
This will take you to a populated transaction create page:
Create & sign the new transaction:
You will see the new transaction in the pool (this is all off-chain):
Click on the ellipsses button [...] to read the details of the transaction
Give your account some gas at the faucet and execute the transaction
The transction will appear as "executed" on the front page:
Create a transaction to send some funds to your frontend account:
This time we will need a second signature:
(You'll notice you don't need ⛽️gas to sign transactions.)
Execute the transction to transfer the funds:
(You might need to trigger a new block by sending yourself some faucet funds or something. HartHat blocks only get mined when there is a transaction.)
💼 Edit your deployment script
deploy.js
in packages/hardhat/scripts
🔏 Edit your contracts form,
MetaMultiSigWallet.sol
in packages/hardhat/contracts
📝 Edit your frontend in
packages/react-app/src/views
🐟 Create custom signer roles for your Wallet
You may not want every signer to create new transfers, only allow them to sign existing transactions or a mega-admin role who will be able to veto any transaction.
😎 Integrate this MultiSig wallet into other branches like nifty-ink
Make a MultiSig wallet to store your precious doodle-NFTs!?
🛰 Ready to deploy to a testnet?
Change thedefaultNetwork
inpackages/hardhat/hardhat.config.js
🔐 Generate a deploy account with
yarn generate
👛 View your deployer address using
yarn account
(You'll need to fund this account. Hint: use an instant wallet to fund your account via QR code)👨🎤 Deploy your wallet:
yarn deploy
✏️ Edit your frontendApp.jsx
inpackages/react-app/src
to change thetargetNetwork
to wherever you deployed your contract:
You should see the correct network in the frontend:
Also change the poolServerUrl constant to your deployed backend (via yarn backend)
Alternatively you can use the pool server url in the above screenshot
🔶 Infura
⚙️ build and upload your frontend and share the url with your friends...
# build it:
yarn build
# upload it:
yarn surge
OR
yarn s3
OR
yarn ipfs
👩❤️👨 Share your public url with friends, add signers and send some tasty ETH to a few lucky ones 😉!!
Last modified 1yr ago