35 txs
33 calls
constructor
constructor(address zeroToken_)
functions
CLAIM_TYPEHASH
viewfunction CLAIM_TYPEHASH() view returns (bytes32)
CLOCK_MODE
purefunction CLOCK_MODE() pure returns (string)
clock
viewfunction clock() view returns (uint48)
distributionOfAt
viewfunction distributionOfAt(address token, uint256 epoch) view returns (uint256 amount)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields_, string name_, string version_, uint256 chainId_, address verifyingContract_, bytes32 salt_, uint256[] extensions_)
getClaimable
viewfunction getClaimable(address token_, address account_, uint256 startEpoch_, uint256 endEpoch_) view returns (uint256 claimable_)
getClaimDigest
viewfunction getClaimDigest(address account_, address token_, uint256 startEpoch_, uint256 endEpoch_, address destination_, uint256 nonce_, uint256 deadline_) view returns (bytes32)
getDistributable
viewfunction getDistributable(address token_) view returns (uint256)
hasClaimed
viewfunction hasClaimed(address token, uint256 epoch, address account) view returns (bool claimed)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address account) view returns (uint256 nonce)
zeroToken
viewfunction zeroToken() view returns (address)
claim
nonpayablefunction claim(address token_, uint256 startEpoch_, uint256 endEpoch_, address destination_) returns (uint256)
claimBySig
nonpayablefunction claimBySig(address account_, address token_, uint256 startEpoch_, uint256 endEpoch_, address destination_, uint256 deadline_, bytes signature_) returns (uint256)
claimBySig
nonpayablefunction claimBySig(address account_, address token_, uint256 startEpoch_, uint256 endEpoch_, address destination_, uint256 deadline_, uint8 v_, bytes32 r_, bytes32 s_) returns (uint256)
distribute
nonpayablefunction distribute(address token_) returns (uint256 amount_)
events
Claim
event Claim(address indexed token, address indexed account, uint256 startEpoch, uint256 endEpoch, uint256 amount)
Distribution
event Distribution(address indexed token, uint256 indexed epoch, uint256 amount)
EIP712DomainChanged
event EIP712DomainChanged()
errors
InvalidAccountNonce
error InvalidAccountNonce(uint256 nonce, uint256 expectedNonce)
InvalidDestinationAddress
error InvalidDestinationAddress()
InvalidSignature
error InvalidSignature()
InvalidSignatureLength
error InvalidSignatureLength()
InvalidSignatureS
error InvalidSignatureS()
InvalidSignatureV
error InvalidSignatureV()
InvalidZeroTokenAddress
error InvalidZeroTokenAddress()
NotPastTimepoint
error NotPastTimepoint(uint256 timepoint, uint256 clock)
SignatureExpired
error SignatureExpired(uint256 deadline, uint256 timestamp)
SignerMismatch
error SignerMismatch()
StartEpochAfterEndEpoch
error StartEpochAfterEndEpoch(uint256 startEpoch, uint256 endEpoch)
TransferFailed
error TransferFailed()
creation bytecode
0x60e060405234801562000010575f80fd5b50604051620022643803806200226483398101604081905262000033916200014d565b604080518082019091526011815270111a5cdd1c9a589d5d1a5bdb95985d5b1d607a1b6020820152805f6200006982826200021a565b504660805262000078620000b1565b60a05250506001600160a01b03811660c0819052620000aa57604051631fb9659f60e21b815260040160405180910390fd5b5062000360565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620000e59190620002e6565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f602082840312156200015e575f80fd5b81516001600160a01b038116811462000175575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620001a557607f821691505b602082108103620001c457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200021557805f5260205f20601f840160051c81016020851015620001f15750805b601f840160051c820191505b8181101562000212575f8155600101620001fd565b50505b505050565b81516001600160401b038111156200023657620002366200017c565b6200024e8162000247845462000190565b84620001ca565b602080601f83116001811462000284575f84156200026c5750858301515b5f19600386901b1c1916600185901b178555620002de565b5f85815260208120601f198616915b82811015620002b45788860151825594840194600190910190840162000293565b5085821015620002d257878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f808354620002f58162000190565b60018281168015620003105760018114620003265762000354565b60ff198416875282151583028701945062000354565b875f526020805f205f5b858110156200034b5781548a82015290840190820162000330565b50505082870194505b50929695505050505050565b60805160a05160c051611ecb620003995f395f81816102cc0152818161097a0152610a5501525f6103f101525f6103bc0152611ecb5ff3fe608060405234801561000f575f80fd5b5060043610610115575f3560e01c806363453ae1116100ad5780637ecebe001161007d57806391ddadf41161006357806391ddadf414610295578063e3811b65146102b4578063f294bd92146102c7575f80fd5b80637ecebe001461025b57806384b0196e1461027a575f80fd5b806363453ae1146101fb578063644761331461020e5780636a995a3b146102215780636b0509b114610234575f80fd5b806338c4cc76116100e857806338c4cc76146101a35780634a537d0b146101cd5780634bf5d7e9146101e05780635e15a6b6146101e8575f80fd5b806306fdde03146101195780630815961414610137578063093c4e0e1461017a5780633644e5151461019b575b5f80fd5b610121610313565b60405161012e91906116b8565b60405180910390f35b61016a6101453660046116f2565b600460209081525f938452604080852082529284528284209052825290205460ff1681565b604051901515815260200161012e565b61018d61018836600461172b565b6103a2565b60405190815260200161012e565b61018d6103b9565b61018d6101b136600461176e565b600360209081525f928352604080842090915290825290205481565b61018d6101db366004611796565b610413565b6101216104a2565b61018d6101f636600461181e565b6104ac565b61018d61020936600461181e565b610559565b61018d61021c3660046118b3565b610615565b61018d61022f3660046119ac565b6106a0565b61018d7f4b4633c3c305de33d5d9cf70f2712f26961648cd68d020c2556a9e43be58051d81565b61018d61026936600461181e565b60016020525f908152604090205481565b61028261073b565b60405161012e9796959493929190611a11565b61029d610873565b60405165ffffffffffff909116815260200161012e565b61018d6102c2366004611ad1565b610885565b6102ee7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012e565b60605f805461032190611b10565b80601f016020809104026020016040519081016040528092919081815260200182805461034d90611b10565b80156103985780601f1061036f57610100808354040283529160200191610398565b820191905f5260205f20905b81548152906001019060200180831161037b57829003601f168201915b5050505050905090565b5f6103b03386868686610c37565b95945050505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146103ee576103e9610deb565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff89165f908152600160205260408120546104538b61044b818d8d8d8d888e6106a0565b878787610e85565b73ffffffffffffffffffffffffffffffffffffffff8b165f9081526001602081905260409091209101905561048785610ea1565b6104948a8a8a8a8a610c37565b9a9950505050505050505050565b60606103e9610ee7565b73ffffffffffffffffffffffffffffffffffffffff81165f818152600260205260408082205490517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152919290916370a0823190602401602060405180830381865afa158015610525573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105499190611b61565b6105539190611ba5565b92915050565b5f80610563610873565b65ffffffffffff169050610576836104ac565b9150808373ffffffffffffffffffffffffffffffffffffffff167fa8ee3e5c0b1fd681042265199e8b28cf463b81bc21f6658d4c73e741aeabd3f5846040516105c191815260200190565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff9092165f81815260036020908152604080832095835294815284822080548501905591815260029091529190912080548201905590565b73ffffffffffffffffffffffffffffffffffffffff87165f908152600160205260408120546106538961064d818b8b8b8b888c6106a0565b85610f07565b73ffffffffffffffffffffffffffffffffffffffff89165f9081526001602081905260409091209101905561068783610ea1565b6106948888888888610c37565b98975050505050505050565b604080517f4b4633c3c305de33d5d9cf70f2712f26961648cd68d020c2556a9e43be58051d602082015273ffffffffffffffffffffffffffffffffffffffff808a169282019290925281881660608201526080810187905260a0810186905290841660c082015260e0810183905261010081018290525f90610694906101200160405160208183030381529060405280519060200120610f58565b5f606080828080838146308280604051908082528060200260200182016040528015610771578160200160208202803683370190505b507f0f0000000000000000000000000000000000000000000000000000000000000094939291908480546107a490611b10565b80601f01602080910402602001604051908101604052809291908181526020018280546107d090611b10565b801561081b5780601f106107f25761010080835404028352916020019161081b565b820191905f5260205f20905b8154815290600101906020018083116107fe57829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b5f61087c610fb9565b61ffff16905090565b5f8061088f610873565b65ffffffffffff1690508083106108e1576040517f3260d32f00000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044015b60405180910390fd5b82841115610925576040517fcab6279d00000000000000000000000000000000000000000000000000000000815260048101859052602481018490526044016108d8565b6040517f0d33fbbd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201869052604482018590525f917f000000000000000000000000000000000000000000000000000000000000000090911690630d33fbbd906064015f60405180830381865afa1580156109c0573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a059190810190611bb8565b6040517f3cb1838f00000000000000000000000000000000000000000000000000000000815260048101879052602481018690529091505f9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690633cb1838f906044015f60405180830381865afa158015610a99573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610ade9190810190611bb8565b90505f610aeb8787611ba5565b610af6906001611c4d565b90505f5b81811015610c22575f848281518110610b1557610b15611c60565b60200260200101519050805f03610b2c5750610c1a565b73ffffffffffffffffffffffffffffffffffffffff808c165f9081526004602090815260408083208d870184528252808320938e168352929052205460ff1615610b765750610c1a565b838281518110610b8857610b88611c60565b6020026020010151633b9aca008260035f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f868e610be09190611c4d565b81526020019081526020015f2054610bf89190611c8d565b610c029190611c8d565b610c0c9190611ca4565b610c169088611c4d565b9650505b600101610afa565b50633b9aca0085049998505050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8216610c85576040517f5209852900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c9185878686610885565b9050835b610ca0846001611c4d565b811015610d125773ffffffffffffffffffffffffffffffffffffffff8087165f9081526004602090815260408083208584528252808320938b1683529290522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915501610c95565b5073ffffffffffffffffffffffffffffffffffffffff85165f9081526002602052604081208054839290610d47908490611ba5565b9091555050604080518581526020810185905290810182905273ffffffffffffffffffffffffffffffffffffffff80881691908716907f9137e112a187039f8a3291c0a66fce97153d25ec42036e82360d5d0106d19a6e9060600160405180910390a3610db5858383610fe1565b6103b0576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051610e1d9190611cdc565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b610e9a610e958686868686611078565b6110b4565b5050505050565b80421115610ee4576040517ff88f0490000000000000000000000000000000000000000000000000000000008152600481018290524260248201526044016108d8565b50565b60606040518060a0016040528060658152602001611e3160659139905090565b5f610f13848484611278565b90505f816005811115610f2857610f28611db1565b03610f335750505050565b610f3e8484846112bc565b15610f495750505050565b610f52816110b4565b50505050565b5f610f616103b9565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6213c680610fcc63661bd35042611ba5565b610fd69190611ca4565b6103e9906001611c4d565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790525f90611070908590611404565b949350505050565b5f805f611087878787876114b8565b90925090505f82600581111561109f5761109f611db1565b146110aa5781610694565b61069488826115c5565b5f8160058111156110c7576110c7611db1565b036110cf5750565b60018160058111156110e3576110e3611db1565b0361111a576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281600581111561112e5761112e611db1565b03611165576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600381600581111561117957611179611db1565b036111b0576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60048160058111156111c4576111c4611db1565b036111fb576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581600581111561120f5761120f611db1565b03611246576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f6112858585611609565b90925090505f82600581111561129d5761129d611db1565b146112a857816112b2565b6112b286826115c5565b9695505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1685856040516024016112e9929190611dde565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e000000000000000000000000000000000000000000000000000000001790525161136a9190611df6565b5f60405180830381855afa9150503d805f81146113a2576040519150601f19603f3d011682016040523d82523d5f602084013e6113a7565b606091505b50915091508180156113bb57506020815110155b80156112b2575080517f1626ba7e00000000000000000000000000000000000000000000000000000000906113f99083016020908101908401611b61565b149695505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff83163b61142857505f610553565b60608373ffffffffffffffffffffffffffffffffffffffff168360405161144f9190611df6565b5f604051808303815f865af19150503d805f8114611488576040519150601f19603f3d011682016040523d82523d5f602084013e61148d565b606091505b5090925090508180156110705750805115806110705750808060200190518101906110709190611e11565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156114ed5750600390505f6115bc565b8460ff16601b1415801561150557508460ff16601c14155b156115155750600490505f6115bc565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa158015611565573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116156115b3575f816115b7565b60015f5b915091505b94509492505050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611600576005611602565b5f5b9392505050565b5f80825160411461161f5750600290505f611646565b6020830151604084015160608501515f1a919061163e878484846114b8565b945094505050505b9250929050565b5f5b8381101561166757818101518382015260200161164f565b50505f910152565b5f815180845261168681602086016020860161164d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f611602602083018461166f565b803573ffffffffffffffffffffffffffffffffffffffff811681146116ed575f80fd5b919050565b5f805f60608486031215611704575f80fd5b61170d846116ca565b925060208401359150611722604085016116ca565b90509250925092565b5f805f806080858703121561173e575f80fd5b611747856116ca565b93506020850135925060408501359150611763606086016116ca565b905092959194509250565b5f806040838503121561177f575f80fd5b611788836116ca565b946020939093013593505050565b5f805f805f805f805f6101208a8c0312156117af575f80fd5b6117b88a6116ca565b98506117c660208b016116ca565b975060408a0135965060608a013595506117e260808b016116ca565b945060a08a0135935060c08a013560ff811681146117fe575f80fd5b8093505060e08a013591506101008a013590509295985092959850929598565b5f6020828403121561182e575f80fd5b611602826116ca565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156118ab576118ab611837565b604052919050565b5f805f805f805f60e0888a0312156118c9575f80fd5b6118d2886116ca565b965060206118e1818a016116ca565b965060408901359550606089013594506118fd60808a016116ca565b935060a0890135925060c089013567ffffffffffffffff80821115611920575f80fd5b818b0191508b601f830112611933575f80fd5b81358181111561194557611945611837565b611975847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611864565b91508082528c8482850101111561198a575f80fd5b80848401858401375f8482840101525080935050505092959891949750929550565b5f805f805f805f60e0888a0312156119c2575f80fd5b6119cb886116ca565b96506119d9602089016116ca565b955060408801359450606088013593506119f5608089016116ca565b925060a0880135915060c0880135905092959891949750929550565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e06020840152611a4d60e084018a61166f565b8381036040850152611a5f818a61166f565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015611abf57835183529284019291840191600101611aa3565b50909c9b505050505050505050505050565b5f805f8060808587031215611ae4575f80fd5b611aed856116ca565b9350611afb602086016116ca565b93969395505050506040820135916060013590565b600181811c90821680611b2457607f821691505b602082108103611b5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f60208284031215611b71575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561055357610553611b78565b5f6020808385031215611bc9575f80fd5b825167ffffffffffffffff80821115611be0575f80fd5b818501915085601f830112611bf3575f80fd5b815181811115611c0557611c05611837565b8060051b9150611c16848301611864565b8181529183018401918481019088841115611c2f575f80fd5b938501935b8385101561069457845182529385019390850190611c34565b8082018082111561055357610553611b78565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808202811582820484141761055357610553611b78565b5f82611cd7577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f8083545f60018260011c91506001831680611cf957607f831692505b60208084108203611d31577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015611d455760018114611d7857611da3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650611da3565b5f8a8152602090205f5b86811015611d9b5781548b820152908501908301611d82565b505084890196505b509498975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b828152604060208201525f611070604083018461166f565b5f8251611e0781846020870161164d565b9190910192915050565b5f60208284031215611e21575f80fd5b81518015158114611602575f80fdfe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313731333039393630302665706f6368506572696f643d31323936303030a2646970667358221220ef9429e1c9b41d3daf14dabe78bc1ea7bd3754d3f8ca4a803c5679ccec5df6eb64736f6c63430008170033000000000000000000000000988567fe094570cce1ffda29d1f2d842b70492be