An Arbitrum Stylus version implementation of Solidity MultiSig wallet.
The wallet owners can
Here is the interface for MultiSig wallet.
1interface IMultiSig {
2 function numConfirmationsRequired() external view returns (uint256);
3
4 function deposit() external payable;
5
6 function submitTransaction(address to, uint256 value, bytes calldata data) external;
7
8 function initialize(address[] memory owners, uint256 num_confirmations_required) external;
9
10 function executeTransaction(uint256 tx_index) external;
11
12 function confirmTransaction(uint256 tx_index) external;
13
14 function revokeConfirmation(uint256 tx_index) external;
15
16 function isOwner(address check_address) external view returns (bool);
17
18 function getTransactionCount() external view returns (uint256);
19
20 error AlreadyInitialized();
21
22 error ZeroOwners();
23
24 error InvaildConfirmationNumber();
25
26 error InvalidOwner();
27
28 error OwnerNotUnique();
29
30 error NotOwner();
31
32 error TxDoesNotExist();
33
34 error TxAlreadyExecuted();
35
36 error TxAlreadyConfirmed();
37
38 error TxNotConfirmed();
39
40 error ConfirmationNumberNotEnough();
41
42 error ExecuteFailed();
43}1interface IMultiSig {
2 function numConfirmationsRequired() external view returns (uint256);
3
4 function deposit() external payable;
5
6 function submitTransaction(address to, uint256 value, bytes calldata data) external;
7
8 function initialize(address[] memory owners, uint256 num_confirmations_required) external;
9
10 function executeTransaction(uint256 tx_index) external;
11
12 function confirmTransaction(uint256 tx_index) external;
13
14 function revokeConfirmation(uint256 tx_index) external;
15
16 function isOwner(address check_address) external view returns (bool);
17
18 function getTransactionCount() external view returns (uint256);
19
20 error AlreadyInitialized();
21
22 error ZeroOwners();
23
24 error InvaildConfirmationNumber();
25
26 error InvalidOwner();
27
28 error OwnerNotUnique();
29
30 error NotOwner();
31
32 error TxDoesNotExist();
33
34 error TxAlreadyExecuted();
35
36 error TxAlreadyConfirmed();
37
38 error TxNotConfirmed();
39
40 error ConfirmationNumberNotEnough();
41
42 error ExecuteFailed();
43}Example implementation of a MultiSig Wallet contract written in Rust.
1Loading...1Loading...1Loading...1Loading...1Loading...1Loading...