-
Install dependencies:
npm install
-
Configure environment:
cp .env.example .env # Edit .env with your values -
Update deployment script: Edit
scripts/deploy.jsand replace the placeholder addresses with your actual wallet addresses:const owners = [ "0xYourAddress1", // Replace with actual addresses "0xYourAddress2", // Replace with actual addresses "0xYourAddress3" // Replace with actual addresses ];
-
Deploy to Sepolia:
npm run deploy:sepolia
PRIVATE_KEY: Your wallet private key (deployer account)SEPOLIA_RPC_URL: Sepolia RPC endpoint (get from Infura/Alchemy)ETHERSCAN_API_KEY: For contract verification
The deployment includes three contracts:
- Factory: Creates contract instances
- MultiSigWallet: Core multisig (requires N of M signatures)
- MultiSigWalletWithDailyLimit: Multisig + daily withdrawal limit
- Factory:
0xb56E6f244000C403490De104e9F0789c0D446Db2 - MultiSigWallet:
0x9f39A39631b2E49B59A614D37465431890612b5a - MultiSigWalletWithDailyLimit:
0xbdb8ed781577405f3FaEa59b33bA2fb05179ee61
Configuration:
- Owners: 3 addresses (RE1a, RE2, RE3)
- Required confirmations: 2 of 3
- Daily limit: 1.0 ETH
After deployment:
- Send test ETH to the wallet address
- Create a transaction using
submitTransaction() - Other owners confirm with
confirmTransaction() - Transaction executes when threshold is reached
npx hardhat verify --network sepolia <CONTRACT_ADDRESS> <CONSTRUCTOR_ARGS>