Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 11,429 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 21240091 | 40 hrs ago | IN | 0 ETH | 0.00390871 | ||||
Withdraw | 20114853 | 158 days ago | IN | 0 ETH | 0.00459975 | ||||
Withdraw | 19710278 | 215 days ago | IN | 0 ETH | 0.00519499 | ||||
Withdraw | 19537742 | 239 days ago | IN | 0 ETH | 0.00833338 | ||||
Withdraw | 19537306 | 239 days ago | IN | 0 ETH | 0.00857965 | ||||
Withdraw | 19238729 | 281 days ago | IN | 0 ETH | 0.00881333 | ||||
Withdraw | 18832038 | 338 days ago | IN | 0 ETH | 0.02454655 | ||||
Withdraw | 18557281 | 377 days ago | IN | 0 ETH | 0.01616424 | ||||
Withdraw | 18431418 | 394 days ago | IN | 0 ETH | 0.01451373 | ||||
Withdraw | 17397267 | 539 days ago | IN | 0 ETH | 0.01253474 | ||||
Withdraw | 17251362 | 560 days ago | IN | 0 ETH | 0.02129224 | ||||
Withdraw | 16712833 | 636 days ago | IN | 0 ETH | 0.0101119 | ||||
Withdraw | 16633692 | 647 days ago | IN | 0 ETH | 0.00970613 | ||||
Deposit | 16577941 | 655 days ago | IN | 0 ETH | 0.01498547 | ||||
Withdraw | 16508152 | 664 days ago | IN | 0 ETH | 0.00597831 | ||||
Withdraw | 16505200 | 665 days ago | IN | 0 ETH | 0.00491912 | ||||
Withdraw | 16494479 | 666 days ago | IN | 0 ETH | 0.00738791 | ||||
Withdraw | 16483043 | 668 days ago | IN | 0 ETH | 0.00496321 | ||||
Withdraw | 16476575 | 669 days ago | IN | 0 ETH | 0.00527056 | ||||
Withdraw | 16467360 | 670 days ago | IN | 0 ETH | 0.00496055 | ||||
Set_approve_depo... | 16424049 | 676 days ago | IN | 0 ETH | 0.00090862 | ||||
Withdraw | 16411096 | 678 days ago | IN | 0 ETH | 0.00510676 | ||||
Withdraw | 16289337 | 695 days ago | IN | 0 ETH | 0.00572439 | ||||
Withdraw | 16274342 | 697 days ago | IN | 0 ETH | 0.00790196 | ||||
Apply_transfer_o... | 16254228 | 700 days ago | IN | 0 ETH | 0.00033792 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
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 0xC5cfaDA8...49639b023 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.5
Contract Source Code (Vyper language format)
# @version 0.2.5 """ @title Liquidity Gauge @author Curve Finance @license MIT @notice Used for measuring liquidity and insurance """ 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 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 event CommitOwnership: admin: address event ApplyOwnership: admin: address 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) admin: public(address) future_admin: public(address) # Can and will be a smart contract is_killed: public(bool) @external def __init__(lp_addr: address, _minter: address, _admin: address): """ @notice Contract constructor @param lp_addr Liquidity Pool contract address @param _minter Minter contract address @param _admin Admin who can kill the gauge """ assert lp_addr != ZERO_ADDRESS assert _minter != 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.admin = _admin @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(addr: address): """ @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 if self.is_killed: # Stop distributing inflation as soon as killed rate = 0 # 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 @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) 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) return self.integrate_fraction[addr] - Minter(self.minter).minted(addr, self) @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) 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) 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) log Deposit(addr, _value) @external @nonreentrant('lock') def withdraw(_value: uint256): """ @notice Withdraw `_value` LP tokens @param _value Number of tokens to withdraw """ self._checkpoint(msg.sender) _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) assert ERC20(self.lp_token).transfer(msg.sender, _value) log Withdraw(msg.sender, _value) @external @view def integrate_checkpoint() -> uint256: return self.period_timestamp[self.period] @external def kill_me(): assert msg.sender == self.admin self.is_killed = not self.is_killed @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 apply_transfer_ownership(): """ @notice Apply pending ownership transfer """ assert msg.sender == self.admin # dev: admin only _admin: address = self.future_admin assert _admin != ZERO_ADDRESS # dev: admin not set self.admin = _admin log ApplyOwnership(_admin)
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"},{"name":"CommitOwnership","inputs":[{"type":"address","name":"admin","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyOwnership","inputs":[{"type":"address","name":"admin","indexed":false}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[{"type":"address","name":"lp_addr"},{"type":"address","name":"_minter"},{"type":"address","name":"_admin"}],"stateMutability":"nonpayable","type":"constructor"},{"name":"user_checkpoint","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":2070408},{"name":"claimable_tokens","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":1989612},{"name":"kick","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":2075769},{"name":"set_approve_deposit","outputs":[],"inputs":[{"type":"address","name":"addr"},{"type":"bool","name":"can_deposit"}],"stateMutability":"nonpayable","type":"function","gas":35801},{"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","gas":2199513},{"name":"integrate_checkpoint","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2207},{"name":"kill_me","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":37188},{"name":"commit_transfer_ownership","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":37868},{"name":"apply_transfer_ownership","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":38707},{"name":"minter","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1421},{"name":"crv_token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1451},{"name":"lp_token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1481},{"name":"controller","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1511},{"name":"voting_escrow","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1541},{"name":"balanceOf","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1786},{"name":"totalSupply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1601},{"name":"future_epoch_time","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1631},{"name":"approved_to_deposit","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"arg0"},{"type":"address","name":"arg1"}],"stateMutability":"view","type":"function","gas":2091},{"name":"working_balances","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1906},{"name":"working_supply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1721},{"name":"period","outputs":[{"type":"int128","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1751},{"name":"period_timestamp","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":1890},{"name":"integrate_inv_supply","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":1920},{"name":"integrate_inv_supply_of","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2056},{"name":"integrate_checkpoint_of","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2086},{"name":"integrate_fraction","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2116},{"name":"inflation_rate","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1931},{"name":"admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1961},{"name":"future_admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1991},{"name":"is_killed","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2021}]
Deployed Bytecode
0x341561000a57600080fd5b600436101561001857611575565b600035601c526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff800000000000000000000000000000006060526000156102bd575b6101a0526101405261016052610180526004546101c052602061028060246370a0823161020052610140516102205261021c6101c0515afa61009f57600080fd5b601f3d116100ac57600080fd5b600050610280516101e052602061032060046318160ddd6102c0526102dc6101c0515afa6100d957600080fd5b601f3d116100e657600080fd5b600050610320516102a052610160516028808202821582848304141761010b57600080fd5b809050905090506064808204905090506103405260006102a051111561015757600c60c052602060c020546212750081818301101561014957600080fd5b80820190509050421161015a565b60005b156101dc576103408051610180516101e051808202821582848304141761018057600080fd5b809050905090506102a051808061019657600080fd5b820490509050603c80820282158284830414176101b257600080fd5b809050905090506064808204905090508181830110156101d157600080fd5b808201905090508152505b6101605161034051808211156101f257806101f4565b815b905090506103405260096101405160e05260c052604060c02054610360526103405160096101405160e05260c052604060c02055600a546103405181818301101561023e57600080fd5b80820190509050610360518082101561025657600080fd5b808203905090506103805261038051600a55610140516103a052610160516103c052610180516103e052610340516104005261038051610420527f7ecd84343f76a23d2227290e0288da3251b045541698e575a5515af4f04197a360a06103a0a16101a051565b6000156108c8575b6101605261014052600154610180526003546101a052600b546101c0526101c0516c01431e0fae6d7217caa000000081106102ff57600080fd5b600c60c052602060c02001546101e0526101c0516c01431e0fae6d7217caa0000000811061032c57600080fd5b600d60c052602060c020015461020052601154610220526102205161024052600754610260526101e051610260511015156103de5760206102e0600463b26b238e6102805261029c6000610180515af161038557600080fd5b601f3d1161039257600080fd5b6000506102e05160075560206103606004632c4e722e6103005261031c610180515afa6103be57600080fd5b601f3d116103cb57600080fd5b6000506103605161024052610240516011555b6101a0513b6103ec57600080fd5b60006000602463615e523761038052306103a05261039c60006101a0515af161041457600080fd5b60096101405160e05260c052604060c0205461040052600a546104205260145415610440576000610220525b6101e051421115610784576101e051610440526101e05162093a8081818301101561046a57600080fd5b8082019050905062093a808082049050905062093a80808202821582848304141761049457600080fd5b8090509050905042808211156104aa57806104ac565b815b905090506104605261048060006101f4818352015b6104605161044051808210156104d657600080fd5b808203905090506104a0526020610580604463d3078c946104e05230610500526104405162093a808082049050905062093a80808202821582848304141761051d57600080fd5b80905090509050610520526104fc6101a0515afa61053a57600080fd5b601f3d1161054757600080fd5b600050610580516104c052600061042051111561072157610440516102605110151561057b5761046051610260511061057e565b60005b156106aa576102008051610220516104c05180820282158284830414176105a457600080fd5b809050905090506102605161044051808210156105c057600080fd5b8082039050905080820282158284830414176105db57600080fd5b809050905090506104205180806105f157600080fd5b82049050905081818301101561060657600080fd5b8082019050905081525061024051610220526102008051610220516104c051808202821582848304141761063957600080fd5b8090509050905061046051610260518082101561065557600080fd5b80820390509050808202821582848304141761067057600080fd5b8090509050905061042051808061068657600080fd5b82049050905081818301101561069b57600080fd5b80820190509050815250610720565b6102008051610220516104c05180820282158284830414176106cb57600080fd5b809050905090506104a05180820282158284830414176106ea57600080fd5b8090509050905061042051808061070057600080fd5b82049050905081818301101561071557600080fd5b808201905090508152505b5b4261046051141561073157610781565b61046051610440526104605162093a8081818301101561075057600080fd5b8082019050905042808211156107665780610768565b815b90509050610460525b81516001018083528114156104c1575b50505b6101c080516001606051818301806040519013156107a157600080fd5b80919012156107af57600080fd5b905090508152506101c051600b55426101c0516c01431e0fae6d7217caa000000081106107db57600080fd5b600c60c052602060c0200155610200516101c0516c01431e0fae6d7217caa0000000811061080857600080fd5b600d60c052602060c020015560106101405160e05260c052604060c02080546104005161020051600e6101405160e05260c052604060c020548082101561084e57600080fd5b80820390509050808202821582848304141761086957600080fd5b80905090509050670de0b6b3a76400008082049050905081818301101561088f57600080fd5b8082019050905081555061020051600e6101405160e05260c052604060c0205542600f6101405160e05260c052604060c0205561016051565b634b820093600051141561097e5760043560a01c156108e657600080fd5b6004353314156108f75760016108fd565b60005433145b5b61090757600080fd5b6004356101405261014051600658016102c5565b6000506101405161016051610180516004356101c052600560043560e05260c052604060c020546101e05260065461020052610200516101e0516101c0516006580161005e565b610180526101605261014052600050600160005260206000f350005b63331345836000511415610a245760043560a01c1561099c57600080fd5b6004356101405261014051600658016102c5565b600050601060043560e05260c052604060c0205460206102406044638b752bb06101a0526004356101c052306101e0526101bc6000545afa6109f157600080fd5b601f3d116109fe57600080fd5b6000506102405180821015610a1257600080fd5b8082039050905060005260206000f350005b6396c551756000511415610c955760043560a01c15610a4257600080fd5b60045461014052600f60043560e05260c052604060c020546101605260206102e0604463da020a1861024052600435610260526020610220602463010ae7576101a0526004356101c0526101bc610140515afa610a9e57600080fd5b601f3d11610aab57600080fd5b600050610220516102805261025c610140515afa610ac857600080fd5b601f3d11610ad557600080fd5b6000506102e05161018052600560043560e05260c052604060c0205461030052602061044060246370a082316103c0526004356103e0526103dc6004545afa610b1d57600080fd5b601f3d11610b2a57600080fd5b600050610440511515610b3e576001610b48565b6101605161018051115b5b610b5257600080fd5b6103005160288082028215828483041417610b6c57600080fd5b80905090509050606480820490509050600960043560e05260c052604060c0205411610b9757600080fd5b610140610460525b61046051516020610460510161046052610460610460511015610bc157610b9f565b6004356104805261048051600658016102c5565b610440610460525b6104605152602061046051036104605261014061046051101515610c0057610bdd565b6000506101406104e0525b6104e0515160206104e051016104e0526104e06104e0511015610c2d57610c0b565b60043561050052600560043560e05260c052604060c0205461052052600654610540526105405161052051610500516006580161005e565b6104c06104e0525b6104e0515260206104e051036104e0526101406104e051101515610c9057610c6d565b600050005b631d2747d46000511415610ce55760043560a01c15610cb357600080fd5b60243560011c15610cc357600080fd5b602435600860043560e05260c052604060c0203360e05260c052604060c02055005b63b6b55f256000511415610cfd573361014052610d33565b636e553f656000511415610d2b5760243560a01c15610d1b57600080fd5b6020602461014037600050610d33565b600015610f65575b62ffffff5415610d4257600080fd5b600162ffffff5533610140511815610dbc576308c379a061016052602061018052600c6101a0527f4e6f7420617070726f76656400000000000000000000000000000000000000006101c0526101a05060083360e05260c052604060c0206101405160e05260c052604060c02054610dbb57606461017cfd5b5b61014051610140516102205261022051600658016102c5565b6101405260005060006004351815610f2a5760056101405160e05260c052604060c02054600435818183011015610e0b57600080fd5b8082019050905061028052600654600435818183011015610e2b57600080fd5b808201905090506102a0526102805160056101405160e05260c052604060c020556102a0516006556101406102c0525b6102c0515160206102c051016102c0526102c06102c0511015610e7d57610e5b565b610140516102e05261028051610300526102a0516103205261032051610300516102e0516006580161005e565b6102a06102c0525b6102c0515260206102c051036102c0526101406102c051101515610ed557610eb2565b600050602061044060646323b872dd61038052336103a052306103c0526004356103e05261039c60006002545af1610f0c57600080fd5b601f3d11610f1957600080fd5b60005061044051610f2957600080fd5b5b60043561046052610140517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c6020610460a2600062ffffff55005b632e1a7d4d60005114156110d95762ffffff5415610f8257600080fd5b600162ffffff55336101405261014051600658016102c5565b60005060053360e05260c052604060c0205460043580821015610fbd57600080fd5b808203905090506101a05260065460043580821015610fdb57600080fd5b808203905090506101c0526101a05160053360e05260c052604060c020556101c0516006556101405161016051610180516101a0516101c05133610200526101a051610220526101c051610240526102405161022051610200516006580161005e565b6101c0526101a0526101805261016052610140526000506020610340604463a9059cbb6102a052336102c0526004356102e0526102bc60006002545af161108457600080fd5b601f3d1161109157600080fd5b600050610340516110a157600080fd5b60043561036052337f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243646020610360a2600062ffffff55005b63d31f3f6d600051141561111a57600b546c01431e0fae6d7217caa0000000811061110357600080fd5b600c60c052602060c020015460005260206000f350005b63e3698853600051141561113f57601254331461113657600080fd5b60145415601455005b636b441a4060005114156111a15760043560a01c1561115d57600080fd5b601254331461116b57600080fd5b600435601355600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b636a1c05ae600051141561120c5760125433146111bd57600080fd5b60135461014052600061014051186111d457600080fd5b6101405160125561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b630754617260005114156112285760005460005260206000f350005b6376d8b11760005114156112445760015460005260206000f350005b6382c6306660005114156112605760025460005260206000f350005b63f77c4791600051141561127c5760035460005260206000f350005b63dfe0503160005114156112985760045460005260206000f350005b6370a0823160005114156112d25760043560a01c156112b657600080fd5b600560043560e05260c052604060c0205460005260206000f350005b6318160ddd60005114156112ee5760065460005260206000f350005b63be5d1be9600051141561130a5760075460005260206000f350005b63e152253660005114156113625760043560a01c1561132857600080fd5b60243560a01c1561133857600080fd5b600860043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f350005b6313ecb1ca600051141561139c5760043560a01c1561138057600080fd5b600960043560e05260c052604060c0205460005260206000f350005b6317e2808960005114156113b857600a5460005260206000f350005b63ef78d4fd60005114156113d457600b5460005260206000f350005b637598108c6000511415611415576004356c01431e0fae6d7217caa000000081106113fe57600080fd5b600c60c052602060c020015460005260206000f350005b63fec8ee0c6000511415611456576004356c01431e0fae6d7217caa0000000811061143f57600080fd5b600d60c052602060c020015460005260206000f350005b63de263bfa60005114156114905760043560a01c1561147457600080fd5b600e60043560e05260c052604060c0205460005260206000f350005b639bd324f260005114156114ca5760043560a01c156114ae57600080fd5b600f60043560e05260c052604060c0205460005260206000f350005b630940070760005114156115045760043560a01c156114e857600080fd5b601060043560e05260c052604060c0205460005260206000f350005b63180692d060005114156115205760115460005260206000f350005b63f851a440600051141561153c5760125460005260206000f350005b6317f7182a60005114156115585760135460005260206000f350005b639c868ac060005114156115745760145460005260206000f350005b5b60006000fd
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.