@openzeppelin/contracts-upgradeable
Version:
Secure Smart Contract library for Solidity
366 lines (365 loc) • 19.6 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "VestingWalletUpgradeable",
"sourceName": "contracts/finance/VestingWalletUpgradeable.sol",
"abi": [
{
"inputs": [],
"name": "FailedCall",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "InsufficientBalance",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "SafeERC20FailedOperation",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "ERC20Released",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "EtherReleased",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"inputs": [],
"name": "duration",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "end",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "beneficiary",
"type": "address"
},
{
"internalType": "uint64",
"name": "startTimestamp",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "durationSeconds",
"type": "uint64"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "releasable",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "releasable",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "release",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "release",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "released",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "released",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "start",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "timestamp",
"type": "uint64"
}
],
"name": "vestedAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint64",
"name": "timestamp",
"type": "uint64"
}
],
"name": "vestedAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x6080604052348015600e575f5ffd5b50610bdb8061001c5f395ff3fe6080604052600436106100e7575f3560e01c80639613252111610087578063be9a655511610057578063be9a655514610249578063efbe1c1c1461025d578063f2fde38b14610271578063fbccedae14610290575f5ffd5b806396132521146101cc5780639852595c146101ec578063989a83661461020b578063a3f8eace1461022a575f5ffd5b8063715018a6116100c2578063715018a614610159578063810ec23b1461016d57806386d1a69f1461018c5780638da5cb5b146101a0575f5ffd5b80630a17b06b146100f25780630fb5a6b4146101245780631916558714610138575f5ffd5b366100ee57005b5f5ffd5b3480156100fd575f5ffd5b5061011161010c366004610a45565b6102a4565b6040519081526020015b60405180910390f35b34801561012f575f5ffd5b506101116102d3565b348015610143575f5ffd5b50610157610152366004610a74565b610309565b005b348015610164575f5ffd5b506101576103a9565b348015610178575f5ffd5b50610111610187366004610a8d565b6103bc565b348015610197575f5ffd5b50610157610440565b3480156101ab575f5ffd5b506101b46104b8565b6040516001600160a01b03909116815260200161011b565b3480156101d7575f5ffd5b505f516020610b865f395f51905f5254610111565b3480156101f7575f5ffd5b50610111610206366004610a74565b6104e6565b348015610216575f5ffd5b50610157610225366004610abe565b61051f565b348015610235575f5ffd5b50610111610244366004610a74565b61061c565b348015610254575f5ffd5b5061011161063a565b348015610268575f5ffd5b50610111610669565b34801561027c575f5ffd5b5061015761028b366004610a74565b610689565b34801561029b575f5ffd5b506101116106cb565b5f6102cd6102bd5f516020610b865f395f51905f525490565b6102c79047610b12565b836106f4565b92915050565b7fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa390254600160401b900467ffffffffffffffff1690565b5f516020610b865f395f51905f525f6103218361061c565b6001600160a01b0384165f90815260018401602052604081208054929350839290919061034f908490610b12565b90915550506040518181526001600160a01b038416907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a26103a48361039e6104b8565b83610773565b505050565b6103b16107a8565b6103ba5f6107da565b565b5f6104396103c9846104e6565b6040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa15801561040b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042f9190610b25565b6102c79190610b12565b9392505050565b5f516020610b865f395f51905f525f6104576106cb565b905080825f015f82825461046b9190610b12565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16104b46104ae6104b8565b8261084a565b5050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03165f9081527fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3901602052604090205490565b5f6105286108bd565b805490915060ff600160401b820416159067ffffffffffffffff165f8115801561054f5750825b90505f8267ffffffffffffffff16600114801561056b5750303b155b905081158015610579575080155b156105975760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156105c157845460ff60401b1916600160401b1785555b6105cc8888886108e5565b831561061257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b5f610626826104e6565b61063083426103bc565b6102cd9190610b3c565b7fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa39025467ffffffffffffffff1690565b5f6106726102d3565b61067a61063a565b6106849190610b12565b905090565b6106916107a8565b6001600160a01b0381166106bf57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6106c8816107da565b50565b5f6106e15f516020610b865f395f51905f525490565b6106ea426102a4565b6106849190610b3c565b5f6106fd61063a565b8267ffffffffffffffff16101561071557505f6102cd565b61071d610669565b8267ffffffffffffffff16106107345750816102cd565b61073c6102d3565b61074461063a565b6107589067ffffffffffffffff8516610b3c565b6107629085610b4f565b61076c9190610b66565b90506102cd565b6107808383836001610901565b6103a457604051635274afe760e01b81526001600160a01b03841660048201526024016106b6565b336107b16104b8565b6001600160a01b0316146103ba5760405163118cdaa760e01b81523360048201526024016106b6565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b804710156108745760405163cf47918160e01b8152476004820152602481018290526044016106b6565b61088d828260405180602001604052805f815250610963565b15610896575050565b3d156108a4576104b4610978565b60405163d6bda27560e01b815260040160405180910390fd5b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006102cd565b6108ed610983565b6108f6836109a8565b6103a48383836109b0565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661095757838315161561094b573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f5f5f83516020850186885af1949350505050565b6040513d5f823e3d81fd5b61098b610a10565b6103ba57604051631afcd79f60e31b815260040160405180910390fd5b610691610983565b6109b8610983565b7fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3902805467ffffffffffffffff928316600160401b026fffffffffffffffffffffffffffffffff19909116939092169290921717905550565b5f610a196108bd565b54600160401b900460ff16919050565b803567ffffffffffffffff81168114610a40575f5ffd5b919050565b5f60208284031215610a55575f5ffd5b61043982610a29565b80356001600160a01b0381168114610a40575f5ffd5b5f60208284031215610a84575f5ffd5b61043982610a5e565b5f5f60408385031215610a9e575f5ffd5b610aa783610a5e565b9150610ab560208401610a29565b90509250929050565b5f5f5f60608486031215610ad0575f5ffd5b610ad984610a5e565b9250610ae760208501610a29565b9150610af560408501610a29565b90509250925092565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102cd576102cd610afe565b5f60208284031215610b35575f5ffd5b5051919050565b818103818111156102cd576102cd610afe565b80820281158282048414176102cd576102cd610afe565b5f82610b8057634e487b7160e01b5f52601260045260245ffd5b50049056fea1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3900a26469706673582212207a5d87a31b9cfed557e712c37ae6060652e37b39ada2265b86bc118569de6abe64736f6c634300081f0033",
"deployedBytecode": "0x6080604052600436106100e7575f3560e01c80639613252111610087578063be9a655511610057578063be9a655514610249578063efbe1c1c1461025d578063f2fde38b14610271578063fbccedae14610290575f5ffd5b806396132521146101cc5780639852595c146101ec578063989a83661461020b578063a3f8eace1461022a575f5ffd5b8063715018a6116100c2578063715018a614610159578063810ec23b1461016d57806386d1a69f1461018c5780638da5cb5b146101a0575f5ffd5b80630a17b06b146100f25780630fb5a6b4146101245780631916558714610138575f5ffd5b366100ee57005b5f5ffd5b3480156100fd575f5ffd5b5061011161010c366004610a45565b6102a4565b6040519081526020015b60405180910390f35b34801561012f575f5ffd5b506101116102d3565b348015610143575f5ffd5b50610157610152366004610a74565b610309565b005b348015610164575f5ffd5b506101576103a9565b348015610178575f5ffd5b50610111610187366004610a8d565b6103bc565b348015610197575f5ffd5b50610157610440565b3480156101ab575f5ffd5b506101b46104b8565b6040516001600160a01b03909116815260200161011b565b3480156101d7575f5ffd5b505f516020610b865f395f51905f5254610111565b3480156101f7575f5ffd5b50610111610206366004610a74565b6104e6565b348015610216575f5ffd5b50610157610225366004610abe565b61051f565b348015610235575f5ffd5b50610111610244366004610a74565b61061c565b348015610254575f5ffd5b5061011161063a565b348015610268575f5ffd5b50610111610669565b34801561027c575f5ffd5b5061015761028b366004610a74565b610689565b34801561029b575f5ffd5b506101116106cb565b5f6102cd6102bd5f516020610b865f395f51905f525490565b6102c79047610b12565b836106f4565b92915050565b7fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa390254600160401b900467ffffffffffffffff1690565b5f516020610b865f395f51905f525f6103218361061c565b6001600160a01b0384165f90815260018401602052604081208054929350839290919061034f908490610b12565b90915550506040518181526001600160a01b038416907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a26103a48361039e6104b8565b83610773565b505050565b6103b16107a8565b6103ba5f6107da565b565b5f6104396103c9846104e6565b6040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa15801561040b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042f9190610b25565b6102c79190610b12565b9392505050565b5f516020610b865f395f51905f525f6104576106cb565b905080825f015f82825461046b9190610b12565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16104b46104ae6104b8565b8261084a565b5050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03165f9081527fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3901602052604090205490565b5f6105286108bd565b805490915060ff600160401b820416159067ffffffffffffffff165f8115801561054f5750825b90505f8267ffffffffffffffff16600114801561056b5750303b155b905081158015610579575080155b156105975760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156105c157845460ff60401b1916600160401b1785555b6105cc8888886108e5565b831561061257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b5f610626826104e6565b61063083426103bc565b6102cd9190610b3c565b7fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa39025467ffffffffffffffff1690565b5f6106726102d3565b61067a61063a565b6106849190610b12565b905090565b6106916107a8565b6001600160a01b0381166106bf57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6106c8816107da565b50565b5f6106e15f516020610b865f395f51905f525490565b6106ea426102a4565b6106849190610b3c565b5f6106fd61063a565b8267ffffffffffffffff16101561071557505f6102cd565b61071d610669565b8267ffffffffffffffff16106107345750816102cd565b61073c6102d3565b61074461063a565b6107589067ffffffffffffffff8516610b3c565b6107629085610b4f565b61076c9190610b66565b90506102cd565b6107808383836001610901565b6103a457604051635274afe760e01b81526001600160a01b03841660048201526024016106b6565b336107b16104b8565b6001600160a01b0316146103ba5760405163118cdaa760e01b81523360048201526024016106b6565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b804710156108745760405163cf47918160e01b8152476004820152602481018290526044016106b6565b61088d828260405180602001604052805f815250610963565b15610896575050565b3d156108a4576104b4610978565b60405163d6bda27560e01b815260040160405180910390fd5b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006102cd565b6108ed610983565b6108f6836109a8565b6103a48383836109b0565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661095757838315161561094b573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f5f5f83516020850186885af1949350505050565b6040513d5f823e3d81fd5b61098b610a10565b6103ba57604051631afcd79f60e31b815260040160405180910390fd5b610691610983565b6109b8610983565b7fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3902805467ffffffffffffffff928316600160401b026fffffffffffffffffffffffffffffffff19909116939092169290921717905550565b5f610a196108bd565b54600160401b900460ff16919050565b803567ffffffffffffffff81168114610a40575f5ffd5b919050565b5f60208284031215610a55575f5ffd5b61043982610a29565b80356001600160a01b0381168114610a40575f5ffd5b5f60208284031215610a84575f5ffd5b61043982610a5e565b5f5f60408385031215610a9e575f5ffd5b610aa783610a5e565b9150610ab560208401610a29565b90509250929050565b5f5f5f60608486031215610ad0575f5ffd5b610ad984610a5e565b9250610ae760208501610a29565b9150610af560408501610a29565b90509250925092565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102cd576102cd610afe565b5f60208284031215610b35575f5ffd5b5051919050565b818103818111156102cd576102cd610afe565b80820281158282048414176102cd576102cd610afe565b5f82610b8057634e487b7160e01b5f52601260045260245ffd5b50049056fea1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3900a26469706673582212207a5d87a31b9cfed557e712c37ae6060652e37b39ada2265b86bc118569de6abe64736f6c634300081f0033",
"linkReferences": {},
"deployedLinkReferences": {}
}