0 txs
0 calls
constructor
constructor(address admin)
functions
cumulativeClaimed
viewfunction cumulativeClaimed(address, address, uint256) view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
EPOCH_ROLE
viewfunction EPOCH_ROLE() view returns (bytes32)
epochClosed
viewfunction epochClosed(uint256) view returns (bool)
epochTokenTotalRewards
viewfunction epochTokenTotalRewards(uint256, address) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
MERKLE_ROOT_ROLE
viewfunction MERKLE_ROOT_ROLE() view returns (bytes32)
merkleRoot
viewfunction merkleRoot() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
wallet
viewfunction wallet() view returns (address)
claim
nonpayablefunction claim(uint256 epoch, address account, address token, uint256 cumulativeAmount, bytes32 expectedMerkleRoot, bytes32[] merkleProof) returns (uint256 claimedAmount)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setEpochClosed
nonpayablefunction setEpochClosed(uint256 epoch, bool isClosed)
setEpochTokenTotalReward
nonpayablefunction setEpochTokenTotalReward(uint256 epoch, address token, uint256 totalRewardAmount)
setMerkleRoot
nonpayablefunction setMerkleRoot(bytes32 merkleRoot_)
setWallet
nonpayablefunction setWallet(address wallet_)
events
Claimed
event Claimed(uint256 indexed epoch, address indexed account, address indexed token, uint256 amount)
EpochIsClosed
event EpochIsClosed(uint256 indexed epoch, bool isClosed)
EpochTokenTotalRewardSet
event EpochTokenTotalRewardSet(uint256 indexed epoch, address indexed token, uint256 totalRewardAmount)
MerkleRootUpdated
event MerkleRootUpdated(bytes32 oldMerkleRoot, bytes32 newMerkleRoot)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
WalletUpdated
event WalletUpdated(address indexed oldWallet, address indexed newWallet)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x608060405234801561000f575f80fd5b50604051610eb1380380610eb183398101604081905261002e916100e8565b6100385f8261003f565b5050610115565b5f828152602081815260408083206001600160a01b038516845290915281205460ff166100df575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556100973390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016100e2565b505f5b92915050565b5f602082840312156100f8575f80fd5b81516001600160a01b038116811461010e575f80fd5b9392505050565b610d8f806101225f395ff3fe608060405234801561000f575f80fd5b506004361061011c575f3560e01c806391d14854116100a9578063c3a13e641161006e578063c3a13e641461029a578063d10aa9e9146102c1578063d547741f146102f1578063deaa59df14610304578063ef98231e14610317575f80fd5b806391d1485414610233578063a217fddf14610246578063a5fc06e41461024d578063b28342e614610274578063ba3331ff14610287575f80fd5b806336568abe116100ef57806336568abe14610196578063521eb273146101a95780635c4e9245146101d4578063722a8d1a146101f65780637cb6475914610220575f80fd5b806301ffc9a714610120578063248a9ca3146101485780632eb4a7ab146101785780632f2ff15d14610181575b5f80fd5b61013361012e366004610b32565b61032a565b60405190151581526020015b60405180910390f35b61016a610156366004610b59565b5f9081526020819052604090206001015490565b60405190815260200161013f565b61016a60025481565b61019461018f366004610b8b565b610360565b005b6101946101a4366004610b8b565b61038a565b6001546101bc906001600160a01b031681565b6040516001600160a01b03909116815260200161013f565b6101336101e2366004610b59565b60036020525f908152604090205460ff1681565b61016a610204366004610b8b565b600460209081525f928352604080842090915290825290205481565b61019461022e366004610b59565b6103c2565b610133610241366004610b8b565b61042e565b61016a5f81565b61016a7fd5a89e8a650061fa538ac2ef45b7e2fa231077c8f19d034f623c35bd12bf68ac81565b610194610282366004610bb5565b610456565b610194610295366004610be7565b6104dc565b61016a7f5f27ef54f6c93d35683b946ad996cb363ff85e4207398f3fcdcdcf643300c45a81565b61016a6102cf366004610c19565b600560209081525f938452604080852082529284528284209052825290205481565b6101946102ff366004610b8b565b610564565b610194610312366004610c42565b610588565b61016a610325366004610c5b565b6105ee565b5f6001600160e01b03198216637965db0b60e01b148061035a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f8281526020819052604090206001015461037a81610899565b61038483836108a6565b50505050565b6001600160a01b03811633146103b35760405163334bd91960e11b815260040160405180910390fd5b6103bd8282610935565b505050565b7f5f27ef54f6c93d35683b946ad996cb363ff85e4207398f3fcdcdcf643300c45a6103ec81610899565b60025460408051918252602082018490527ffd69edeceaf1d6832d935be1fba54ca93bf17e71520c6c9ffc08d6e9529f8757910160405180910390a150600255565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b7fd5a89e8a650061fa538ac2ef45b7e2fa231077c8f19d034f623c35bd12bf68ac61048081610899565b827f4c83c06aed4ec2c7d9fad9066705dd32963b7846d63daa3283fe6ba6d2314566836040516104b4911515815260200190565b60405180910390a2505f91825260036020526040909120805460ff1916911515919091179055565b7fd5a89e8a650061fa538ac2ef45b7e2fa231077c8f19d034f623c35bd12bf68ac61050681610899565b5f8481526004602090815260408083206001600160a01b038716808552908352928190208590555184815286917fdd9b55d422224285fbcad0ac1818c4ad0f02c82a1c8ea54a69260840d9b10db2910160405180910390a350505050565b5f8281526020819052604090206001015461057e81610899565b6103848383610935565b5f61059281610899565b6001546040516001600160a01b038085169216907f0f37c6733428a3a65d46b7f1853a5ce4bfa3cf92d25322507a50bf23a0b5a0a8905f90a350600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f836002541461064f5760405162461bcd60e51b815260206004820152602160248201527f537061726b526577617264732f6d65726b6c652d726f6f742d6d69736d6174636044820152600d60fb1b60648201526084015b60405180910390fd5b5f8881526003602052604090205460ff16156106ad5760405162461bcd60e51b815260206004820152601e60248201527f537061726b526577617264732f65706f63682d6e6f742d656e61626c656400006044820152606401610646565b60408051602081018a90526001600160a01b03808a16928201929092529087166060820152608081018690525f9060a00160408051601f198184030181528282528051602091820120908301520160405160208183030381529060405280519060200120905061071f8484878461099e565b61076b5760405162461bcd60e51b815260206004820152601a60248201527f537061726b526577617264732f696e76616c69642d70726f6f660000000000006044820152606401610646565b6001600160a01b038089165f908152600560209081526040808320938b1683529281528282208c8352905220548681106107e75760405162461bcd60e51b815260206004820152601d60248201527f537061726b526577617264732f6e6f7468696e672d746f2d636c61696d0000006044820152606401610646565b6001600160a01b03808a165f908152600560209081526040808320938c1683529281528282208d83529052208790556108208188610d1a565b60015490935061083e906001600160a01b038a811691168b866109b5565b876001600160a01b0316896001600160a01b03168b7fce3bcb6e219596cf26007ffdfaae8953bc3f76e3f36c0a79b23e28020da3222e8660405161088491815260200190565b60405180910390a45050979650505050505050565b6108a38133610a0f565b50565b5f6108b1838361042e565b61092e575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556108e63390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161035a565b505f61035a565b5f610940838361042e565b1561092e575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161035a565b5f826109ab868685610a4c565b1495945050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610384908590610a97565b610a19828261042e565b610a485760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610646565b5050565b5f81815b84811015610a8e57610a7a82878784818110610a6e57610a6e610d2d565b90506020020135610b03565b915080610a8681610d41565b915050610a50565b50949350505050565b5f8060205f8451602086015f885af180610ab6576040513d5f823e3d81fd5b50505f513d91508115610acd578060011415610ada565b6001600160a01b0384163b155b1561038457604051635274afe760e01b81526001600160a01b0385166004820152602401610646565b5f818310610b1d575f828152602084905260409020610b2b565b5f8381526020839052604090205b9392505050565b5f60208284031215610b42575f80fd5b81356001600160e01b031981168114610b2b575f80fd5b5f60208284031215610b69575f80fd5b5035919050565b80356001600160a01b0381168114610b86575f80fd5b919050565b5f8060408385031215610b9c575f80fd5b82359150610bac60208401610b70565b90509250929050565b5f8060408385031215610bc6575f80fd5b8235915060208301358015158114610bdc575f80fd5b809150509250929050565b5f805f60608486031215610bf9575f80fd5b83359250610c0960208501610b70565b9150604084013590509250925092565b5f805f60608486031215610c2b575f80fd5b610c3484610b70565b9250610c0960208501610b70565b5f60208284031215610c52575f80fd5b610b2b82610b70565b5f805f805f805f60c0888a031215610c71575f80fd5b87359650610c8160208901610b70565b9550610c8f60408901610b70565b9450606088013593506080880135925060a088013567ffffffffffffffff80821115610cb9575f80fd5b818a0191508a601f830112610ccc575f80fd5b813581811115610cda575f80fd5b8b60208260051b8501011115610cee575f80fd5b60208301945080935050505092959891949750929550565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561035a5761035a610d06565b634e487b7160e01b5f52603260045260245ffd5b5f60018201610d5257610d52610d06565b506001019056fea26469706673582212203d97b215b866fdf1cf8123b070fc595c3b15b0e5a88e1f8b1d9982538c055dfe64736f6c6343000815003300000000000000000000000071e7d05be74ff748c45402c06a941c822d756dc5