POL Price: $0.214229 (+0.74%)
 

Overview

POL Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo0 POL

POL Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set_reward_data160586322021-06-23 14:26:401362 days ago1624458400IN
Curve.fi: Aave Reward Claimer
0 POL0.000091381.332
Set_reward_data160585922021-06-23 14:25:161362 days ago1624458316IN
Curve.fi: Aave Reward Claimer
0 POL0.000076141.11

Parent Transaction Hash Block From To
View All Internal Transactions
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

Optimization Enabled:
N/A

Other Settings:
default evmVersion, MIT license

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

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

Block Transaction Gas Used Reward
view all blocks produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.