0 txs
45.7k calls
constructor
constructor()
functions
currentIndex
viewfunction currentIndex() view returns (uint256)
currentMerkleRoot
viewfunction currentMerkleRoot() view returns (bytes32)
currentMerkleRootIndex
viewfunction currentMerkleRootIndex() view returns (uint256)
FEE_DENOMINATOR
viewfunction FEE_DENOMINATOR() view returns (uint256)
feeInBPS
viewfunction feeInBPS() view returns (uint256)
isClaimed
viewfunction isClaimed(uint256 index, address account) view returns (bool)
kernel
viewfunction kernel() view returns (address)
kernelDepositPool
viewfunction kernelDepositPool() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
protocolTreasury
viewfunction protocolTreasury() view returns (address)
token
viewfunction token() view returns (address)
userClaims
viewfunction userClaims(address user) view returns (uint256 lastClaimedIndex, uint256 cumulativeAmount)
claim
nonpayablefunction claim(uint256 index, address account, uint256 cumulativeAmount, bytes32[] merkleProof)
claimAndStake
nonpayablefunction claimAndStake(uint256 index, address account, uint256 cumulativeAmount, bytes32[] merkleProof)
initialize
nonpayablefunction initialize(address _kernel, address _kernelDepositPool, address _protocolTreasury, uint256 _feeInBPS)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
setFeeInBPS
nonpayablefunction setFeeInBPS(uint256 _feeInBPS)
setKernelDepositPool
nonpayablefunction setKernelDepositPool(address _kernelDepositPool)
setMerkleRoot
nonpayablefunction setMerkleRoot(bytes32 _merkleRootToSet)
setProtocolTreasury
nonpayablefunction setProtocolTreasury(address _protocolTreasury)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
events
Claimed
event Claimed(uint256 index, address account, uint256 amount)
ClaimedAndStaked
event ClaimedAndStaked(uint256 index, address account, uint256 amount)
FeeInBPSUpdated
event FeeInBPSUpdated(uint256 feeInBPS)
Initialized
event Initialized(uint8 version)
KernelDepositPoolUpdated
event KernelDepositPoolUpdated(address kernelDepositPool)
MerkleRootSet
event MerkleRootSet(uint256 index, bytes32 currentMerkleRoot)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
ProtocolTreasuryUpdated
event ProtocolTreasuryUpdated(address protocolTreasury)
Unpaused
event Unpaused(address account)
errors
AlreadyClaimed
error AlreadyClaimed()
InvalidFeeInBPS
error InvalidFeeInBPS()
InvalidIndex
error InvalidIndex()
InvalidMerkleProof
error InvalidMerkleProof()
NoTokensToClaim
error NoTokensToClaim()
ZeroAddressNotAllowed
error ZeroAddressNotAllowed()
ZeroValueProvided
error ZeroValueProvided()
creation bytecode
0x608060405234801561000f575f80fd5b5061001861001d565b6100d9565b5f54610100900460ff16156100885760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff908116146100d7575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611d36806100e65f395ff3fe608060405234801561000f575f80fd5b506004361061018f575f3560e01c80639e05537b116100dd578063d4aae0c411610088578063f0a3563c11610063578063f0a3563c1461033f578063f2fde38b1461037a578063fc0c546a1461038d575f80fd5b8063d4aae0c414610303578063d73792a914610323578063ecccb71d1461032c575f80fd5b8063cabe4274116100b8578063cabe4274146102ca578063cf756fdf146102dd578063d2ef0795146102f0575f80fd5b80639e05537b146102a55780639ea97190146102b8578063c4278a1a146102c1575f80fd5b80636d6e7d011161013d578063803db96d11610118578063803db96d1461025f5780638456cb591461027f5780638da5cb5b14610287575f80fd5b80636d6e7d01146101ff578063715018a6146102445780637cb647591461024c575f80fd5b80633f4ba83a1161016d5780633f4ba83a146101d75780634b9c1e0d146101df5780635c975abb146101e8575f80fd5b80630c5a61f81461019357806326987b60146101a85780632e7ba6ef146101c4575b5f80fd5b6101a66101a1366004611a19565b6103ab565b005b6101b160cf5481565b6040519081526020015b60405180910390f35b6101a66101d2366004611a32565b610436565b6101a66104e4565b6101b160cd5481565b60655460ff165b60405190151581526020016101bb565b60cc5461021f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bb565b6101a66104f6565b6101a661025a366004611ac1565b610507565b60ca5461021f9073ffffffffffffffffffffffffffffffffffffffff1681565b6101a66105b1565b60335473ffffffffffffffffffffffffffffffffffffffff1661021f565b6101a66102b3366004611a32565b6105c1565b6101b160ce5481565b6101b160cb5481565b6101a66102d8366004611a19565b6106bc565b6101a66102eb366004611ad8565b6107b4565b6101ef6102fe366004611b20565b610a25565b60c95461021f9073ffffffffffffffffffffffffffffffffffffffff1681565b6101b161271081565b6101a661033a366004611ac1565b610a8f565b61036561034d366004611a19565b60d06020525f90815260409020805460019091015482565b604080519283526020830191909152016101bb565b6101a6610388366004611a19565b610b08565b60c95473ffffffffffffffffffffffffffffffffffffffff1661021f565b6103b3610ba5565b6103bc81610c0c565b60ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fb141872ee67913e1bc546464f29b6b07a65159d45c6af64fdecf8b4129157faf906020015b60405180910390a150565b61043e610c59565b610446610cac565b5f6104548686868686610d05565b60c95490915061047b9073ffffffffffffffffffffffffffffffffffffffff168683610f9a565b6040805187815273ffffffffffffffffffffffffffffffffffffffff871660208201529081018290527f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed026906060015b60405180910390a1506104dd6001609755565b5050505050565b6104ec610ba5565b6104f461107a565b565b6104fe610ba5565b6104f45f6110f7565b61050f610ba5565b80610546576040517fad3e811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ce81905560cd8054905f61055a83611b77565b909155505060cf8054905f61056e83611b77565b91905055507fb04b7d6145a7588fdcf339a22877d5965f861c171204fc37688058c5f6c06d3b60cd5460ce5460405161042b929190918252602082015260400190565b6105b9610ba5565b6104f461116d565b6105c9610c59565b6105d1610cac565b5f6105df8686868686610d05565b60cc546040517f2ee4090800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015260248201849052929350911690632ee40908906044015f604051808303815f87803b158015610652575f80fd5b505af1158015610664573d5f803e3d5ffd5b50506040805189815273ffffffffffffffffffffffffffffffffffffffff891660208201529081018490527f26fda7722559595d1655d483327839a73b38a0028140744f608d5d73f3bb946d925060600190506104ca565b6106c4610ba5565b6106cd81610c0c565b60cc805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083161790925560c954908216916107239116825f6111c8565b60c9546107679073ffffffffffffffffffffffffffffffffffffffff16837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6111c8565b60405173ffffffffffffffffffffffffffffffffffffffff831681527f60b4cbb8fc9634e806c9728f64fb36bb0661e11ac356719a98a91693d61a1ecb9060200160405180910390a15050565b5f54610100900460ff16158080156107d257505f54600160ff909116105b806107eb5750303b1580156107eb57505f5460ff166001145b6108625760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156108be575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6108c785610c0c565b6108d084610c0c565b6108d983610c0c565b612710821115610915576040517f0645975a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61091d61132e565b6109256113b2565b61092d611436565b60c9805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560cc805488831690841617905560ca80549187169190921617905560cb8390556109bd90857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6111c8565b80156104dd575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b5f825f03610a5f576040517fad3e811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff81165f90815260d060205260409020548211155b92915050565b610a97610ba5565b612710811115610ad3576040517f0645975a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cb8190556040518181527fd4e6c751f871fb8558b382eb26ed022500fb7161c90a8ffce36b6eb8372219cd9060200161042b565b610b10610ba5565b73ffffffffffffffffffffffffffffffffffffffff8116610b995760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610859565b610ba2816110f7565b50565b60335473ffffffffffffffffffffffffffffffffffffffff1633146104f45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610859565b73ffffffffffffffffffffffffffffffffffffffff8116610ba2576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60655460ff16156104f45760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610859565b600260975403610cfe5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610859565b6002609755565b60ce545f90610d40576040517fad3e811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b851580610d4e575060cf5486115b15610d85576040517f63df817100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d8f8686610a25565b15610dc6576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051602081018890527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1691810191909152605481018590525f90607401604051602081830303815290604052805190602001209050610e638484808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505060ce5491508490506114ba565b610e99576040517fb05e92fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff86165f90815260d06020526040812060010154610ecb9087611bae565b9050805f03610f06576040517f0f3f861000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff87165f90815260d06020526040812089815560010187905560cb5461271090610f449084611bc1565b610f4e9190611bd8565b90505f610f5b8284611bae565b90508115610f8d5760ca5460c954610f8d9173ffffffffffffffffffffffffffffffffffffffff918216911684610f9a565b9998505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261106e9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526114cf565b505050565b6001609755565b6110826115c2565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b611175610c59565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110cd3390565b80158061126657506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015611240573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112649190611c10565b155b6112d85760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610859565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261106e9084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401610fec565b5f54610100900460ff166113aa5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610859565b6104f4611614565b5f54610100900460ff1661142e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610859565b6104f4611699565b5f54610100900460ff166114b25760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610859565b6104f461173f565b5f826114c685846117bb565b14949350505050565b5f611530826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166118079092919063ffffffff16565b905080515f14806115505750808060200190518101906115509190611c27565b61106e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610859565b60655460ff166104f45760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610859565b5f54610100900460ff166116905760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610859565b6104f4336110f7565b5f54610100900460ff166117155760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610859565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b5f54610100900460ff166110735760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610859565b5f81815b84518110156117ff576117eb828683815181106117de576117de611c46565b602002602001015161181d565b9150806117f781611b77565b9150506117bf565b509392505050565b606061181584845f8561184c565b949350505050565b5f818310611837575f828152602084905260409020611845565b5f8381526020839052604090205b9392505050565b6060824710156118c45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610859565b5f808673ffffffffffffffffffffffffffffffffffffffff1685876040516118ec9190611c95565b5f6040518083038185875af1925050503d805f8114611926576040519150601f19603f3d011682016040523d82523d5f602084013e61192b565b606091505b509150915061193c87838387611947565b979650505050505050565b606083156119c25782515f036119bb5773ffffffffffffffffffffffffffffffffffffffff85163b6119bb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610859565b5081611815565b61181583838151156119d75781518083602001fd5b8060405162461bcd60e51b81526004016108599190611cb0565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a14575f80fd5b919050565b5f60208284031215611a29575f80fd5b611845826119f1565b5f805f805f60808688031215611a46575f80fd5b85359450611a56602087016119f1565b935060408601359250606086013567ffffffffffffffff80821115611a79575f80fd5b818801915088601f830112611a8c575f80fd5b813581811115611a9a575f80fd5b8960208260051b8501011115611aae575f80fd5b9699959850939650602001949392505050565b5f60208284031215611ad1575f80fd5b5035919050565b5f805f8060808587031215611aeb575f80fd5b611af4856119f1565b9350611b02602086016119f1565b9250611b10604086016119f1565b9396929550929360600135925050565b5f8060408385031215611b31575f80fd5b82359150611b41602084016119f1565b90509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ba757611ba7611b4a565b5060010190565b81810381811115610a8957610a89611b4a565b8082028115828204841417610a8957610a89611b4a565b5f82611c0b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215611c20575f80fd5b5051919050565b5f60208284031215611c37575f80fd5b81518015158114611845575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b83811015611c8d578181015183820152602001611c75565b50505f910152565b5f8251611ca6818460208701611c73565b9190910192915050565b602081525f8251806020840152611cce816040850160208701611c73565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220adb55cbbf99f7a6e9e43eac849322d73333591519c4508e393ef785cbc78922564736f6c63430008150033