More Info
Private Name Tags
ContractCreator
Multichain Info
No addresses found
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xdeC8B513...3ee5aF240 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Vyper_contract
Compiler Version
vyper:0.2.12
Contract Source Code (Vyper language format)
# @version 0.2.12 """ @title RewardClaimer @author Curve.Fi @license MIT @notice Passthrough to allow claiming from multiple reward streamers """ from vyper.interfaces import ERC20 interface RewardStream: def get_reward(): nonpayable struct RewardData: claim: address reward: address owner: public(address) future_owner: public(address) reward_receiver: public(address) reward_data: public(RewardData[4]) @external def __init__(_owner: address, _reward_receiver: address): """ @notice Contract constructor @param _owner Owner address @param _reward_receiver Reward receiver address """ self.owner = _owner self.reward_receiver = _reward_receiver @external def get_reward(): """ @notice Claim all available rewards @dev Only callable by the reward receiver """ assert msg.sender == self.reward_receiver for i in range(4): data: RewardData = self.reward_data[i] if data.reward == ZERO_ADDRESS: break RewardStream(data.claim).get_reward() amount: uint256 = ERC20(data.reward).balanceOf(self) if amount > 0: assert ERC20(data.reward).transfer(msg.sender, amount) @external def set_reward_data(_idx: uint256, _claim: address, _reward: address): """ @notice Set data about a reward streamer @dev Only callable by the owner @param _idx Index of `reward_data` to modify @param _claim Address of the streamer to claim from @param _reward Address of the reward token """ assert msg.sender == self.owner self.reward_data[_idx] = RewardData({claim: _claim, reward: _reward}) @external def commit_transfer_ownership(_owner: address): """ @notice Initiate ownership tansfer of the contract @param _owner Address to have ownership transferred to """ assert msg.sender == self.owner # dev: only owner self.future_owner = _owner @external def accept_transfer_ownership(): """ @notice Accept a pending ownership transfer """ owner: address = self.future_owner assert msg.sender == owner # dev: only new owner self.owner = owner
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_owner","type":"address"},{"name":"_reward_receiver","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"get_reward","inputs":[],"outputs":[],"gas":60808},{"stateMutability":"nonpayable","type":"function","name":"set_reward_data","inputs":[{"name":"_idx","type":"uint256"},{"name":"_claim","type":"address"},{"name":"_reward","type":"address"}],"outputs":[],"gas":72916},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"_owner","type":"address"}],"outputs":[],"gas":37605},{"stateMutability":"nonpayable","type":"function","name":"accept_transfer_ownership","inputs":[],"outputs":[],"gas":37550},{"stateMutability":"view","type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2508},{"stateMutability":"view","type":"function","name":"future_owner","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2538},{"stateMutability":"view","type":"function","name":"reward_receiver","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2568},{"stateMutability":"view","type":"function","name":"reward_data","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"claim","type":"address"},{"name":"reward","type":"address"}],"gas":5241}]
Deployed Bytecode
0x600436101561000d576102ec565b600035601c52600051341561002157600080fd5b631afe22a681141561017357600254331461003b57600080fd5b61014060006004818352015b610160610140516004811061005b57600080fd5b600360c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015250506101805115156100955761016f565b610160513b6100a357600080fd5b600060006004631afe22a66101a0526101bc6000610160515af16100c657600080fd5b602061024060246370a082316101c052306101e0526101dc610180515afa6100ed57600080fd5b601f3d116100fa57600080fd5b600050610240516101a05260006101a051111561015f576020610260604463a9059cbb6101c052336101e0526101a051610200526101dc6000610180515af161014257600080fd5b601f3d1161014f57600080fd5b6000506102605161015f57600080fd5b8151600101808352811415610047575b5050005b638de099988114156101e05760243560a01c1561018f57600080fd5b60443560a01c1561019f57600080fd5b60005433146101ad57600080fd5b600435600481106101bd57600080fd5b600360c052602060c0200160c052602060c0206024358155604435600182015550005b636b441a408114156102125760043560a01c156101fc57600080fd5b600054331461020a57600080fd5b600435600155005b63e5ea47b881141561023d576001546101405261014051331461023457600080fd5b61014051600055005b638da5cb5b8114156102555760005460005260206000f35b631ec0cdc181141561026d5760015460005260206000f35b63b618ba628114156102855760025460005260206000f35b6393af73ed8114156102ea57600435600481106102a157600080fd5b600360c052602060c020016101408080808460c052602060c0205481525050602081019050808060018560c052602060c02001548152505060409050905060c05260c051610140f35b505b60006000fd
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.