ETH Price: $3,089.50 (-0.65%)

Contract

0x16a7DA911A4DD1d83F3fF066fE28F3C792C50d90

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set_reward_data9035742021-09-15 8:55:091551 days ago1631696109IN
0x16a7DA91...792C50d90
0 ETH0.000738846296 ETH0.6428339

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
720864212023-03-21 10:17:52999 days ago1679393872
0x16a7DA91...792C50d90
0 ETH
720864212023-03-21 10:17:52999 days ago1679393872
0x16a7DA91...792C50d90
0 ETH
720864212023-03-21 10:17:52999 days ago1679393872
0x16a7DA91...792C50d90
0 ETH
720669552023-03-21 8:57:41999 days ago1679389061
0x16a7DA91...792C50d90
0 ETH
720669552023-03-21 8:57:41999 days ago1679389061
0x16a7DA91...792C50d90
0 ETH
720669552023-03-21 8:57:41999 days ago1679389061
0x16a7DA91...792C50d90
0 ETH
720520842023-03-21 7:56:54999 days ago1679385414
0x16a7DA91...792C50d90
0 ETH
720520842023-03-21 7:56:54999 days ago1679385414
0x16a7DA91...792C50d90
0 ETH
720520842023-03-21 7:56:54999 days ago1679385414
0x16a7DA91...792C50d90
0 ETH
720202792023-03-21 5:46:12999 days ago1679377572
0x16a7DA91...792C50d90
0 ETH
720202792023-03-21 5:46:12999 days ago1679377572
0x16a7DA91...792C50d90
0 ETH
720202792023-03-21 5:46:12999 days ago1679377572
0x16a7DA91...792C50d90
0 ETH
720015262023-03-21 4:28:41999 days ago1679372921
0x16a7DA91...792C50d90
0 ETH
720015262023-03-21 4:28:41999 days ago1679372921
0x16a7DA91...792C50d90
0 ETH
720015262023-03-21 4:28:41999 days ago1679372921
0x16a7DA91...792C50d90
0 ETH
719820192023-03-21 3:07:42999 days ago1679368062
0x16a7DA91...792C50d90
0 ETH
719820192023-03-21 3:07:42999 days ago1679368062
0x16a7DA91...792C50d90
0 ETH
719820192023-03-21 3:07:42999 days ago1679368062
0x16a7DA91...792C50d90
0 ETH
719644902023-03-21 1:54:50999 days ago1679363690
0x16a7DA91...792C50d90
0 ETH
719644902023-03-21 1:54:50999 days ago1679363690
0x16a7DA91...792C50d90
0 ETH
719644902023-03-21 1:54:50999 days ago1679363690
0x16a7DA91...792C50d90
0 ETH
719489842023-03-21 0:49:02999 days ago1679359742
0x16a7DA91...792C50d90
0 ETH
719489842023-03-21 0:49:02999 days ago1679359742
0x16a7DA91...792C50d90
0 ETH
719489842023-03-21 0:49:02999 days ago1679359742
0x16a7DA91...792C50d90
0 ETH
719242092023-03-20 23:03:16999 days ago1679353396
0x16a7DA91...792C50d90
0 ETH
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.16

Optimization Enabled:
N/A

Other Settings:
default evmVersion, MIT license

Contract Source Code (Vyper language format)

# @version 0.2.16
"""
@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

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":59976},{"stateMutability":"nonpayable","type":"function","name":"set_reward_data","inputs":[{"name":"_idx","type":"uint256"},{"name":"_claim","type":"address"},{"name":"_reward","type":"address"}],"outputs":[],"gas":72780},{"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":5033}]

60406102cf6101403960206102cf60c03960c05160a01c6102ca57602060206102cf0160c03960c05160a01c6102ca5761014051600055610160516002556102b256600436101561000d57610265565b600035601c526000513461026b57631afe22a68114156101345760025433141561026b5761014060006004818352015b610160600261014051600481101561026b5702600301805482526001810154826020015250506101805161007057610130565b610160513b1561026b57600060006004631afe22a66101a0526101bc6000610160515af11561026b57602061024060246370a082316101c052306101e0526101dc610180515afa1561026b57601f3d111561026b57600050610240516101a05260006101a051111561011f576020610260604463a9059cbb6101c052336101e0526101a051610200526101dc6000610180515af11561026b57601f3d111561026b57600050610260511561026b575b5b815160010180835281141561003d575b5050005b638de099988114156101805760243560a01c61026b5760443560a01c61026b5760005433141561026b576002600435600481101561026b57026003016024358155604435600182015550005b636b441a408114156101a85760043560a01c61026b5760005433141561026b57600435600155005b63e5ea47b88114156101cf57600154610140526101405133141561026b5761014051600055005b638da5cb5b8114156101e75760005460005260206000f35b631ec0cdc18114156101ff5760015460005260206000f35b63b618ba628114156102175760025460005260206000f35b6393af73ed811415610263576002600435600481101561026b5702600301610140808080845481525050602081019050808060018501548152505060409050905060c05260c051610140f35b505b60006000fd5b600080fd5b6100426102b2036100426000396100426102b2036000f35b600080fd0000000000000000000000007eeac6cddbd1d0b8af061742d41877d7f707289a000000000000000000000000bf7e49483881c76487b0989cd7d9a8239b20ca41

Deployed Bytecode

0x600436101561000d57610265565b600035601c526000513461026b57631afe22a68114156101345760025433141561026b5761014060006004818352015b610160600261014051600481101561026b5702600301805482526001810154826020015250506101805161007057610130565b610160513b1561026b57600060006004631afe22a66101a0526101bc6000610160515af11561026b57602061024060246370a082316101c052306101e0526101dc610180515afa1561026b57601f3d111561026b57600050610240516101a05260006101a051111561011f576020610260604463a9059cbb6101c052336101e0526101a051610200526101dc6000610180515af11561026b57601f3d111561026b57600050610260511561026b575b5b815160010180835281141561003d575b5050005b638de099988114156101805760243560a01c61026b5760443560a01c61026b5760005433141561026b576002600435600481101561026b57026003016024358155604435600182015550005b636b441a408114156101a85760043560a01c61026b5760005433141561026b57600435600155005b63e5ea47b88114156101cf57600154610140526101405133141561026b5761014051600055005b638da5cb5b8114156101e75760005460005260206000f35b631ec0cdc18114156101ff5760015460005260206000f35b63b618ba628114156102175760025460005260206000f35b6393af73ed811415610263576002600435600481101561026b5702600301610140808080845481525050602081019050808060018501548152505060409050905060c05260c051610140f35b505b60006000fd5b600080fd

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007eeac6cddbd1d0b8af061742d41877d7f707289a000000000000000000000000bf7e49483881c76487b0989cd7d9a8239b20ca41

-----Decoded View---------------
Arg [0] : _owner (address): 0x7EeAC6CDdbd1D0B8aF061742D41877D7F707289a
Arg [1] : _reward_receiver (address): 0xbF7E49483881C76487b0989CD7d9A8239B20CA41

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007eeac6cddbd1d0b8af061742d41877d7f707289a
Arg [1] : 000000000000000000000000bf7e49483881c76487b0989cd7d9a8239b20ca41


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.