Skip to content

Repository files navigation

🏗 scaffold-eth | 🏰 BuidlGuidl

🚩 Challenge 5: 👛 Multisig Wallet

🏃‍♀️ Quick Start

required: Node plus Yarn and Git

git clone https://github.com/scaffold-eth/scaffold-eth-typescript-challenges challenge-5-multi-sig

cd challenge-5-multi-sig

git checkout challenge-5-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-ts/contracts

📝 Edit your frontend App.tsx in packages/vite-app-ts/src/app

💼 Edit your deployment script 01_deploy_meta_multi_sig_wallet_contract.ts in packages/hardhat-ts/deploy

📱 Open http://localhost:3000 to see the app

in a third terminal window:

yarn backend

🔧 Configure your deployment in packages/hardhat-ts/deploy/01_deploy_meta_multi_sig_wallet_contract.ts

Edit the chainid, your owner addresses, and the number of signatures required:

image

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:

image

To add new owners, use the "Owners" tab:

image

This will take you to a populated transaction create page:

image

Create & sign the new transaction:

image

You will see the new transaction in the pool (this is all off-chain):

image

Click on the ellipsses button [...] to read the details of the transaction

image

Give your account some gas at the faucet and execute the transaction

The transction will appear as "executed" on the front page:

image

Create a transaction to send some funds to your frontend account:

image

This time we will need a second signature:

image

Sign the transacton with enough owners: image

(You'll notice you don't need ⛽️gas to sign transactions.)

Execute the transction to transfer the funds:

image

(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 01_deploy_meta_multi_sig_wallet_contract.ts in packages/hardhat-ts/deploy

🔏 Edit your contracts form, MetaMultiSigWallet.sol in packages/hardhat-ts/contracts

📝 Edit your frontend in packages/vite-app-ts/src/app/main

⚔️ Side Quests

🐟 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!?


📡 Deploy the wallet!

🛰 Ready to deploy to a testnet?

📡 Edit the defaultNetwork to your choice of public EVM networks in packages/hardhat-ts/hardhat.config.ts

🔶 Infura

🚔 Traffic to your url might break the Infura rate limit, edit your key: constants.ts in packages/vite-app-ts/src/models/constants

👩‍🚀 You will want to run yarn account to see if you have a deployer address

🔐 If you don't have one, run yarn generate to create a mnemonic and save it locally for deploying.

🛰 Use an instantwallet.io to fund your deployer address (run yarn account again to view balances)

📡 Edit the export const targetNetworkInfo: TNetworkInfo = NETWORKS.localhost; to your choice of public EVM networks in packages/vite-app-ts/src/config/providersConfig.ts

🚀 Run yarn deploy to deploy to your public network of choice (😅 wherever you can get ⛽️ gas)

🔬 Inspect the block explorer for the network you deployed to... make sure your contract is there.

👮 Your contract source needs to be verified... (source code publicly available on the block explorer)


⛳️ Checkpoint 8: 📜 Contract Verification

Update the api-key in packages/hardhat-ts/package.json file. You can get your key here.

Screen Shot 2021-11-30 at 10 21 01 AM

Now you are ready to run the yarn verify --network your_network command to verify your contracts on etherscan 🛰


🛳 Ship the app!

⚙️ 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

image

👩‍❤️‍👨 Share your public url with friends, add signers and send some tasty ETH to a few lucky ones 😉!!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages