Contract 0x97e2768e8e73511ca874545dc5ff8067eb19b787 4

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xa17c50ab7c618af148fd50444fbfa7ddfb5ae8af80db277758a2c8829f3e56f0Claim_rewards580388262023-02-04 20:13:403 days 10 hrs ago0xa2991019fe124ca4ff5c5f526e516ab838a62280 IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00004423
0x9b67da802597f319e811f47f216be382248a695b10910c90448437bb33f33d23Withdraw580293622023-02-04 19:18:033 days 11 hrs ago0xb4b4aebf8e6f1a46c331706ad544188e4975f6bb IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00005259
0xd271af0aa09dc0de6c9fd1f2078392d9228eb2b956b317d6c52477e538d0c386Withdraw579435902023-02-04 12:11:313 days 18 hrs ago0x92a7662a87f98672e42012743a348296d38ae9ad IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00003878
0x2c6646f8c9d4441580dcbc17cfdb6edcbf1511e976313a49139420793b0df816Claim_rewards579434032023-02-04 12:10:403 days 18 hrs ago0x92a7662a87f98672e42012743a348296d38ae9ad IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.0000448
0x687e923f1f05b9b49c2a798fce834a1f0dafc9f449d7294a65c7ddd6b973592bWithdraw576030142023-02-03 5:23:575 days 1 hr ago0x9562339b4f94b28613ada8ad35e698d96c44fcea IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00004799
0x7b74ffa2e49cbbb0233d71647accd6527643ec5cc10d2111aebe91f6363516d7Claim_rewards575916822023-02-03 4:10:315 days 2 hrs ago0x9562339b4f94b28613ada8ad35e698d96c44fcea IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00004556
0x2896d4786c5dbd453cb3bf091fc9f1a48da6ce99e11a2678353d5e1bcc392dabClaim_rewards569119622023-01-31 15:14:497 days 15 hrs ago0xcdb7361e0793350be029f2b1139621597e4cb053 IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00005445
0xce68e383cf04ae87b1dac19c4f0be9ace94b51964ac6e493f163ccc6d55449bbWithdraw568481982023-01-31 9:38:227 days 21 hrs ago0xf9c32de1c5861fa33100207d9b353c9907501af0 IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00003673
0xd185cfa918c5bb91f5427ce7805599e4639973a3c0c41542da335c52f8341fabWithdraw550191772023-01-23 23:02:0215 days 7 hrs ago0xc271ed8a1c07d43736d6c59f70f1c3d50a494eab IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00003535
0xd61e1c41d2e5da05eecde8c172dff1b452a8abf181b57ac5f6c1212cfe03e841Claim_rewards550190512023-01-23 23:01:1415 days 8 hrs ago0xc271ed8a1c07d43736d6c59f70f1c3d50a494eab IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00003795
0xed1d1a65379aca04ad91917947dd821f881f3467b9a9808dfb4d1ef6c94228e0Withdraw549677972023-01-23 17:41:1715 days 13 hrs ago0xe6bdc7b353f335fdd3a226f1b9474ec51ce308ad IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00005114
0xbcf2ebe4337303e957d559e1d4dd2f5457075138a8c7cbe7ca5341f03afe9d9bClaim_rewards549672552023-01-23 17:37:4815 days 13 hrs ago0xe6bdc7b353f335fdd3a226f1b9474ec51ce308ad IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00005553
0x294e7df810fa34b05f6d43a8b709b72fbb17052194b8bb023176d5b33a4ca019Withdraw544778122023-01-21 10:11:4517 days 20 hrs ago0x3d9c6a0c8b137d582c8a65da555d2ccb901be5d2 IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00003402
0xc3da89062dcb6151e76b6b02d4055f97eb94458e7fcac1a2d691e616c1dbe7d9Withdraw542157832023-01-20 3:55:1719 days 3 hrs ago0xa357f162fe9c383edeee81fbc905c4bc7fca166f IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00004268
0x3bf474ce39e591d062035a6a475de594135aadccbad8edaa28fbe5ec1da9f1ceClaim_rewards539138072023-01-18 15:31:1720 days 15 hrs ago0xa4f93909c3c94c99c6dd2f8ed1b359a6b915f996 IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00004209
0x05f02c80e506a47ace54fc234e183ee67d01faea13ba8fe97b7ddf4a1707eb82Withdraw538483232023-01-18 8:47:1520 days 22 hrs ago0xba2ef5189b762bd4c9e7f0b50fbbab65193935e8 IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00003229
0x48f6f187b603d79e5bf23b4cedbc4216706e430c4bec3fbb4d95e696e7bb6b11Claim_rewards538483112023-01-18 8:47:1120 days 22 hrs ago0xba2ef5189b762bd4c9e7f0b50fbbab65193935e8 IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00003659
0x410153394f5b7dd2b6994b43ae71758c3031f8502cb939608c2b357e5c82a1cdClaim_rewards535765472023-01-17 0:11:5722 days 6 hrs ago0x1371ec86d56e21136f6650685713cbfd12910172 IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00005089
0xd63335dbcad0a42a65479f793171f663c7fd91f41cb7369de41c20685c68c845Withdraw535761082023-01-17 0:09:1322 days 6 hrs ago0x1371ec86d56e21136f6650685713cbfd12910172 IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00005917
0x49b9afd3f1d5620af61e55a107d64b8067b29e615dc647a83d421237e46e7c50Claim_rewards531278792023-01-15 0:36:3124 days 6 hrs ago0xa536eddf11bc7436f4df606ea350a10c028c820d IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00003699
0xf134421da3f1462d58a5bb5083430d8a2a913f5cfac4477cb209d5d29d97a222Withdraw530757092023-01-14 18:05:3824 days 12 hrs ago0xdcf8f946375f680831e77dbb0288e9ddee6f79eb IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00004675
0x8053b8f700489ddf03003b7c731e620ba0396b11e934c59177c12a008947a2e1Claim_rewards527948432023-01-13 14:43:2725 days 16 hrs ago0x2325a5458aabbb07e41ce0197fbad1447c0008e6 IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00004655
0xe73f4ea6fccb652ba17c841b13eea2bcccaff5c421272d0615c3dd0957a1979bDeposit518927232023-01-09 17:58:3929 days 13 hrs ago0xb5613c9c6187d926c91f6c4131c7d144ec0cc999 IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00006719
0x2f210438401f7d421c2f2053e4af811dd53398bd1e8482a87842f64f588f8b43Claim_rewards518831352023-01-09 17:03:3129 days 13 hrs ago0x8c883070bd7c74504802d11f54c2029c172108ce IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00007019
0x07e39c5979b0504042966832e31e8d2cfc4d089c4cf11ab9ba5d03b760c62533Claim_rewards507037612023-01-04 4:33:3735 days 2 hrs ago0xa02c2ce3c2da71534e80a4e01ef8bc5f0c4b45d2 IN  0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH0.00003741
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x27dce0a2aba37b8938924c57748e4dea81d1d5bf3617a309deb93a78a7324672587575672023-02-07 9:57:5121 hrs 3 mins ago 0xb84d987d24f36ea0ccb8508313c6f0151d943556 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0xc876cfcaba69ce0ef23e569d0e4292f6891809783cbc67d6ef3fd22bbc4d3ce9587573402023-02-07 9:56:5321 hrs 4 mins ago 0xb84d987d24f36ea0ccb8508313c6f0151d943556 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0xf9600c2352cda63eea5ca32dc1c6fe7813607d1a690ba6479009ddda367ebc87585672182023-02-06 17:19:291 day 13 hrs ago 0xc0ae57c0842123ef24bb6b716ff128c11ff87b04 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0x5206a81c1d0cda47740ddf0f461f250d5dc2e590d74b0c503549fd6f685e281b581188452023-02-05 4:01:003 days 3 hrs ago 0xb210ba6fb20746f2d1d68909b6c8d4affd80991d 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0xac4d2678dcdfe45c429c561f39541e1830d9a7ea004f46bf5546717159f44376581187922023-02-05 4:00:423 days 3 hrs ago 0xef93067b6f68966f4819d411a0b02fc3da60efdd 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0xcfc5d9bf294d9f6403996698771087d8018fa3432bb86c8be78ae243073f4dc9581187892023-02-05 4:00:413 days 3 hrs ago 0x6c47e2877e33bd80022a40865dbe98de52515079 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0xb3af77187fd3821292f35ba1163a5f5a9ebe836d3d5c459e3e6ca2a316d4211e581187762023-02-05 4:00:373 days 3 hrs ago 0xaff4c9549fe13cc4268071b099707ca6bd9b188c 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0x38c78d0250e5f76167da82dd36535cac463ee03dfa9b127828a6aab08d96232a581143182023-02-05 3:32:113 days 3 hrs ago 0xc26b1cb479cd6516b7ee4f08c692027ff399d26a 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0xf00ff6d0c30e73765299723a4f8f21371ee1d95f2d4157f89f7bc87f7b1d81ae580704992023-02-04 23:14:103 days 7 hrs ago 0x801415312d1f2446c875419df5829137e22b4530 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0x7e4b40dea50605bb169e52ebd9edb31497e319f9f4027c1abf41c1e2f1497f1f580703752023-02-04 23:13:293 days 7 hrs ago 0x801415312d1f2446c875419df5829137e22b4530 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0xf79b3ec4f9902d26f92b1abf5011ea883feffc95614a8a5a5d4329e9736ecd89580562732023-02-04 21:53:183 days 9 hrs ago 0x97e2768e8e73511ca874545dc5ff8067eb19b787 0x8e0b8c8bb9db49a46697f3a5bb8a308e744821d20 ETH
0xf79b3ec4f9902d26f92b1abf5011ea883feffc95614a8a5a5d4329e9736ecd89580562732023-02-04 21:53:183 days 9 hrs ago 0x97e2768e8e73511ca874545dc5ff8067eb19b7870x11cdb42b0eb46d95f990bedd4695a6e3fa0349780 ETH
0xf79b3ec4f9902d26f92b1abf5011ea883feffc95614a8a5a5d4329e9736ecd89580562732023-02-04 21:53:183 days 9 hrs ago 0x6d98f80d9cfb549264b4b7ded12426eb6ea47800 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0xf79b3ec4f9902d26f92b1abf5011ea883feffc95614a8a5a5d4329e9736ecd89580562732023-02-04 21:53:183 days 9 hrs ago 0x6d98f80d9cfb549264b4b7ded12426eb6ea47800 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0xf79b3ec4f9902d26f92b1abf5011ea883feffc95614a8a5a5d4329e9736ecd89580562732023-02-04 21:53:183 days 9 hrs ago 0x6d98f80d9cfb549264b4b7ded12426eb6ea47800 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0xf79b3ec4f9902d26f92b1abf5011ea883feffc95614a8a5a5d4329e9736ecd89580562732023-02-04 21:53:183 days 9 hrs ago 0x6d98f80d9cfb549264b4b7ded12426eb6ea47800 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0xf79b3ec4f9902d26f92b1abf5011ea883feffc95614a8a5a5d4329e9736ecd89580562732023-02-04 21:53:183 days 9 hrs ago 0x97e2768e8e73511ca874545dc5ff8067eb19b7870x11cdb42b0eb46d95f990bedd4695a6e3fa0349780 ETH
0xf79b3ec4f9902d26f92b1abf5011ea883feffc95614a8a5a5d4329e9736ecd89580562732023-02-04 21:53:183 days 9 hrs ago 0x97e2768e8e73511ca874545dc5ff8067eb19b787 0x4f3e8f405cf5afc05d68142f3783bdfe138115220 ETH
0xf79b3ec4f9902d26f92b1abf5011ea883feffc95614a8a5a5d4329e9736ecd89580562732023-02-04 21:53:183 days 9 hrs ago 0x6d98f80d9cfb549264b4b7ded12426eb6ea47800 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0xf79b3ec4f9902d26f92b1abf5011ea883feffc95614a8a5a5d4329e9736ecd89580562732023-02-04 21:53:183 days 9 hrs ago 0x6d98f80d9cfb549264b4b7ded12426eb6ea47800 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0x38254f3e6d1cb98c2a0dff7f5fe41dbc6d066bb90b87579b03ce66c4ab68ed3c580400042023-02-04 20:20:563 days 10 hrs ago 0x97e2768e8e73511ca874545dc5ff8067eb19b7870x11cdb42b0eb46d95f990bedd4695a6e3fa0349780 ETH
0x38254f3e6d1cb98c2a0dff7f5fe41dbc6d066bb90b87579b03ce66c4ab68ed3c580400042023-02-04 20:20:563 days 10 hrs ago 0x97e2768e8e73511ca874545dc5ff8067eb19b787 0x4f3e8f405cf5afc05d68142f3783bdfe138115220 ETH
0x38254f3e6d1cb98c2a0dff7f5fe41dbc6d066bb90b87579b03ce66c4ab68ed3c580400042023-02-04 20:20:563 days 10 hrs ago 0x5e679692ca28aa61882c6d6863451fd2334a54ab 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0x1217447205f6acd268bcef47b776478ad8f5037b6d1e12830658042d6d11cbca580399062023-02-04 20:20:263 days 10 hrs ago 0x5e679692ca28aa61882c6d6863451fd2334a54ab 0x97e2768e8e73511ca874545dc5ff8067eb19b7870 ETH
0xa17c50ab7c618af148fd50444fbfa7ddfb5ae8af80db277758a2c8829f3e56f0580388262023-02-04 20:13:403 days 10 hrs ago 0x97e2768e8e73511ca874545dc5ff8067eb19b7870x00000000000000000000000000000000000000040 ETH
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xbf7e49483881c76487b0989cd7d9a8239b20ca41

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.12

