0 txs
1 call
constructor
constructor(uint256 _scale, uint256 _max)
functions
admins
viewfunction admins(address) view returns (bool)
calculate
viewfunction calculate(uint256 _value, address _token) view returns (uint256)
claimed
viewfunction claimed(bytes32, address) view returns (bool)
getStatus
viewfunction getStatus(address _account, bytes32[] _trees) view returns (bool[])
max
viewfunction max() view returns (uint256)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
rootsByTree
viewfunction rootsByTree(bytes32) view returns (bytes32)
scale
viewfunction scale() view returns (uint256)
verify
purefunction verify(address _claimant, bytes32 _root, uint256 _value, bytes32[] _proof) pure returns (bool)
acceptOwnership
nonpayablefunction acceptOwnership()
drainTo
nonpayablefunction drainTo(address[] _tokens, address _dest)
enable
nonpayablefunction enable(bytes32 _tree, bytes32 _root)
enableAndSetClaimed
nonpayablefunction enableAndSetClaimed(bytes32 _tree, bytes32 _root, address[] _accounts)
renounceOwnership
nonpayablefunction renounceOwnership()
setAdmin
nonpayablefunction setAdmin(address _admin)
setMax
nonpayablefunction setMax(uint256 _max)
setScale
nonpayablefunction setScale(uint256 _scale)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unsetAdmin
nonpayablefunction unsetAdmin(address _admin)
withdraw
nonpayablefunction withdraw(tuple[] _claims, address _token, uint256 _minimum, address _recipient) returns (uint256 _amount)
events
DrainTo
event DrainTo(address[] tokens, address dest)
Enable
event Enable(bytes32 tree, bytes32 root)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
SetAdmin
event SetAdmin(address indexed admin)
SetMax
event SetMax(uint256 max)
SetScale
event SetScale(uint256 scale)
UnsetAdmin
event UnsetAdmin(address indexed admin)
UseClaim
event UseClaim(address indexed account, bytes32 indexed tree)
Withdraw
event Withdraw(address indexed account, address indexed recipient, address indexed token, uint256 value, uint256 amount)
errors
AddressInvalid
error AddressInvalid(address)
AdminNotSet
error AdminNotSet(address)
AmountInsufficient
error AmountInsufficient(uint256)
ClaimAlreadyUsed
error ClaimAlreadyUsed()
ClaimsNotProvided
error ClaimsNotProvided()
MaxTooHigh
error MaxTooHigh(uint256)
ProofInvalid
error ProofInvalid(bytes32, bytes32)
ScaleTooHigh
error ScaleTooHigh(uint256)
TreeNotEnabled
error TreeNotEnabled(bytes32)
Unauthorized
error Unauthorized()
creation bytecode
0x60806040523480156200001157600080fd5b5060405162001fea38038062001fea83398101604081905262000034916200010b565b6200003f336200009d565b60648111156200006a5760405163b200946f60e01b8152600481018290526024015b60405180910390fd5b604d821115620000915760405163321a710f60e21b81526004810183905260240162000061565b60035560025562000130565b600180546001600160a01b0319169055620000b881620000bb565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156200011f57600080fd5b505080516020909101519092909150565b611eaa80620001406000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80636ac5db19116100d8578063b09013a21161008c578063e30c397811610066578063e30c397814610348578063f2fde38b14610366578063f51e181a1461037957600080fd5b8063b09013a2146102f4578063b86675e014610307578063dfcae6221461031a57600080fd5b8063715018a6116100bd578063715018a6146102a557806379ba5097146102ad5780638da5cb5b146102b557600080fd5b80636ac5db1914610289578063704b6c021461029257600080fd5b806341aa0b371161012f5780634d253b50116101145780634d253b50146102355780635a1187b7146102485780635a1d249d1461027657600080fd5b806341aa0b37146101ff578063429b62e51461021257600080fd5b8063249da60511610160578063249da605146101a45780633a1c1a6f146101cc5780633edc3519146101ec57600080fd5b80631fc48d281461017c5780631fe9eabc14610191575b600080fd5b61018f61018a3660046115d4565b610382565b005b61018f61019f3660046115f6565b61041a565b6101b76101b2366004611772565b6104a1565b60405190151581526020015b60405180910390f35b6101df6101da36600461181f565b61050e565b6040516101c39190611872565b61018f6101fa3660046115f6565b61060b565b61018f61020d3660046118b8565b610686565b6101b7610220366004611965565b60046020526000908152604090205460ff1681565b61018f610243366004611965565b61088c565b6102686102563660046115f6565b60066020526000908152604090205481565b6040519081526020016101c3565b610268610284366004611980565b610984565b61026860035481565b61018f6102a0366004611965565b610a72565b61018f610b56565b61018f610b6a565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c3565b61018f6103023660046119ac565b610c1f565b610268610315366004611a00565b610d80565b6101b7610328366004611980565b600560209081526000928352604080842090915290825290205460ff1681565b60015473ffffffffffffffffffffffffffffffffffffffff166102cf565b61018f610374366004611965565b611060565b61026860025481565b3360009081526004602052604090205460ff166103cb576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602090815260409182902083905581518481529081018390527fd4ec60c08440ea870fccde76e064d496b2ba9fe0cb488d7788ab666d53ef7e8a910160405180910390a15050565b610422611110565b6064811115610465576040517fb200946f000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b60038190556040518181527fc2c862cda8964d16d060904e01f55bf7e4ea5e59759ca1c20db551079e0d5eed906020015b60405180910390a150565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152603481018390526000908190605401604051602081830303815290604052805190602001209050610502838683611191565b9150505b949350505050565b606060008267ffffffffffffffff81111561052b5761052b611638565b604051908082528060200260200182016040528015610554578160200160208202803683370190505b50905060005b83811015610602576005600086868481811061057857610578611b41565b90506020020135815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168282815181106105ea576105ea611b41565b9115156020928302919091019091015260010161055a565b50949350505050565b610613611110565b604d811115610651576040517fc869c43c0000000000000000000000000000000000000000000000000000000081526004810182905260240161045c565b60028190556040518181527fb7f1dd786998967316283c7e129a0bbeaf046b77f2f51afe39bb89a10f29a00e90602001610496565b3360009081526004602052604090205460ff166106cf576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526006602052604081205490036107305760008381526006602090815260409182902084905581518581529081018490527fd4ec60c08440ea870fccde76e064d496b2ba9fe0cb488d7788ab666d53ef7e8a910160405180910390a15b60005b81518110156108865760056000858152602001908152602001600020600083838151811061076357610763611b41565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160009081205460ff161515900361087e5760008481526005602052604081208351600192908590859081106107c7576107c7611b41565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508382828151811061083357610833611b41565b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fb3cf16e0e9fea81a7e797f97fe0fecaae4731866107df01f9916b83a7ff062b260405160405180910390a35b600101610733565b50505050565b610894611110565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604090205460ff161515600114610910576040517f4dc6d0ac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161045c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f529cb60a080fcfbcdedc90ee02044792419af59c6a6b701dafc80aa9be2747c79190a250565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156109f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a179190611b70565b9050600084600254600a610a2b9190611cd8565b610a359190611ce4565b90506064818387600354610a499190611cf7565b610a539190611cf7565b610a5d9190611d0e565b610a679190611d0e565b925050505b92915050565b610a7a611110565b73ffffffffffffffffffffffffffffffffffffffff8116610adf576040517f8641435100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161045c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a19190a250565b610b5e611110565b610b6860006111a7565b565b600154339073ffffffffffffffffffffffffffffffffffffffff168114610c13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e65720000000000000000000000000000000000000000000000606482015260840161045c565b610c1c816111a7565b50565b610c27611110565b60005b82811015610d3f576000848483818110610c4657610c46611b41565b9050602002016020810190610c5b9190611965565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa158015610cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ceb9190611b70565b9050610d368382878786818110610d0457610d04611b41565b9050602002016020810190610d199190611965565b73ffffffffffffffffffffffffffffffffffffffff1691906111d8565b50600101610c2a565b507f4b713dd63c7c270b811762a754d42e5d79ea1ba9d3a0899d73eab3e38b50cd6f838383604051610d7393929190611d49565b60405180910390a1505050565b600080855111610dbc576040517f872e34a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160608082018352600080835260208301819052928201529080805b8851811015610f9257888181518110610df657610df6611b41565b602002602001015193506006600085600001518152602001908152602001600020549250826000801b03610e5c5783516040517f5b0c2226000000000000000000000000000000000000000000000000000000008152600481019190915260240161045c565b8351600090815260056020908152604080832033845290915290205460ff1615610eb2576040517fead7077b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ec63384866020015187604001516104a1565b610f095783516040517f0397af8f00000000000000000000000000000000000000000000000000000000815260048101919091526024810184905260440161045c565b6020840151610f189083611ce4565b8451600090815260056020908152604080832033808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055875190519395509290917fb3cf16e0e9fea81a7e797f97fe0fecaae4731866107df01f9916b83a7ff062b291a3600101610ddb565b50610f9d8188610984565b935085841015610fdc576040517fdc998f2b0000000000000000000000000000000000000000000000000000000081526004810185905260240161045c565b610ffd73ffffffffffffffffffffffffffffffffffffffff881686866111d8565b604080518281526020810186905273ffffffffffffffffffffffffffffffffffffffff808a16929088169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4505050949350505050565b611068611110565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556110cb60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045c565b60008261119e858461126a565b14949350505050565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610c1c816112ad565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611265908490611322565b505050565b600081815b84518110156112a55761129b8286838151811061128e5761128e611b41565b6020026020010151611431565b915060010161126f565b509392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611384826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166114639092919063ffffffff16565b90508051600014806113a55750808060200190518101906113a59190611dc1565b611265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161045c565b600081831061144d57600082815260208490526040902061145c565b60008381526020839052604090205b9392505050565b60606105068484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114979190611e07565b60006040518083038185875af1925050503d80600081146114d4576040519150601f19603f3d011682016040523d82523d6000602084013e6114d9565b606091505b50915091506114ea878383876114f5565b979650505050505050565b6060831561158b5782516000036115845773ffffffffffffffffffffffffffffffffffffffff85163b611584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045c565b5081610506565b61050683838151156115a05781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045c9190611e23565b600080604083850312156115e757600080fd5b50508035926020909101359150565b60006020828403121561160857600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461163357600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561168a5761168a611638565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156116d7576116d7611638565b604052919050565b600067ffffffffffffffff8211156116f9576116f9611638565b5060051b60200190565b600082601f83011261171457600080fd5b81356020611729611724836116df565b611690565b8083825260208201915060208460051b87010193508684111561174b57600080fd5b602086015b848110156117675780358352918301918301611750565b509695505050505050565b6000806000806080858703121561178857600080fd5b6117918561160f565b93506020850135925060408501359150606085013567ffffffffffffffff8111156117bb57600080fd5b6117c787828801611703565b91505092959194509250565b60008083601f8401126117e557600080fd5b50813567ffffffffffffffff8111156117fd57600080fd5b6020830191508360208260051b850101111561181857600080fd5b9250929050565b60008060006040848603121561183457600080fd5b61183d8461160f565b9250602084013567ffffffffffffffff81111561185957600080fd5b611865868287016117d3565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b818110156118ac57835115158352928401929184019160010161188e565b50909695505050505050565b6000806000606084860312156118cd57600080fd5b833592506020808501359250604085013567ffffffffffffffff8111156118f357600080fd5b8501601f8101871361190457600080fd5b8035611912611724826116df565b81815260059190911b8201830190838101908983111561193157600080fd5b928401925b82841015611956576119478461160f565b82529284019290840190611936565b80955050505050509250925092565b60006020828403121561197757600080fd5b61145c8261160f565b6000806040838503121561199357600080fd5b823591506119a36020840161160f565b90509250929050565b6000806000604084860312156119c157600080fd5b833567ffffffffffffffff8111156119d857600080fd5b6119e4868287016117d3565b90945092506119f790506020850161160f565b90509250925092565b60008060008060808587031215611a1657600080fd5b67ffffffffffffffff8086351115611a2d57600080fd5b8535860187601f820112611a4057600080fd5b611a4d61172482356116df565b81358082526020808301929160051b8401018a811115611a6c57600080fd5b602084015b81811015611b0c578581351115611a8757600080fd5b8035850160607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828f03011215611abd57600080fd5b611ac5611667565b6020820135815260408201356020820152606082013588811115611ae857600080fd5b611af78f602083860101611703565b60408301525085525060209384019301611a71565b505080975050505050611b216020860161160f565b925060408501359150611b366060860161160f565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611b8257600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115611c1157817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611bf757611bf7611b89565b80851615611c0457918102915b93841c9390800290611bbd565b509250929050565b600082611c2857506001610a6c565b81611c3557506000610a6c565b8160018114611c4b5760028114611c5557611c71565b6001915050610a6c565b60ff841115611c6657611c66611b89565b50506001821b610a6c565b5060208310610133831016604e8410600b8410161715611c94575081810a610a6c565b611c9e8383611bb8565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611cd057611cd0611b89565b029392505050565b600061145c8383611c19565b80820180821115610a6c57610a6c611b89565b8082028115828204841417610a6c57610a6c611b89565b600082611d44577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6040808252810183905260008460608301825b86811015611d975773ffffffffffffffffffffffffffffffffffffffff611d828461160f565b16825260209283019290910190600101611d5c565b50809250505073ffffffffffffffffffffffffffffffffffffffff83166020830152949350505050565b600060208284031215611dd357600080fd5b8151801515811461145c57600080fd5b60005b83811015611dfe578181015183820152602001611de6565b50506000910152565b60008251611e19818460208701611de3565b9190910192915050565b6020815260008251806020840152611e42816040850160208701611de3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220e959497d1a5dc96c842b8cca6b1b5585bb68d5652d546051ccaa5fa59cdc395d64736f6c63430008170033000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000064