-
Notifications
You must be signed in to change notification settings - Fork 1
/
MultiSigWalletStorage.sol
44 lines (33 loc) · 1.59 KB
/
MultiSigWalletStorage.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import { IMultiSigWalletTypes } from "./IMultiSigWallet.sol";
/**
* @title MultiSigWallet storage - version 1
* @author CloudWalk Inc.
*/
abstract contract MultiSigWalletStorageV1 is IMultiSigWalletTypes {
/// @dev The array of wallet owners.
address[] internal _owners;
/// @dev The array of wallet transactions.
Transaction[] internal _transactions;
/// @dev The mapping of the ownership status for a given account.
mapping(address => bool) internal _isOwner;
/// @dev The mapping of the number of approvals for a given transaction.
mapping(uint256 => uint256) internal _approvalCount;
/// @dev The mapping of the approval status for a given owner and transaction.
mapping(uint256 => mapping(address => bool)) internal _approvalStatus;
/// @dev The number of approvals required to execute a transaction.
uint16 internal _requiredApprovals;
/// @dev The amount of time after the cooldown period during which a transaction can be executed.
uint120 internal _expirationTime;
/// @dev The amount of time that must elapse after a transaction is submitted before it can be executed.
uint120 internal _cooldownTime;
}
/**
* @title MultiSigWallet storage
*
* When we need to add new storage variables, we create a new version of MultiSigWalletStorage
* e.g. MultiSigWalletStorage<versionNumber>, so at the end it would look like
* "contract MultiSigWalletStorage is MultiSigWalletStorageV1, MultiSigWalletStorageV2".
*/
abstract contract MultiSigWalletStorage is MultiSigWalletStorageV1 {}