Optimization Enabled:
N/A

Other Settings:
, MIT license

Contract Source Code (Vyper language format)

# @version 0.2.12
"""
@title Rewards-Only Gauge
@author Curve Finance
@license MIT
@notice Distribution of third-party rewards without CRV
"""

from vyper.interfaces import ERC20

implements: ERC20


interface ERC20Extended:
    def symbol() -> String[26]: view


event Deposit:
    provider: indexed(address)
    value: uint256

event Withdraw:
    provider: indexed(address)
    value: uint256

event CommitOwnership:
    admin: address

event ApplyOwnership:
    admin: address

event Transfer:
    _from: indexed(address)
    _to: indexed(address)
    _value: uint256

event Approval:
    _owner: indexed(address)
    _spender: indexed(address)
    _value: uint256

MAX_REWARDS: constant(uint256) = 8
CLAIM_FREQUENCY: constant(uint256) = 3600

lp_token: public(address)

balanceOf: public(HashMap[address, uint256])
totalSupply: public(uint256)
allowance: public(HashMap[address, HashMap[address, uint256]])

name: public(String[64])
symbol: public(String[32])

# For tracking external rewards
reward_data: uint256
reward_tokens: public(address[MAX_REWARDS])
reward_balances: public(HashMap[address, uint256])
# claimant -> default reward receiver
rewards_receiver: public(HashMap[address, address])

