Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 22,185 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 21221617 | 4 days ago | IN | 0 ETH | 0.00459119 | ||||
Withdraw | 21180784 | 9 days ago | IN | 0 ETH | 0.04200191 | ||||
Claim_rewards | 21159968 | 12 days ago | IN | 0 ETH | 0.00338438 | ||||
Withdraw | 21159911 | 12 days ago | IN | 0 ETH | 0.0196991 | ||||
Withdraw | 21088110 | 22 days ago | IN | 0 ETH | 0.00378213 | ||||
Withdraw | 20697410 | 77 days ago | IN | 0 ETH | 0.00170473 | ||||
Claim_rewards | 20646187 | 84 days ago | IN | 0 ETH | 0.00014166 | ||||
Claim_rewards | 20588542 | 92 days ago | IN | 0 ETH | 0.00014935 | ||||
Claim_rewards | 20588522 | 92 days ago | IN | 0 ETH | 0.0001932 | ||||
Withdraw | 20588436 | 92 days ago | IN | 0 ETH | 0.00041465 | ||||
Withdraw | 20588435 | 92 days ago | IN | 0 ETH | 0.00060937 | ||||
Withdraw | 20561758 | 96 days ago | IN | 0 ETH | 0.00047779 | ||||
Claim_rewards | 20548384 | 98 days ago | IN | 0 ETH | 0.00022959 | ||||
Claim_rewards | 20548382 | 98 days ago | IN | 0 ETH | 0.00023364 | ||||
Claim_rewards | 20548380 | 98 days ago | IN | 0 ETH | 0.00021537 | ||||
Claim_rewards | 20520972 | 102 days ago | IN | 0 ETH | 0.00080797 | ||||
Withdraw | 20497301 | 105 days ago | IN | 0 ETH | 0.00111405 | ||||
Withdraw | 20422903 | 115 days ago | IN | 0 ETH | 0.00115293 | ||||
Claim_rewards | 20408357 | 117 days ago | IN | 0 ETH | 0.00019808 | ||||
Withdraw | 20391532 | 120 days ago | IN | 0 ETH | 0.0031664 | ||||
Withdraw | 20298904 | 133 days ago | IN | 0 ETH | 0.00076649 | ||||
Withdraw | 20296553 | 133 days ago | IN | 0 ETH | 0.00083851 | ||||
Withdraw | 20243046 | 140 days ago | IN | 0 ETH | 0.00124427 | ||||
Withdraw | 20212315 | 145 days ago | IN | 0 ETH | 0.00453904 | ||||
Withdraw | 20180291 | 149 days ago | IN | 0 ETH | 0.00349292 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
10740600 | 1549 days ago | 0.90923265 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x705350c4...d7a55410F 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.4
Contract Source Code (Vyper language format)
# @version 0.2.4 """ @title Staking Liquidity Gauge @author Curve Finance @license MIT @notice Simultaneously stakes using Synthetix (== YFI) rewards contract """ from vyper.interfaces import ERC20 interface CRV20: def future_epoch_time_write() -> uint256: nonpayable def rate() -> uint256: view interface Controller: def period() -> int128: view def period_write() -> int128: nonpayable def period_timestamp(p: int128) -> uint256: view def gauge_relative_weight(addr: address, time: uint256) -> uint256: view def voting_escrow() -> address: view def checkpoint(): nonpayable def checkpoint_gauge(addr: address): nonpayable interface Minter: def token() -> address: view def controller() -> address: view def minted(user: address, gauge: address) -> uint256: view interface VotingEscrow: def user_point_epoch(addr: address) -> uint256: view def user_point_history__ts(addr: address, epoch: uint256) -> uint256: view interface CurveRewards: def stake(amount: uint256): nonpayable def withdraw(amount: uint256): nonpayable def getReward(): nonpayable def earned(addr: address) -> uint256: view event Deposit: provider: indexed(address) value: uint256 event Withdraw: provider: indexed(address) value: uint256 event UpdateLiquidityLimit: user: address original_balance: uint256 original_supply: uint256 working_balance: uint256 working_supply: uint256 TOKENLESS_PRODUCTION: constant(uint256) = 40 BOOST_WARMUP: constant(uint256) = 2 * 7 * 86400 WEEK: constant(uint256) = 604800 minter: public(address) crv_token: public(address) lp_token: public(address) controller: public(address) voting_escrow: public(address) balanceOf: public(HashMap[address, uint256]) totalSupply: public(uint256) future_epoch_time: public(uint256) # caller -> recipient -> can deposit? approved_to_deposit: public(HashMap[address, HashMap[address, bool]]) working_balances: public(HashMap[address, uint256]) working_supply: public(uint256) # The goal is to be able to calculate ∫(rate * balance / totalSupply dt) from 0 till checkpoint # All values are kept in units of being multiplied by 1e18 period: public(int128) period_timestamp: public(uint256[100000000000000000000000000000]) # 1e18 * ∫(rate(t) / totalSupply(t) dt) from 0 till checkpoint integrate_inv_supply: public(uint256[100000000000000000000000000000]) # bump epoch when rate() changes # 1e18 * ∫(rate(t) / totalSupply(t) dt) from (last_action) till checkpoint integrate_inv_supply_of: public(HashMap[address, uint256]) integrate_checkpoint_of: public(HashMap[address, uint256]) # ∫(balance * rate(t) / totalSupply(t) dt) from 0 till checkpoint # Units: rate * t = already number of coins per address to issue integrate_fraction: public(HashMap[address, uint256]) inflation_rate: public(uint256) # For tracking external rewards reward_contract: public(address) rewarded_token: public(address) reward_integral: public(uint256) reward_integral_for: public(HashMap[address, uint256]) rewards_for: public(HashMap[address, uint256]) claimed_rewards_for: public(HashMap[address, uint256]) @external def __init__(lp_addr: address, _minter: address, _reward_contract: address, _rewarded_token: address): """ @notice Contract constructor @param lp_addr Liquidity Pool contract address @param _minter Minter contract address @param _reward_contract Synthetix reward contract address @param _rewarded_token Received synthetix token contract address """ assert lp_addr != ZERO_ADDRESS assert _minter != ZERO_ADDRESS assert _reward_contract != ZERO_ADDRESS self.lp_token = lp_addr self.minter = _minter crv_addr: address = Minter(_minter).token() self.crv_token = crv_addr controller_addr: address = Minter(_minter).controller() self.controller = controller_addr self.voting_escrow = Controller(controller_addr).voting_escrow() self.period_timestamp[0] = block.timestamp self.inflation_rate = CRV20(crv_addr).rate() self.future_epoch_time = CRV20(crv_addr).future_epoch_time_write() self.reward_contract = _reward_contract assert ERC20(lp_addr).approve(_reward_contract, MAX_UINT256) self.rewarded_token = _rewarded_token @internal def _update_liquidity_limit(addr: address, l: uint256, L: uint256): """ @notice Calculate limits which depend on the amount of CRV token per-user. Effectively it calculates working balances to apply amplification of CRV production by CRV @param addr User address @param l User's amount of liquidity (LP tokens) @param L Total amount of liquidity (LP tokens) """ # To be called after totalSupply is updated _voting_escrow: address = self.voting_escrow voting_balance: uint256 = ERC20(_voting_escrow).balanceOf(addr) voting_total: uint256 = ERC20(_voting_escrow).totalSupply() lim: uint256 = l * TOKENLESS_PRODUCTION / 100 if (voting_total > 0) and (block.timestamp > self.period_timestamp[0] + BOOST_WARMUP): lim += L * voting_balance / voting_total * (100 - TOKENLESS_PRODUCTION) / 100 lim = min(l, lim) old_bal: uint256 = self.working_balances[addr] self.working_balances[addr] = lim _working_supply: uint256 = self.working_supply + lim - old_bal self.working_supply = _working_supply log UpdateLiquidityLimit(addr, l, L, lim, _working_supply) @internal def _checkpoint_rewards(addr: address, claim_rewards: bool): # Update reward integrals (no gauge weights involved: easy) _rewarded_token: address = self.rewarded_token d_reward: uint256 = 0 if claim_rewards: d_reward = ERC20(_rewarded_token).balanceOf(self) CurveRewards(self.reward_contract).getReward() d_reward = ERC20(_rewarded_token).balanceOf(self) - d_reward user_balance: uint256 = self.balanceOf[addr] total_balance: uint256 = self.totalSupply dI: uint256 = 0 if total_balance > 0: dI = 10 ** 18 * d_reward / total_balance I: uint256 = self.reward_integral + dI self.reward_integral = I self.rewards_for[addr] += user_balance * (I - self.reward_integral_for[addr]) / 10 ** 18 self.reward_integral_for[addr] = I @internal def _checkpoint(addr: address, claim_rewards: bool): """ @notice Checkpoint for a user @param addr User address """ _token: address = self.crv_token _controller: address = self.controller _period: int128 = self.period _period_time: uint256 = self.period_timestamp[_period] _integrate_inv_supply: uint256 = self.integrate_inv_supply[_period] rate: uint256 = self.inflation_rate new_rate: uint256 = rate prev_future_epoch: uint256 = self.future_epoch_time if prev_future_epoch >= _period_time: self.future_epoch_time = CRV20(_token).future_epoch_time_write() new_rate = CRV20(_token).rate() self.inflation_rate = new_rate Controller(_controller).checkpoint_gauge(self) _working_balance: uint256 = self.working_balances[addr] _working_supply: uint256 = self.working_supply # Update integral of 1/supply if block.timestamp > _period_time: prev_week_time: uint256 = _period_time week_time: uint256 = min((_period_time + WEEK) / WEEK * WEEK, block.timestamp) for i in range(500): dt: uint256 = week_time - prev_week_time w: uint256 = Controller(_controller).gauge_relative_weight(self, prev_week_time / WEEK * WEEK) if _working_supply > 0: if prev_future_epoch >= prev_week_time and prev_future_epoch < week_time: # If we went across one or multiple epochs, apply the rate # of the first epoch until it ends, and then the rate of # the last epoch. # If more than one epoch is crossed - the gauge gets less, # but that'd meen it wasn't called for more than 1 year _integrate_inv_supply += rate * w * (prev_future_epoch - prev_week_time) / _working_supply rate = new_rate _integrate_inv_supply += rate * w * (week_time - prev_future_epoch) / _working_supply else: _integrate_inv_supply += rate * w * dt / _working_supply # On precisions of the calculation # rate ~= 10e18 # last_weight > 0.01 * 1e18 = 1e16 (if pool weight is 1%) # _working_supply ~= TVL * 1e18 ~= 1e26 ($100M for example) # The largest loss is at dt = 1 # Loss is 1e-9 - acceptable if week_time == block.timestamp: break prev_week_time = week_time week_time = min(week_time + WEEK, block.timestamp) _period += 1 self.period = _period self.period_timestamp[_period] = block.timestamp self.integrate_inv_supply[_period] = _integrate_inv_supply # Update user-specific integrals self.integrate_fraction[addr] += _working_balance * (_integrate_inv_supply - self.integrate_inv_supply_of[addr]) / 10 ** 18 self.integrate_inv_supply_of[addr] = _integrate_inv_supply self.integrate_checkpoint_of[addr] = block.timestamp self._checkpoint_rewards(addr, claim_rewards) @external def user_checkpoint(addr: address) -> bool: """ @notice Record a checkpoint for `addr` @param addr User address @return bool success """ assert (msg.sender == addr) or (msg.sender == self.minter) # dev: unauthorized self._checkpoint(addr, True) self._update_liquidity_limit(addr, self.balanceOf[addr], self.totalSupply) return True @external def claimable_tokens(addr: address) -> uint256: """ @notice Get the number of claimable tokens per user @dev This function should be manually changed to "view" in the ABI @return uint256 number of claimable tokens per user """ self._checkpoint(addr, True) return self.integrate_fraction[addr] - Minter(self.minter).minted(addr, self) @external @view def claimable_reward(addr: address) -> uint256: """ @notice Get the number of claimable reward tokens for a user @param addr Account to get reward amount for @return uint256 Claimable reward token amount """ d_reward: uint256 = CurveRewards(self.reward_contract).earned(self) user_balance: uint256 = self.balanceOf[addr] total_balance: uint256 = self.totalSupply dI: uint256 = 0 if total_balance > 0: dI = 10 ** 18 * d_reward / total_balance I: uint256 = self.reward_integral + dI return self.rewards_for[addr] + user_balance * (I - self.reward_integral_for[addr]) / 10 ** 18 @external def kick(addr: address): """ @notice Kick `addr` for abusing their boost @dev Only if either they had another voting event, or their voting escrow lock expired @param addr Address to kick """ _voting_escrow: address = self.voting_escrow t_last: uint256 = self.integrate_checkpoint_of[addr] t_ve: uint256 = VotingEscrow(_voting_escrow).user_point_history__ts( addr, VotingEscrow(_voting_escrow).user_point_epoch(addr) ) _balance: uint256 = self.balanceOf[addr] assert ERC20(self.voting_escrow).balanceOf(addr) == 0 or t_ve > t_last # dev: kick not allowed assert self.working_balances[addr] > _balance * TOKENLESS_PRODUCTION / 100 # dev: kick not needed self._checkpoint(addr, True) self._update_liquidity_limit(addr, self.balanceOf[addr], self.totalSupply) @external def set_approve_deposit(addr: address, can_deposit: bool): """ @notice Set whether `addr` can deposit tokens for `msg.sender` @param addr Address to set approval on @param can_deposit bool - can this account deposit for `msg.sender`? """ self.approved_to_deposit[addr][msg.sender] = can_deposit @external @nonreentrant('lock') def deposit(_value: uint256, addr: address = msg.sender): """ @notice Deposit `_value` LP tokens @param _value Number of tokens to deposit @param addr Address to deposit for """ if addr != msg.sender: assert self.approved_to_deposit[msg.sender][addr], "Not approved" self._checkpoint(addr, True) if _value != 0: _balance: uint256 = self.balanceOf[addr] + _value _supply: uint256 = self.totalSupply + _value self.balanceOf[addr] = _balance self.totalSupply = _supply self._update_liquidity_limit(addr, _balance, _supply) assert ERC20(self.lp_token).transferFrom(msg.sender, self, _value) CurveRewards(self.reward_contract).stake(_value) log Deposit(addr, _value) @external @nonreentrant('lock') def withdraw(_value: uint256, claim_rewards: bool = True): """ @notice Withdraw `_value` LP tokens @param _value Number of tokens to withdraw """ self._checkpoint(msg.sender, claim_rewards) _balance: uint256 = self.balanceOf[msg.sender] - _value _supply: uint256 = self.totalSupply - _value self.balanceOf[msg.sender] = _balance self.totalSupply = _supply self._update_liquidity_limit(msg.sender, _balance, _supply) if _value > 0: CurveRewards(self.reward_contract).withdraw(_value) assert ERC20(self.lp_token).transfer(msg.sender, _value) log Withdraw(msg.sender, _value) @external @nonreentrant('lock') def claim_rewards(addr: address = msg.sender): self._checkpoint_rewards(addr, True) _rewards_for: uint256 = self.rewards_for[addr] assert ERC20(self.rewarded_token).transfer( addr, _rewards_for - self.claimed_rewards_for[addr]) self.claimed_rewards_for[addr] = _rewards_for @external @view def integrate_checkpoint() -> uint256: return self.period_timestamp[self.period]
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"Deposit","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false,"type":"event"},{"name":"Withdraw","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateLiquidityLimit","inputs":[{"type":"address","name":"user","indexed":false},{"type":"uint256","name":"original_balance","indexed":false},{"type":"uint256","name":"original_supply","indexed":false},{"type":"uint256","name":"working_balance","indexed":false},{"type":"uint256","name":"working_supply","indexed":false}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[{"type":"address","name":"lp_addr"},{"type":"address","name":"_minter"},{"type":"address","name":"_reward_contract"},{"type":"address","name":"_rewarded_token"}],"stateMutability":"nonpayable","type":"constructor"},{"name":"user_checkpoint","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":2311984},{"name":"claimable_tokens","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":2231138},{"name":"claimable_reward","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"view","type":"function","gas":7300},{"name":"kick","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":2317383},{"name":"set_approve_deposit","outputs":[],"inputs":[{"type":"address","name":"addr"},{"type":"bool","name":"can_deposit"}],"stateMutability":"nonpayable","type":"function","gas":35826},{"name":"deposit","outputs":[],"inputs":[{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function"},{"name":"deposit","outputs":[],"inputs":[{"type":"uint256","name":"_value"},{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function"},{"name":"withdraw","outputs":[],"inputs":[{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function"},{"name":"withdraw","outputs":[],"inputs":[{"type":"uint256","name":"_value"},{"type":"bool","name":"claim_rewards"}],"stateMutability":"nonpayable","type":"function"},{"name":"claim_rewards","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function"},{"name":"claim_rewards","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function"},{"name":"integrate_checkpoint","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2387},{"name":"minter","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1511},{"name":"crv_token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1541},{"name":"lp_token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1571},{"name":"controller","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1601},{"name":"voting_escrow","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1631},{"name":"balanceOf","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1815},{"name":"totalSupply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1691},{"name":"future_epoch_time","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1721},{"name":"approved_to_deposit","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"arg0"},{"type":"address","name":"arg1"}],"stateMutability":"view","type":"function","gas":2059},{"name":"working_balances","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1935},{"name":"working_supply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1811},{"name":"period","outputs":[{"type":"int128","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1841},{"name":"period_timestamp","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":1980},{"name":"integrate_inv_supply","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2010},{"name":"integrate_inv_supply_of","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2085},{"name":"integrate_checkpoint_of","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2115},{"name":"integrate_fraction","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2145},{"name":"inflation_rate","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2021},{"name":"reward_contract","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2051},{"name":"rewarded_token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2081},{"name":"reward_integral","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2111},{"name":"reward_integral_for","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2295},{"name":"rewards_for","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2325},{"name":"claimed_rewards_for","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2355}]
Deployed Bytecode
0x600436101561000d57611db4565b600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a05260001561031c575b6101a0526101405261016052610180526004546101c052602061028060246370a0823161020052610140516102205261021c6101c0515afa6100ea57600080fd5b601f3d116100f757600080fd5b600050610280516101e052602061032060046318160ddd6102c0526102dc6101c0515afa61012457600080fd5b601f3d1161013157600080fd5b600050610320516102a052610160516028808202821582848304141761015657600080fd5b809050905090506064808061016a57600080fd5b8204905090506103405260006102a05111156101ac57600c60c052602060c020546212750081818301101561019e57600080fd5b8082019050905042116101af565b60005b1561023b576103408051610180516101e05180820282158284830414176101d557600080fd5b809050905090506102a05180806101eb57600080fd5b820490509050603c808202821582848304141761020757600080fd5b809050905090506064808061021b57600080fd5b82049050905081818301101561023057600080fd5b808201905090508152505b6101605161034051808211156102515780610253565b815b905090506103405260096101405160e05260c052604060c02054610360526103405160096101405160e05260c052604060c02055600a546103405181818301101561029d57600080fd5b8082019050905061036051808210156102b557600080fd5b808203905090506103805261038051600a55610140516103a052610160516103c052610180516103e052610340516104005261038051610420527f7ecd84343f76a23d2227290e0288da3251b045541698e575a5515af4f04197a360a06103a0a16101a051565b600015610550575b6101805261014052610160526013546101a05260006101c052610160511561040c57602061026060246370a082316101e05230610200526101fc6101a0515afa61036d57600080fd5b601f3d1161037a57600080fd5b600050610260516101c0526012543b61039257600080fd5b600060006004633d18b9126102805261029c60006012545af16103b457600080fd5b602061036060246370a082316102e05230610300526102fc6101a0515afa6103db57600080fd5b601f3d116103e857600080fd5b600050610360516101c0518082101561040057600080fd5b808203905090506101c0525b60056101405160e05260c052604060c02054610380526006546103a05260006103c05260006103a051111561047d57670de0b6b3a76400006101c051808202821582848304141761045c57600080fd5b809050905090506103a051808061047257600080fd5b8204905090506103c0525b6014546103c05181818301101561049357600080fd5b808201905090506103e0526103e05160145560166101405160e05260c052604060c0208054610380516103e05160156101405160e05260c052604060c02054808210156104df57600080fd5b8082039050905080820282158284830414176104fa57600080fd5b80905090509050670de0b6b3a7640000808061051557600080fd5b82049050905081818301101561052a57600080fd5b808201905090508155506103e05160156101405160e05260c052604060c0205561018051565b600015610be7575b6101805261014052610160526001546101a0526003546101c052600b546101e0526101e0516c01431e0fae6d7217caa0000000811061059657600080fd5b600c60c052602060c0200154610200526101e0516c01431e0fae6d7217caa000000081106105c357600080fd5b600d60c052602060c020015461022052601154610240526102405161026052600754610280526102005161028051101515610675576020610300600463b26b238e6102a0526102bc60006101a0515af161061c57600080fd5b601f3d1161062957600080fd5b6000506103005160075560206103806004632c4e722e6103205261033c6101a0515afa61065557600080fd5b601f3d1161066257600080fd5b6000506103805161026052610260516011555b6101c0513b61068357600080fd5b60006000602463615e52376103a052306103c0526103bc60006101c0515af16106ab57600080fd5b60096101405160e05260c052604060c0205461042052600a546104405261020051421115610a205761020051610460526102005162093a808181830110156106f257600080fd5b8082019050905062093a80808061070857600080fd5b82049050905062093a80808202821582848304141761072657600080fd5b80905090509050428082111561073c578061073e565b815b90509050610480526104a060006101f4818352015b61048051610460518082101561076857600080fd5b808203905090506104c05260206105a0604463d3078c946105005230610520526104605162093a80808061079b57600080fd5b82049050905062093a8080820282158284830414176107b957600080fd5b809050905090506105405261051c6101c0515afa6107d657600080fd5b601f3d116107e357600080fd5b6000506105a0516104e05260006104405111156109bd5761046051610280511015156108175761048051610280511061081a565b60005b15610946576102208051610240516104e051808202821582848304141761084057600080fd5b8090509050905061028051610460518082101561085c57600080fd5b80820390509050808202821582848304141761087757600080fd5b8090509050905061044051808061088d57600080fd5b8204905090508181830110156108a257600080fd5b8082019050905081525061026051610240526102208051610240516104e05180820282158284830414176108d557600080fd5b809050905090506104805161028051808210156108f157600080fd5b80820390509050808202821582848304141761090c57600080fd5b8090509050905061044051808061092257600080fd5b82049050905081818301101561093757600080fd5b808201905090508152506109bc565b6102208051610240516104e051808202821582848304141761096757600080fd5b809050905090506104c051808202821582848304141761098657600080fd5b8090509050905061044051808061099c57600080fd5b8204905090508181830110156109b157600080fd5b808201905090508152505b5b426104805114156109cd57610a1d565b61048051610460526104805162093a808181830110156109ec57600080fd5b808201905090504280821115610a025780610a04565b815b90509050610480525b8151600101808352811415610753575b50505b6101e08051600160605181830180604051901315610a3d57600080fd5b8091901215610a4b57600080fd5b905090508152506101e051600b55426101e0516c01431e0fae6d7217caa00000008110610a7757600080fd5b600c60c052602060c0200155610220516101e0516c01431e0fae6d7217caa00000008110610aa457600080fd5b600d60c052602060c020015560106101405160e05260c052604060c02080546104205161022051600e6101405160e05260c052604060c0205480821015610aea57600080fd5b808203905090508082028215828483041417610b0557600080fd5b80905090509050670de0b6b3a76400008080610b2057600080fd5b820490509050818183011015610b3557600080fd5b8082019050905081555061022051600e6101405160e05260c052604060c0205542600f6101405160e05260c052604060c020556101406105c0525b6105c0515160206105c051016105c0526104606105c0511015610b9257610b70565b610140516105e0526101605161060052610600516105e05160065801610324565b6104406105c0525b6105c0515260206105c051036105c0526101406105c051101515610bde57610bbb565b60005061018051565b634b8200936000511415610cbc573415610c0057600080fd5b6004356020518110610c1157600080fd5b50600435331415610c23576001610c29565b60005433145b5b610c3357600080fd5b60043561014052600161016052610160516101405160065801610558565b6000506101405161016051610180516101a0516004356101e052600560043560e05260c052604060c02054610200526006546102205261022051610200516101e051600658016100a9565b6101a052610180526101605261014052600050600160005260206000f350005b63331345836000511415610d79573415610cd557600080fd5b6004356020518110610ce657600080fd5b5060043561014052600161016052610160516101405160065801610558565b600050601060043560e05260c052604060c0205460206102606044638b752bb06101c0526004356101e05230610200526101dc6000545afa610d4657600080fd5b601f3d11610d5357600080fd5b6000506102605180821015610d6757600080fd5b8082039050905060005260206000f350005b63d2797b596000511415610f06573415610d9257600080fd5b6004356020518110610da357600080fd5b5060206101e06024628cc26261016052306101805261017c6012545afa610dc957600080fd5b601f3d11610dd657600080fd5b6000506101e05161014052600560043560e05260c052604060c0205461020052600654610220526000610240526000610220511115610e5157670de0b6b3a7640000610140518082028215828483041417610e3057600080fd5b80905090509050610220518080610e4657600080fd5b820490509050610240525b60145461024051818183011015610e6757600080fd5b8082019050905061026052601660043560e05260c052604060c020546102005161026051601560043560e05260c052604060c0205480821015610ea957600080fd5b808203905090508082028215828483041417610ec457600080fd5b80905090509050670de0b6b3a76400008080610edf57600080fd5b820490509050818183011015610ef457600080fd5b8082019050905060005260206000f350005b6396c551756000511415611198573415610f1f57600080fd5b6004356020518110610f3057600080fd5b5060045461014052600f60043560e05260c052604060c020546101605260206102e0604463da020a1861024052600435610260526020610220602463010ae7576101a0526004356101c0526101bc610140515afa610f8d57600080fd5b601f3d11610f9a57600080fd5b600050610220516102805261025c610140515afa610fb757600080fd5b601f3d11610fc457600080fd5b6000506102e05161018052600560043560e05260c052604060c0205461030052602061044060246370a082316103c0526004356103e0526103dc6004545afa61100c57600080fd5b601f3d1161101957600080fd5b60005061044051151561102d576001611037565b6101605161018051115b5b61104157600080fd5b610300516028808202821582848304141761105b57600080fd5b809050905090506064808061106f57600080fd5b820490509050600960043560e05260c052604060c020541161109057600080fd5b610140610460525b610460515160206104605101610460526104606104605110156110ba57611098565b6004356104805260016104a0526104a0516104805160065801610558565b610440610460525b6104605152602061046051036104605261014061046051101515611103576110e0565b600050610140610500525b610500515160206105005101610500526105006105005110156111305761110e565b60043561052052600560043560e05260c052604060c020546105405260065461056052610560516105405161052051600658016100a9565b6104e0610500525b610500515260206105005103610500526101406105005110151561119357611170565b600050005b631d2747d460005114156111f65734156111b157600080fd5b60043560205181106111c257600080fd5b50602435600281106111d357600080fd5b50602435600860043560e05260c052604060c0203360e05260c052604060c02055005b63b6b55f25600051141561120e573361014052611245565b636e553f65600051141561123d57602435602051811061122d57600080fd5b6020602461014037600050611245565b6000156114c2575b62ffffff541561125457600080fd5b600162ffffff55341561126657600080fd5b336101405118156112d9576308c379a061016052602061018052600c6101a0527f4e6f7420617070726f76656400000000000000000000000000000000000000006101c0526101a05060083360e05260c052604060c0206101405160e05260c052604060c020546112d857606461017cfd5b5b610140516101405161022052600161024052610240516102205160065801610558565b61014052600050600060043518156114875760056101405160e05260c052604060c0205460043581818301101561133257600080fd5b808201905090506102a05260065460043581818301101561135257600080fd5b808201905090506102c0526102a05160056101405160e05260c052604060c020556102c0516006556101406102e0525b6102e0515160206102e051016102e0526102e06102e05110156113a457611382565b61014051610300526102a051610320526102c05161034052610340516103205161030051600658016100a9565b6102c06102e0525b6102e0515260206102e051036102e0526101406102e0511015156113fc576113d9565b600050602061046060646323b872dd6103a052336103c052306103e052600435610400526103bc60006002545af161143357600080fd5b601f3d1161144057600080fd5b6000506104605161145057600080fd5b6012543b61145d57600080fd5b60006000602463a694fc3a610480526004356104a05261049c60006012545af161148657600080fd5b5b60043561050052610140517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c6020610500a2600062ffffff55005b632e1a7d4d60005114156114db57600161014052611511565b6338d07436600051141561150957602435600281106114f957600080fd5b6020602461014037600050611511565b6000156116f0575b62ffffff541561152057600080fd5b600162ffffff55341561153257600080fd5b610140513361018052610140516101a0526101a0516101805160065801610558565b6101405260005060053360e05260c052604060c020546004358082101561157a57600080fd5b80820390509050610200526006546004358082101561159857600080fd5b80820390509050610220526102005160053360e05260c052604060c02055610220516006556101405161016051610180516101a0516101c0516101e051610200516102205133610260526102005161028052610220516102a0526102a0516102805161026051600658016100a9565b61022052610200526101e0526101c0526101a052610180526101605261014052600050600060043511156116b8576012543b61164257600080fd5b600060006024632e1a7d4d610300526004356103205261031c60006012545af161166b57600080fd5b6020610420604463a9059cbb61038052336103a0526004356103c05261039c60006002545af161169a57600080fd5b601f3d116116a757600080fd5b600050610420516116b757600080fd5b5b60043561044052337f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243646020610440a2600062ffffff55005b63e6f1daf2600051141561170857336101405261173f565b6384e9bd7e600051141561173757600435602051811061172757600080fd5b602060046101403760005061173f565b600015611835575b62ffffff541561174e57600080fd5b600162ffffff55341561176057600080fd5b61014051610140516101805260016101a0526101a0516101805160065801610324565b6101405260005060166101405160e05260c052604060c020546102005260206102c0604463a9059cbb6102205261014051610240526102005160176101405160e05260c052604060c02054808210156117db57600080fd5b808203905090506102605261023c60006013545af16117f957600080fd5b601f3d1161180657600080fd5b6000506102c05161181657600080fd5b6102005160176101405160e05260c052604060c02055600062ffffff55005b63d31f3f6d600051141561188157341561184e57600080fd5b600b546c01431e0fae6d7217caa0000000811061186a57600080fd5b600c60c052602060c020015460005260206000f350005b630754617260005114156118a857341561189a57600080fd5b60005460005260206000f350005b6376d8b11760005114156118cf5734156118c157600080fd5b60015460005260206000f350005b6382c6306660005114156118f65734156118e857600080fd5b60025460005260206000f350005b63f77c4791600051141561191d57341561190f57600080fd5b60035460005260206000f350005b63dfe05031600051141561194457341561193657600080fd5b60045460005260206000f350005b6370a08231600051141561198b57341561195d57600080fd5b600435602051811061196e57600080fd5b50600560043560e05260c052604060c0205460005260206000f350005b6318160ddd60005114156119b25734156119a457600080fd5b60065460005260206000f350005b63be5d1be960005114156119d95734156119cb57600080fd5b60075460005260206000f350005b63e15225366000511415611a405734156119f257600080fd5b6004356020518110611a0357600080fd5b506024356020518110611a1557600080fd5b50600860043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f350005b6313ecb1ca6000511415611a87573415611a5957600080fd5b6004356020518110611a6a57600080fd5b50600960043560e05260c052604060c0205460005260206000f350005b6317e280896000511415611aae573415611aa057600080fd5b600a5460005260206000f350005b63ef78d4fd6000511415611ad5573415611ac757600080fd5b600b5460005260206000f350005b637598108c6000511415611b21573415611aee57600080fd5b6004356c01431e0fae6d7217caa00000008110611b0a57600080fd5b600c60c052602060c020015460005260206000f350005b63fec8ee0c6000511415611b6d573415611b3a57600080fd5b6004356c01431e0fae6d7217caa00000008110611b5657600080fd5b600d60c052602060c020015460005260206000f350005b63de263bfa6000511415611bb4573415611b8657600080fd5b6004356020518110611b9757600080fd5b50600e60043560e05260c052604060c0205460005260206000f350005b639bd324f26000511415611bfb573415611bcd57600080fd5b6004356020518110611bde57600080fd5b50600f60043560e05260c052604060c0205460005260206000f350005b63094007076000511415611c42573415611c1457600080fd5b6004356020518110611c2557600080fd5b50601060043560e05260c052604060c0205460005260206000f350005b63180692d06000511415611c69573415611c5b57600080fd5b60115460005260206000f350005b63bf88a6ff6000511415611c90573415611c8257600080fd5b60125460005260206000f350005b6316fa50b16000511415611cb7573415611ca957600080fd5b60135460005260206000f350005b63aaa626b66000511415611cde573415611cd057600080fd5b60145460005260206000f350005b6313fa13686000511415611d25573415611cf757600080fd5b6004356020518110611d0857600080fd5b50601560043560e05260c052604060c0205460005260206000f350005b639df4ed566000511415611d6c573415611d3e57600080fd5b6004356020518110611d4f57600080fd5b50601660043560e05260c052604060c0205460005260206000f350005b63fd96044b6000511415611db3573415611d8557600080fd5b6004356020518110611d9657600080fd5b50601760043560e05260c052604060c0205460005260206000f350005b5b60006000fd
Loading...
Loading
Loading...
Loading
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.