This project implements a secure multi-signature wallet for ZKSync Era. The wallet requires a specified number of confirmations from authorized owners before executing transactions.
- Multiple owner management
- Transaction submission and confirmation
- Required number of confirmations for execution
- Transaction execution with value transfer
- Event emission for all important actions
- Reentrancy protection
- Clone the repository
- Install dependencies:
npm install- Copy
.env.exampleto.envand fill in your private key:
cp .env.example .env- Make sure your wallet has enough ETH on ZKSync Era network
- Update the owner addresses and required confirmations in
deploy/deploy.ts - Deploy to ZKSync Era testnet:
npx hardhat deploy-zksync --network zkSyncTestnetThe contract was successfully deployed to ZKSync Era Sepolia testnet:
- Contract Address:
0x3f3EdA70B1732644F5C8EA8c88D7De978ecF791f - Initial Owner:
0xb18109b3b6B8Ba5188cbDdBd2bb6046fa69F605C
You can view the contract on the ZKSync Era Sepolia Explorer: Explorer Link
The contract includes the following main functions:
submitTransaction: Submit a new transaction for approvalconfirmTransaction: Confirm a pending transactionexecuteTransaction: Execute a transaction that has enough confirmationsrevokeConfirmation: Revoke a previous confirmation
The contract includes several security features:
- Reentrancy protection
- Owner validation
- Multiple confirmation requirements
- Transaction existence checks
- Execution status validation
MIT