claim_sig: public(Bytes[4])

# reward token -> integral
reward_integral: public(HashMap[address, uint256])

# reward token -> claiming address -> integral
reward_integral_for: public(HashMap[address, HashMap[address, uint256]])

# user -> [uint128 claimable amount][uint128 claimed amount]
claim_data: HashMap[address, HashMap[address, uint256]]

admin: public(address)
future_admin: public(address)  # Can and will be a smart contract


@external
def __init__( _admin: address, _lp_token: address):
    """
    @notice Contract constructor
    @param _admin Admin who can kill the gauge
    @param _lp_token Liquidity Pool contract address
    """

    symbol: String[26] = ERC20Extended(_lp_token).symbol()
    self.name = concat("Curve.fi ", symbol, " RewardGauge Deposit")
    self.symbol = concat(symbol, "-gauge")

    self.lp_token = _lp_token
    self.admin = _admin


@view
@external
def decimals() -> uint256:
    """
    @notice Get the number of decimals for this token
    @dev Implemented as a view method to reduce gas costs
    @return uint256 decimal places
    """
    return 18


@internal
def _checkpoint_rewards(_user: address, _total_supply: uint256, _claim: bool, _receiver: address):
    """
    @notice Claim pending rewards and checkpoint rewards for a user
    """
    # claim from reward contract

    reward_data: uint256 = self.reward_data
    if _total_supply != 0 and reward_data != 0 and block.timestamp > shift(reward_data, -160) + CLAIM_FREQUENCY:
        reward_contract: address = convert(reward_data % 2**160, address)
        raw_call(reward_contract, self.claim_sig)  # dev: bad claim sig
        self.reward_data = convert(reward_contract, uint256) + shift(block.timestamp, 160)

    receiver: address = _receiver
    if _claim and receiver == ZERO_ADDRESS:
        # if receiver is not explicitly declared, check for default receiver
        receiver = self.rewards_receiver[_user]
        if receiver == ZERO_ADDRESS:
            # direct claims to user if no default receiver is set
            receiver = _user

    # calculate new user reward integral and transfer any owed rewards
    user_balance: uint256 = self.balanceOf[_user]
    for i in range(MAX_REWARDS):
        token: address = self.reward_tokens[i]
        if token == ZERO_ADDRESS:
            break
        dI: uint256 = 0
        if _total_supply != 0:
            token_balance: uint256 = ERC20(token).balanceOf(self)
            dI = 10**18 * (token_balance - self.reward_balances[token]) / _total_supply
            self.reward_balances[token] = token_balance
            if _user == ZERO_ADDRESS:
                if dI != 0:
                    self.reward_integral[token] += dI
                continue

        integral: uint256 = self.reward_integral[token] + dI
        if dI != 0:
            self.reward_integral[token] = integral

        integral_for: uint256 = self.reward_integral_for[token][_user]
        new_claimable: uint256 = 0
        if integral_for < integral:
            self.reward_integral_for[token][_user] = integral
            new_claimable = user_balance * (integral - integral_for) / 10**18

        claim_data: uint256 = self.claim_data[_user][token]
        total_claimable: uint256 = shift(claim_data, -128) + new_claimable
        if total_claimable > 0:
            total_claimed: uint256 = claim_data % 2 ** 128
            if _claim:
                response: Bytes[32] = raw_call(
                    token,
                    concat(
                        method_id("transfer(address,uint256)"),
                        convert(receiver, bytes32),
                        convert(total_claimable, bytes32),
                    ),
                    max_outsize=32,
                )
                if len(response) != 0:
                    assert convert(response, bool)
                self.reward_balances[token] -= total_claimable
                # update amount claimed (lower order bytes)
                self.claim_data[_user][token] = total_claimed + total_claimable
            elif new_claimable > 0:
                # update total_claimable (higher order bytes)
                self.claim_data[_user][token] = total_claimed + shift(total_claimable, 128)


@view
@external
def reward_contract() -> address:
    """
    @notice Address of the reward contract providing non-CRV incentives for this gauge
    @dev Returns `ZERO_ADDRESS` if there is no reward contract active
    """
    return convert(self.reward_data % 2**160, address)


@view
@external
def last_claim() -> uint256:
    """
    @notice Epoch timestamp of the last call to claim from `reward_contract`
    @dev Rewards are claimed at most once per hour in order to reduce gas costs
    """
    return shift(self.reward_data, -160)


@view
@external
def claimed_reward(_addr: address, _token: address) -> uint256:
    """
    @notice Get the number of already-claimed reward tokens for a user
    @param _addr Account to get reward amount for
    @param _token Token to get reward amount for
    @return uint256 Total amount of `_token` already claimed by `_addr`
    """
    return self.claim_data[_addr][_token] % 2**128


@view
@external
def claimable_reward(_addr: address, _token: address) -> uint256:
    """
    @notice Get the number of claimable reward tokens for a user
    @dev This call does not consider pending claimable amount in `reward_contract`.
         Off-chain callers should instead use `claimable_rewards_write` as a
         view method.
    @param _addr Account to get reward amount for
    @param _token Token to get reward amount for
    @return uint256 Claimable reward token amount
    """
    return shift(self.claim_data[_addr][_token], -128)


@external
@nonreentrant('lock')
def claimable_reward_write(_addr: address, _token: address) -> uint256:
    """
    @notice Get the number of claimable reward tokens for a user
    @dev This function should be manually changed to "view" in the ABI
         Calling it via a transaction will claim available reward tokens
    @param _addr Account to get reward amount for
    @param _token Token to get reward amount for
    @return uint256 Claimable reward token amount
    """
    if self.reward_tokens[0] != ZERO_ADDRESS:
        self._checkpoint_rewards(_addr, self.totalSupply, False, ZERO_ADDRESS)
    return shift(self.claim_data[_addr][_token], -128)


@external
def set_rewards_receiver(_receiver: address):
    """
    @notice Set the default reward receiver for the caller.
    @dev When set to ZERO_ADDRESS, rewards are sent to the caller
    @param _receiver Receiver address for any rewards claimed via `claim_rewards`
    """
    self.rewards_receiver[msg.sender] = _receiver


@external
@nonreentrant('lock')
def claim_rewards(_addr: address = msg.sender, _receiver: address = ZERO_ADDRESS):
    """
    @notice Claim available reward tokens for `_addr`
    @param _addr Address to claim for
    @param _receiver Address to transfer rewards to - if set to
                     ZERO_ADDRESS, uses the default reward receiver
                     for the caller
    """
    if _receiver != ZERO_ADDRESS:
        assert _addr == msg.sender  # dev: cannot redirect when claiming for another user
    self._checkpoint_rewards(_addr, self.totalSupply, True, _receiver)


@external
@nonreentrant('lock')
def deposit(_value: uint256, _addr: address = msg.sender, _claim_rewards: bool = False):
    """
    @notice Deposit `_value` LP tokens
    @dev Depositting also claims pending reward tokens
    @param _value Number of tokens to deposit
    @param _addr Address to deposit for
    """
    if _value != 0:
        reward_contract: address = convert(self.reward_data % 2**160, address)
        total_supply: uint256 = self.totalSupply

        self._checkpoint_rewards(_addr, total_supply, _claim_rewards, ZERO_ADDRESS)

        total_supply += _value
        new_balance: uint256 = self.balanceOf[_addr] + _value
        self.balanceOf[_addr] = new_balance
        self.totalSupply = total_supply

        ERC20(self.lp_token).transferFrom(msg.sender, self, _value)

    log Deposit(_addr, _value)
    log Transfer(ZERO_ADDRESS, _addr, _value)


@external
@nonreentrant('lock')
def withdraw(_value: uint256, _claim_rewards: bool = False):
    """
    @notice Withdraw `_value` LP tokens
    @dev Withdrawing also claims pending reward tokens
    @param _value Number of tokens to withdraw
    """
    if _value != 0:
        reward_contract: address = convert(self.reward_data % 2**160, address)
        total_supply: uint256 = self.totalSupply

        self._checkpoint_rewards(msg.sender, total_supply, _claim_rewards, ZERO_ADDRESS)

        total_supply -= _value
        new_balance: uint256 = self.balanceOf[msg.sender] - _value
        self.balanceOf[msg.sender] = new_balance
        self.totalSupply = total_supply

        ERC20(self.lp_token).transfer(msg.sender, _value)

    log Withdraw(msg.sender, _value)
    log Transfer(msg.sender, ZERO_ADDRESS, _value)


@internal
def _transfer(_from: address, _to: address, _value: uint256):
    reward_contract: address = convert(self.reward_data % 2**160, address)

    if _value != 0:
        total_supply: uint256 = self.totalSupply
        self._checkpoint_rewards(_from, total_supply, False, ZERO_ADDRESS)
        new_balance: uint256 = self.balanceOf[_from] - _value
        self.balanceOf[_from] = new_balance

        self._checkpoint_rewards(_to, total_supply, False, ZERO_ADDRESS)
        new_balance = self.balanceOf[_to] + _value
        self.balanceOf[_to] = new_balance

    log Transfer(_from, _to, _value)


@external
@nonreentrant('lock')
def transfer(_to : address, _value : uint256) -> bool:
    """
    @notice Transfer token for a specified address
    @dev Transferring claims pending reward tokens for the sender and receiver
    @param _to The address to transfer to.
    @param _value The amount to be transferred.
    """
    self._transfer(msg.sender, _to, _value)

    return True


@external
@nonreentrant('lock')
def transferFrom(_from : address, _to : address, _value : uint256) -> bool:
    """
    @notice Transfer tokens from one address to another.
    @dev Transferring claims pending reward tokens for the sender and receiver
    @param _from address The address which you want to send tokens from
    @param _to address The address which you want to transfer to
    @param _value uint256 the amount of tokens to be transferred
    """
    _allowance: uint256 = self.allowance[_from][msg.sender]
    if _allowance != MAX_UINT256:
        self.allowance[_from][msg.sender] = _allowance - _value

    self._transfer(_from, _to, _value)

    return True


@external
def approve(_spender : address, _value : uint256) -> bool:
    """
    @notice Approve the passed address to transfer the specified amount of
            tokens on behalf of msg.sender
    @dev Beware that changing an allowance via this method brings the risk
         that someone may use both the old and new allowance by unfortunate
         transaction ordering. This may be mitigated with the use of
         {incraseAllowance} and {decreaseAllowance}.
         https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    @param _spender The address which will transfer the funds
    @param _value The amount of tokens that may be transferred
    @return bool success
    """
    self.allowance[msg.sender][_spender] = _value
    log Approval(msg.sender, _spender, _value)

    return True


@external
def increaseAllowance(_spender: address, _added_value: uint256) -> bool:
    """
    @notice Increase the allowance granted to `_spender` by the caller
    @dev This is alternative to {approve} that can be used as a mitigation for
         the potential race condition
    @param _spender The address which will transfer the funds
    @param _added_value The amount of to increase the allowance
    @return bool success
    """
    allowance: uint256 = self.allowance[msg.sender][_spender] + _added_value
    self.allowance[msg.sender][_spender] = allowance

    log Approval(msg.sender, _spender, allowance)

    return True


@external
def decreaseAllowance(_spender: address, _subtracted_value: uint256) -> bool:
    """
    @notice Decrease the allowance granted to `_spender` by the caller
    @dev This is alternative to {approve} that can be used as a mitigation for
         the potential race condition
    @param _spender The address which will transfer the funds
    @param _subtracted_value The amount of to decrease the allowance
    @return bool success
    """
    allowance: uint256 = self.allowance[msg.sender][_spender] - _subtracted_value
    self.allowance[msg.sender][_spender] = allowance

    log Approval(msg.sender, _spender, allowance)

    return True


@external
@nonreentrant('lock')
def set_rewards(_reward_contract: address, _claim_sig: bytes32, _reward_tokens: address[MAX_REWARDS]):
    """
    @notice Set the active reward contract
    @dev A reward contract cannot be set while this contract has no deposits
    @param _reward_contract Reward contract address. Set to ZERO_ADDRESS to
                            disable staking.
    @param _claim_sig Four byte selectors for staking, withdrawing and claiming,
                 left padded with zero bytes. If the reward contract can
                 be claimed from but does not require staking, the staking
                 and withdraw selectors should be set to 0x00
    @param _reward_tokens List of claimable reward tokens. New reward tokens
                          may be added but they cannot be removed. When calling
                          this function to unset or modify a reward contract,
                          this array must begin with the already-set reward
                          token addresses.
    """
    assert msg.sender == self.admin

    lp_token: address = self.lp_token
    current_reward_contract: address = convert(self.reward_data % 2**160, address)
    total_supply: uint256 = self.totalSupply
    self._checkpoint_rewards(ZERO_ADDRESS, total_supply, False, ZERO_ADDRESS)

    if _reward_contract != ZERO_ADDRESS:
        assert _reward_tokens[0] != ZERO_ADDRESS  # dev: no reward token
        assert _reward_contract.is_contract  # dev: not a contract

    self.reward_data = convert(_reward_contract, uint256)
    self.claim_sig = slice(_claim_sig, 28, 4)
    for i in range(MAX_REWARDS):
        current_token: address = self.reward_tokens[i]
        new_token: address = _reward_tokens[i]
        if current_token != ZERO_ADDRESS:
            assert current_token == new_token  # dev: cannot modify existing reward token
        elif new_token != ZERO_ADDRESS:
            self.reward_tokens[i] = new_token
        else:
            break

    if _reward_contract != ZERO_ADDRESS:
        # do an initial checkpoint to verify that claims are working
        self._checkpoint_rewards(ZERO_ADDRESS, total_supply, False, ZERO_ADDRESS)


@external
def commit_transfer_ownership(addr: address):
    """
    @notice Transfer ownership of GaugeController to `addr`
    @param addr Address to have ownership transferred to
    """
    assert msg.sender == self.admin  # dev: admin only

    self.future_admin = addr
    log CommitOwnership(addr)


@external
def accept_transfer_ownership():
    """
    @notice Accept a pending ownership transfer
    """
    _admin: address = self.future_admin
    assert msg.sender == _admin  # dev: future admin only

    self.admin = _admin
    log ApplyOwnership(_admin)

Contract ABI

[{"name":"Deposit","inputs":[{"name":"provider","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Withdraw","inputs":[{"name":"provider","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"CommitOwnership","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyOwnership","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true},{"name":"_to","type":"address","indexed":true},{"name":"_value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true},{"name":"_spender","type":"address","indexed":true},{"name":"_value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_admin","type":"address"},{"name":"_lp_token","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":288},{"stateMutability":"view","type":"function","name":"reward_contract","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2628},{"stateMutability":"view","type":"function","name":"last_claim","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2454},{"stateMutability":"view","type":"function","name":"claimed_reward","inputs":[{"name":"_addr","type":"address"},{"name":"_token","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":2976},{"stateMutability":"view","type":"function","name":"claimable_reward","inputs":[{"name":"_addr","type":"address"},{"name":"_token","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":2944},{"stateMutability":"nonpayable","type":"function","name":"claimable_reward_write","inputs":[{"name":"_addr","type":"address"},{"name":"_token","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":2067577},{"stateMutability":"nonpayable","type":"function","name":"set_rewards_receiver","inputs":[{"name":"_receiver","type":"address"}],"outputs":[],"gas":35643},{"stateMutability":"nonpayable","type":"function","name":"claim_rewards","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"claim_rewards","inputs":[{"name":"_addr","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"claim_rewards","inputs":[{"name":"_addr","type":"address"},{"name":"_receiver","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deposit","inputs":[{"name":"_value","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deposit","inputs":[{"name":"_value","type":"uint256"},{"name":"_addr","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deposit","inputs":[{"name":"_value","type":"uint256"},{"name":"_addr","type":"address"},{"name":"_claim_rewards","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"withdraw","inputs":[{"name":"_value","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"withdraw","inputs":[{"name":"_value","type":"uint256"},{"name":"_claim_rewards","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"transfer","inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":8092437},{"stateMutability":"nonpayable","type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":8130387},{"stateMutability":"nonpayable","type":"function","name":"approve","inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":38091},{"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","inputs":[{"name":"_spender","type":"address"},{"name":"_added_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":40635},{"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","inputs":[{"name":"_spender","type":"address"},{"name":"_subtracted_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":40659},{"stateMutability":"nonpayable","type":"function","name":"set_rewards","inputs":[{"name":"_reward_contract","type":"address"},{"name":"_claim_sig","type":"bytes32"},{"name":"_reward_tokens","type":"address[8]"}],"outputs":[],"gas":4442580},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"addr","type":"address"}],"outputs":[],"gas":39375},{"stateMutability":"nonpayable","type":"function","name":"accept_transfer_ownership","inputs":[],"outputs":[],"gas":39320},{"stateMutability":"view","type":"function","name":"lp_token","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2928},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3173},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2988},{"stateMutability":"view","type":"function","name":"allowance","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3448},{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":13350},{"stateMutability":"view","type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":11103},{"stateMutability":"view","type":"function","name":"reward_tokens","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":3217},{"stateMutability":"view","type":"function","name":"reward_balances","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3353},{"stateMutability":"view","type":"function","name":"rewards_receiver","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"address"}],"gas":3383},{"stateMutability":"view","type":"function","name":"claim_sig","inputs":[],"outputs":[{"name":"","type":"bytes"}],"gas":11223},{"stateMutability":"view","type":"function","name":"reward_integral","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3443},{"stateMutability":"view","type":"function","name":"reward_integral_for","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3688},{"stateMutability":"view","type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3288},{"stateMutability":"view","type":"function","name":"future_admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3318}]

6040611e34610140396020611e3460c03960c05160a01c1561002057600080fd5b60206020611e340160c03960c05160a01c1561003b57600080fd5b606061024060046395d89b416101e0526101fc610160515afa61005d57600080fd5b603f3d1161006a57600080fd5b601b6102406102405101511061007f57600080fd5b6000506102608051602001806101808284600060045af161009f57600080fd5b5050600060096101e0527f43757276652e6669200000000000000000000000000000000000000000000000610200526101e06009806020846102a001018260208501600060045af1505080518201915050610180601a806020846102a001018260208501600060045af15050805182019150506014610240527f205265776172644761756765204465706f736974000000000000000000000000610260526102406014806020846102a001018260208501600060045af1505080518201915050806102a0526102a0905080600460c052602060c020602082510161012060006003818352015b82610120516020021115610198576101ba565b61012051602002850151610120518501555b8151600101808352811415610185575b5050505050506000610180601a8060208461024001018260208501600060045af150508051820191505060066101e0527f2d67617567650000000000000000000000000000000000000000000000000000610200526101e060068060208461024001018260208501600060045af15050805182019150508061024052610240905080600560c052602060c020602082510161012060006002818352015b8261012051602002111561026a5761028c565b61012051602002850151610120518501555b8151600101808352811415610257575b5050505050506101605160005561014051600e55611e1c56600436101561000d576112ed565b600035601c52600051341561002157600080fd5b63313ce56781141561003857601260005260206000f35b63bf88a6ff81141561007e5760065474010000000000000000000000000000000000000000808206905090508060a01c1561007257600080fd5b80905060005260206000f35b633488bd198114156100995760065460a01c60005260206000f35b63e77e74378114156101065760043560a01c156100b557600080fd5b60243560a01c156100c557600080fd5b600d60043560e05260c052604060c02060243560e05260c052604060c020547001000000000000000000000000000000008082069050905060005260206000f35b6333fd6f7481141561015d5760043560a01c1561012257600080fd5b60243560a01c1561013257600080fd5b600d60043560e05260c052604060c02060243560e05260c052604060c0205460801c60005260206000f35b6359b7e409811415610215576010541561017657600080fd5b600160105560043560a01c1561018b57600080fd5b60243560a01c1561019b57600080fd5b6000600760c052602060c0205418156101e557600435610140526002546101605260006101805260006101a0526101a051610180516101605161014051600658016112f3565b6000505b600d60043560e05260c052604060c02060243560e05260c052604060c0205460801c600052600060105560206000f35b63bdf981168114156102455760043560a01c1561023157600080fd5b60043560093360e05260c052604060c02055005b63e6f1daf28114156102615733610140526000610160526102dc565b6384e9bd7e8114156102935760006101605260043560a01c1561028357600080fd5b60206004610140376000506102dc565b639faceb1b8114156102d75760043560a01c156102af57600080fd5b602060046101403760243560a01c156102c757600080fd5b60206024610160376000506102dc565b610359565b601054156102e957600080fd5b600160105560006101605118156103095733610140511461030957600080fd5b610140516101605161014051610180526002546101a05260016101c052610160516101e0526101e0516101c0516101a05161018051600658016112f3565b61016052610140526000506000601055005b63b6b55f258114156103755733610140526000610160526103f0565b636e553f658114156103a75760006101605260243560a01c1561039757600080fd5b60206024610140376000506103f0565b6383df67478114156103eb5760243560a01c156103c357600080fd5b602060246101403760443560011c156103db57600080fd5b60206044610160376000506103f0565b6105c6565b601054156103fd57600080fd5b6001601055600060043518156105595760065474010000000000000000000000000000000000000000808206905090508060a01c1561043b57600080fd5b809050610180526002546101a0526101405161016051610180516101a051610140516101c0526101a0516101e052610160516102005260006102205261022051610200516101e0516101c051600658016112f3565b6101a0526101805261016052610140526000506101a080516004358181830110156104ba57600080fd5b8082019050905081525060016101405160e05260c052604060c020546004358181830110156104e857600080fd5b808201905090506101c0526101c05160016101405160e05260c052604060c020556101a05160025560206102a060646323b872dd6101e05233610200523061022052600435610240526101fc60006000545af161054457600080fd5b601f3d1161055157600080fd5b6000506102a0505b60043561018052610140517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c6020610180a2600435610180526101405160007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610180a36000601055005b632e1a7d4d8114156105dd5760006101405261060e565b6338d074368114156106095760243560011c156105f957600080fd5b602060246101403760005061060e565b6107c4565b6010541561061b57600080fd5b60016010556000600435181561075d5760065474010000000000000000000000000000000000000000808206905090508060a01c1561065957600080fd5b8090506101605260025461018052610140516101605161018051336101a052610180516101c052610140516101e052600061020052610200516101e0516101c0516101a051600658016112f3565b6101805261016052610140526000506101808051600435808210156106cb57600080fd5b8082039050905081525060013360e05260c052604060c02054600435808210156106f457600080fd5b808203905090506101a0526101a05160013360e05260c052604060c02055610180516002556020610260604463a9059cbb6101c052336101e052600435610200526101dc60006000545af161074857600080fd5b601f3d1161075557600080fd5b600050610260505b60043561016052337f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243646020610160a2600435610160526000337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610160a36000601055005b63a9059cbb81141561082d57601054156107dd57600080fd5b600160105560043560a01c156107f257600080fd5b336101405260043561016052602435610180526101805161016051610140516006580161197f565b6000506001600052600060105560206000f35b6323b872dd811415610935576010541561084657600080fd5b600160105560043560a01c1561085b57600080fd5b60243560a01c1561086b57600080fd5b600360043560e05260c052604060c0203360e05260c052604060c02054610140527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101405118156108f05761014051604435808210156108cb57600080fd5b80820390509050600360043560e05260c052604060c0203360e05260c052604060c020555b6101405160043561016052602435610180526044356101a0526101a05161018051610160516006580161197f565b610140526000506001600052600060105560206000f35b63095ea7b38114156109ae5760043560a01c1561095157600080fd5b60243560033360e05260c052604060c02060043560e05260c052604060c0205560243561014052600435337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610140a3600160005260206000f35b6339509351811415610a635760043560a01c156109ca57600080fd5b60033360e05260c052604060c02060043560e05260c052604060c020546024358181830110156109f957600080fd5b80820190509050610140526101405160033360e05260c052604060c02060043560e05260c052604060c020556101405161016052600435337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610160a3600160005260206000f35b63a457c2d7811415610b165760043560a01c15610a7f57600080fd5b60033360e05260c052604060c02060043560e05260c052604060c0205460243580821015610aac57600080fd5b80820390509050610140526101405160033360e05260c052604060c02060043560e05260c052604060c020556101405161016052600435337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610160a3600160005260206000f35b6347d2d5d3811415610e315760105415610b2f57600080fd5b600160105560043560a01c15610b4457600080fd5b6000610120525b610120516044013560a01c15610b6057600080fd5b6020610120510161012052610100610120511015610b7d57610b4b565b600e543314610b8b57600080fd5b6000546101405260065474010000000000000000000000000000000000000000808206905090508060a01c15610bc057600080fd5b809050610160526002546101805261014051610160516101805160006101a052610180516101c05260006101e052600061020052610200516101e0516101c0516101a051600658016112f3565b61018052610160526101405260005060006004351815610c4657600060443518610c3657600080fd5b60006004353b11610c4657600080fd5b600435600655601c6004602082066101a00160208284011115610c6857600080fd5b60246101c06020840161012060006001818352015b82610120516020021115610c9057610cb5565b61012051602002850135610120516020028501525b8151600101808352811415610c7d575b50505050508181528090509050905080600a60c052602060c020602082510161012060006002818352015b82610120516020021115610cf357610d15565b61012051602002850151610120518501555b8151600101808352811415610ce0575b5050505050506101a060006008818352015b6101a05160088110610d3857600080fd5b600760c052602060c02001546101c05260446101a05160088110610d5b57600080fd5b60200201356101e05260006101c0511815610d87576101e0516101c05114610d8257600080fd5b610dbe565b60006101e0511815610db9576101e0516101a05160088110610da857600080fd5b600760c052602060c0200155610dbe565b610dce565b8151600101808352811415610d27575b505060006004351815610e2a5761014051610160516101805160006101a052610180516101c05260006101e052600061020052610200516101e0516101c0516101a051600658016112f3565b6101805261016052610140526000505b6000601055005b636b441a40811415610e915760043560a01c15610e4d57600080fd5b600e543314610e5b57600080fd5b600435600f55600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b63e5ea47b8811415610eeb57600f5461014052610140513314610eb357600080fd5b61014051600e5561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b6382c63066811415610f035760005460005260206000f35b6370a08231811415610f395760043560a01c15610f1f57600080fd5b600160043560e05260c052604060c0205460005260206000f35b6318160ddd811415610f515760025460005260206000f35b63dd62ed3e811415610fa55760043560a01c15610f6d57600080fd5b60243560a01c15610f7d57600080fd5b600360043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b6306fdde0381141561104a5760048060c052602060c020610180602082540161012060006003818352015b82610120516020021115610fe357611005565b61012051850154610120516020028501525b8151600101808352811415610fd0575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6395d89b418114156110ef5760058060c052602060c020610180602082540161012060006002818352015b82610120516020021115611088576110aa565b61012051850154610120516020028501525b8151600101808352811415611075575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6354c49fe9811415611120576004356008811061110b57600080fd5b600760c052602060c020015460005260206000f35b63fe9e21788114156111565760043560a01c1561113c57600080fd5b600860043560e05260c052604060c0205460005260206000f35b6301ddabf181141561118c5760043560a01c1561117257600080fd5b600960043560e05260c052604060c0205460005260206000f35b63b7aca56881141561123157600a8060c052602060c020610180602082540161012060006002818352015b826101205160200211156111ca576111ec565b61012051850154610120516020028501525b81516001018083528114156111b7575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6373861fb38114156112675760043560a01c1561124d57600080fd5b600b60043560e05260c052604060c0205460005260206000f35b63f05cc0588114156112bb5760043560a01c1561128357600080fd5b60243560a01c1561129357600080fd5b600c60043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b63f851a4408114156112d357600e5460005260206000f35b6317f7182a8114156112eb57600f5460005260206000f35b505b60006000fd5b6101c0526101405261016052610180526101a0526006546101e05260006101605118156113555760006101e051181561134d576101e05160a01c610e1081818301101561133f57600080fd5b808201905090504211611350565b60005b611358565b60005b1561142b576101e05174010000000000000000000000000000000000000000808206905090508060a01c1561138c57600080fd5b80905061020052600a8060c052602060c020610220602082540161012060006002818352015b826101205160200211156113c5576113e7565b61012051850154610120516020028501525b81516001018083528114156113b2575b50505050505060006000610220516102406000610200515af161140957600080fd5b610200514260a01b81818301101561142057600080fd5b808201905090506006555b6101a051610200526101805115611446576102005115611449565b60005b156114775760096101405160e05260c052604060c02054610200526102005115156114775761014051610200525b60016101405160e05260c052604060c020546102205261024060006008818352015b61024051600881106114aa57600080fd5b600760c052602060c0200154610260526102605115156114c957611977565b60006102805260006101605118156115e357602061034060246370a082316102c052306102e0526102dc610260515afa61150257600080fd5b601f3d1161150f57600080fd5b600050610340516102a052670de0b6b3a76400006102a05160086102605160e05260c052604060c020548082101561154657600080fd5b80820390509050808202821582848304141761156157600080fd5b8090509050905061016051808061157757600080fd5b820490509050610280526102a05160086102605160e05260c052604060c020556101405115156115e35760006102805118156115de57600b6102605160e05260c052604060c0208054610280518181830110156115d357600080fd5b808201905090508155505b611967565b600b6102605160e05260c052604060c020546102805181818301101561160857600080fd5b808201905090506102a0526000610280511815611636576102a051600b6102605160e05260c052604060c020555b600c6102605160e05260c052604060c0206101405160e05260c052604060c020546102c05260006102e0526102a0516102c05110156116e4576102a051600c6102605160e05260c052604060c0206101405160e05260c052604060c02055610220516102a0516102c051808210156116ad57600080fd5b8082039050905080820282158284830414176116c857600080fd5b80905090509050670de0b6b3a7640000808204905090506102e0525b600d6101405160e05260c052604060c0206102605160e05260c052604060c02054610300526103005160801c6102e05181818301101561172357600080fd5b8082019050905061032052600061032051111561196757610300517001000000000000000000000000000000008082069050905061034052610180511561191857600060046103c0527fa9059cbb000000000000000000000000000000000000000000000000000000006103e0526103c060048060208461042001018260208501600060045af15050805182019150506102005160208261042001015260208101905061032051602082610420010152602081019050806104205261042090508051602001806104c08284600060045af16117fd57600080fd5b505060206105806104c0516104e06000610260515af161181c57600080fd5b60203d8082111561182d578061182f565b815b90509050610560526105608051602001806103608284600060045af161185457600080fd5b505060006103605118156118a65761036080602001516000825180602090131561187d57600080fd5b809190121561188b57600080fd5b806020036101000a820490509050905015156118a657600080fd5b60086102605160e05260c052604060c020805461032051808210156118ca57600080fd5b8082039050905081555061034051610320518181830110156118eb57600080fd5b80820190509050600d6101405160e05260c052604060c0206102605160e05260c052604060c02055611967565b60006102e051111561196757610340516103205160801b81818301101561193e57600080fd5b80820190509050600d6101405160e05260c052604060c0206102605160e05260c052604060c020555b8151600101808352811415611499575b50506101c051565b6101a05261014052610160526101805260065474010000000000000000000000000000000000000000808206905090508060a01c156119bd57600080fd5b8090506101c0526000610180511815611b3a576002546101e0526101405161016051610180516101a0516101c0516101e05161014051610200526101e0516102205260006102405260006102605261026051610240516102205161020051600658016112f3565b6101e0526101c0526101a05261018052610160526101405260005060016101405160e05260c052604060c020546101805180821015611a6257600080fd5b80820390509050610200526102005160016101405160e05260c052604060c020556101405161016051610180516101a0516101c0516101e0516102005161016051610220526101e0516102405260006102605260006102805261028051610260516102405161022051600658016112f3565b610200526101e0526101c0526101a05261018052610160526101405260005060016101605160e05260c052604060c0205461018051818183011015611b1857600080fd5b80820190509050610200526102005160016101605160e05260c052604060c020555b610180516101e05261016051610140517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206101e0a36101a051565b6102a5611e1c036102a56000396102a5611e1c036000f30000000000000000000000007eeac6cddbd1d0b8af061742d41877d7f707289a0000000000000000000000007f90122bf0700f9e7e1f688fe926940e8839f353

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.