Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,845 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit | 20419812 | 37 days ago | IN | 0 ETH | 0.00403751 | ||||
Withdraw | 19455907 | 172 days ago | IN | 0 ETH | 0.01438121 | ||||
Withdraw | 19447571 | 173 days ago | IN | 0 ETH | 0.01498207 | ||||
Withdraw | 19438032 | 174 days ago | IN | 0 ETH | 0.02460244 | ||||
Withdraw | 18900170 | 250 days ago | IN | 0 ETH | 0.01094227 | ||||
Deposit | 18811242 | 262 days ago | IN | 0 ETH | 0.01621683 | ||||
Withdraw | 18558066 | 298 days ago | IN | 0 ETH | 0.01396241 | ||||
Deposit | 18489644 | 307 days ago | IN | 0 ETH | 0.00552662 | ||||
Deposit | 18489546 | 307 days ago | IN | 0 ETH | 0.00540728 | ||||
Withdraw | 18485589 | 308 days ago | IN | 0 ETH | 0.01614201 | ||||
Deposit | 18485409 | 308 days ago | IN | 0 ETH | 0.02274379 | ||||
Claim_rewards | 17131232 | 498 days ago | IN | 0 ETH | 0.00448544 | ||||
Claim_rewards | 16033221 | 652 days ago | IN | 0 ETH | 0.00155397 | ||||
Claim_rewards | 15561159 | 718 days ago | IN | 0 ETH | 0.0009634 | ||||
Withdraw | 15453244 | 735 days ago | IN | 0 ETH | 0.00916561 | ||||
Withdraw | 15453238 | 735 days ago | IN | 0 ETH | 0.01161784 | ||||
Withdraw | 15440807 | 737 days ago | IN | 0 ETH | 0.01510072 | ||||
Claim_rewards | 15405190 | 743 days ago | IN | 0 ETH | 0.00147699 | ||||
Withdraw | 15291941 | 761 days ago | IN | 0 ETH | 0.00163986 | ||||
Claim_rewards | 15081891 | 793 days ago | IN | 0 ETH | 0.00135963 | ||||
Withdraw | 15081856 | 793 days ago | IN | 0 ETH | 0.00783835 | ||||
Withdraw | 15017903 | 804 days ago | IN | 0 ETH | 0.01394154 | ||||
Withdraw | 14950944 | 816 days ago | IN | 0 ETH | 0.01580228 | ||||
Withdraw | 14854221 | 832 days ago | IN | 0 ETH | 0.01284057 | ||||
Withdraw | 14854216 | 832 days ago | IN | 0 ETH | 0.01707039 |
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 0x4dC4A289...3a37adec7 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 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 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) # 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]) 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, _reward_contract: address, _rewarded_token: address, _admin: 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 @param _admin Admin who can kill the gauge """ 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 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_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 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 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] @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":"_reward_contract"},{"type":"address","name":"_rewarded_token"},{"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":2303202},{"name":"claimable_tokens","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":2222394},{"name":"claimable_reward","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"view","type":"function","gas":7252},{"name":"kick","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":2308582},{"name":"set_approve_deposit","outputs":[],"inputs":[{"type":"address","name":"addr"},{"type":"bool","name":"can_deposit"}],"stateMutability":"nonpayable","type":"function","gas":35861},{"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":2297},{"name":"kill_me","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":37278},{"name":"commit_transfer_ownership","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":37958},{"name":"apply_transfer_ownership","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":38797},{"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":1876},{"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":2181},{"name":"working_balances","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1996},{"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":2146},{"name":"integrate_checkpoint_of","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2176},{"name":"integrate_fraction","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2206},{"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":2356},{"name":"rewards_for","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2386},{"name":"claimed_rewards_for","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2416},{"name":"admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2231},{"name":"future_admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2261},{"name":"is_killed","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2291}]
Deployed Bytecode
0x341561000a57600080fd5b600436101561001857611ce2565b600035601c526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff800000000000000000000000000000006060526000156102bd575b6101a0526101405261016052610180526004546101c052602061028060246370a0823161020052610140516102205261021c6101c0515afa61009f57600080fd5b601f3d116100ac57600080fd5b600050610280516101e052602061032060046318160ddd6102c0526102dc6101c0515afa6100d957600080fd5b601f3d116100e657600080fd5b600050610320516102a052610160516028808202821582848304141761010b57600080fd5b809050905090506064808204905090506103405260006102a051111561015757600c60c052602060c020546212750081818301101561014957600080fd5b80820190509050421161015a565b60005b156101dc576103408051610180516101e051808202821582848304141761018057600080fd5b809050905090506102a051808061019657600080fd5b820490509050603c80820282158284830414176101b257600080fd5b809050905090506064808204905090508181830110156101d157600080fd5b808201905090508152505b6101605161034051808211156101f257806101f4565b815b905090506103405260096101405160e05260c052604060c02054610360526103405160096101405160e05260c052604060c02055600a546103405181818301101561023e57600080fd5b80820190509050610360518082101561025657600080fd5b808203905090506103805261038051600a55610140516103a052610160516103c052610180516103e052610340516104005261038051610420527f7ecd84343f76a23d2227290e0288da3251b045541698e575a5515af4f04197a360a06103a0a16101a051565b6000156104e7575b6101805261014052610160526013546101a05260006101c05261016051156103ad57602061026060246370a082316101e05230610200526101fc6101a0515afa61030e57600080fd5b601f3d1161031b57600080fd5b600050610260516101c0526012543b61033357600080fd5b600060006004633d18b9126102805261029c60006012545af161035557600080fd5b602061036060246370a082316102e05230610300526102fc6101a0515afa61037c57600080fd5b601f3d1161038957600080fd5b600050610360516101c051808210156103a157600080fd5b808203905090506101c0525b60056101405160e05260c052604060c02054610380526006546103a05260006103c05260006103a051111561041e57670de0b6b3a76400006101c05180820282158284830414176103fd57600080fd5b809050905090506103a051808061041357600080fd5b8204905090506103c0525b6014546103c05181818301101561043457600080fd5b808201905090506103e0526103e05160145560166101405160e05260c052604060c0208054610380516103e05160156101405160e05260c052604060c020548082101561048057600080fd5b80820390509050808202821582848304141761049b57600080fd5b80905090509050670de0b6b3a7640000808204905090508181830110156104c157600080fd5b808201905090508155506103e05160156101405160e05260c052604060c0205561018051565b600015610b6f575b6101805261014052610160526001546101a0526003546101c052600b546101e0526101e0516c01431e0fae6d7217caa0000000811061052d57600080fd5b600c60c052602060c0200154610200526101e0516c01431e0fae6d7217caa0000000811061055a57600080fd5b600d60c052602060c02001546102205260115461024052610240516102605260075461028052610200516102805110151561060c576020610300600463b26b238e6102a0526102bc60006101a0515af16105b357600080fd5b601f3d116105c057600080fd5b6000506103005160075560206103806004632c4e722e6103205261033c6101a0515afa6105ec57600080fd5b601f3d116105f957600080fd5b6000506103805161026052610260516011555b6101c0513b61061a57600080fd5b60006000602463615e52376103a052306103c0526103bc60006101c0515af161064257600080fd5b60096101405160e05260c052604060c0205461042052600a5461044052601a541561066e576000610240525b610200514211156109b25761020051610460526102005162093a8081818301101561069857600080fd5b8082019050905062093a808082049050905062093a8080820282158284830414176106c257600080fd5b8090509050905042808211156106d857806106da565b815b90509050610480526104a060006101f4818352015b61048051610460518082101561070457600080fd5b808203905090506104c05260206105a0604463d3078c946105005230610520526104605162093a808082049050905062093a80808202821582848304141761074b57600080fd5b809050905090506105405261051c6101c0515afa61076857600080fd5b601f3d1161077557600080fd5b6000506105a0516104e052600061044051111561094f5761046051610280511015156107a9576104805161028051106107ac565b60005b156108d8576102208051610240516104e05180820282158284830414176107d257600080fd5b809050905090506102805161046051808210156107ee57600080fd5b80820390509050808202821582848304141761080957600080fd5b8090509050905061044051808061081f57600080fd5b82049050905081818301101561083457600080fd5b8082019050905081525061026051610240526102208051610240516104e051808202821582848304141761086757600080fd5b8090509050905061048051610280518082101561088357600080fd5b80820390509050808202821582848304141761089e57600080fd5b809050905090506104405180806108b457600080fd5b8204905090508181830110156108c957600080fd5b8082019050905081525061094e565b6102208051610240516104e05180820282158284830414176108f957600080fd5b809050905090506104c051808202821582848304141761091857600080fd5b8090509050905061044051808061092e57600080fd5b82049050905081818301101561094357600080fd5b808201905090508152505b5b4261048051141561095f576109af565b61048051610460526104805162093a8081818301101561097e57600080fd5b8082019050905042808211156109945780610996565b815b90509050610480525b81516001018083528114156106ef575b50505b6101e080516001606051818301806040519013156109cf57600080fd5b80919012156109dd57600080fd5b905090508152506101e051600b55426101e0516c01431e0fae6d7217caa00000008110610a0957600080fd5b600c60c052602060c0200155610220516101e0516c01431e0fae6d7217caa00000008110610a3657600080fd5b600d60c052602060c020015560106101405160e05260c052604060c02080546104205161022051600e6101405160e05260c052604060c0205480821015610a7c57600080fd5b808203905090508082028215828483041417610a9757600080fd5b80905090509050670de0b6b3a764000080820490509050818183011015610abd57600080fd5b8082019050905081555061022051600e6101405160e05260c052604060c0205542600f6101405160e05260c052604060c020556101406105c0525b6105c0515160206105c051016105c0526104606105c0511015610b1a57610af8565b610140516105e0526101605161060052610600516105e051600658016102c5565b6104406105c0525b6105c0515260206105c051036105c0526101406105c051101515610b6657610b43565b60005061018051565b634b8200936000511415610c375760043560a01c15610b8d57600080fd5b600435331415610b9e576001610ba4565b60005433145b5b610bae57600080fd5b600435610140526001610160526101605161014051600658016104ef565b6000506101405161016051610180516101a0516004356101e052600560043560e05260c052604060c02054610200526006546102205261022051610200516101e0516006580161005e565b6101a052610180526101605261014052600050600160005260206000f350005b63331345836000511415610ce75760043560a01c15610c5557600080fd5b600435610140526001610160526101605161014051600658016104ef565b600050601060043560e05260c052604060c0205460206102606044638b752bb06101c0526004356101e05230610200526101dc6000545afa610cb457600080fd5b601f3d11610cc157600080fd5b6000506102605180821015610cd557600080fd5b8082039050905060005260206000f350005b63d2797b596000511415610e5d5760043560a01c15610d0557600080fd5b60206101e06024628cc26261016052306101805261017c6012545afa610d2a57600080fd5b601f3d11610d3757600080fd5b6000506101e05161014052600560043560e05260c052604060c0205461020052600654610220526000610240526000610220511115610db257670de0b6b3a7640000610140518082028215828483041417610d9157600080fd5b80905090509050610220518080610da757600080fd5b820490509050610240525b60145461024051818183011015610dc857600080fd5b8082019050905061026052601660043560e05260c052604060c020546102005161026051601560043560e05260c052604060c0205480821015610e0a57600080fd5b808203905090508082028215828483041417610e2557600080fd5b80905090509050670de0b6b3a764000080820490509050818183011015610e4b57600080fd5b8082019050905060005260206000f350005b6396c5517560005114156110d85760043560a01c15610e7b57600080fd5b60045461014052600f60043560e05260c052604060c020546101605260206102e0604463da020a1861024052600435610260526020610220602463010ae7576101a0526004356101c0526101bc610140515afa610ed757600080fd5b601f3d11610ee457600080fd5b600050610220516102805261025c610140515afa610f0157600080fd5b601f3d11610f0e57600080fd5b6000506102e05161018052600560043560e05260c052604060c0205461030052602061044060246370a082316103c0526004356103e0526103dc6004545afa610f5657600080fd5b601f3d11610f6357600080fd5b600050610440511515610f77576001610f81565b6101605161018051115b5b610f8b57600080fd5b6103005160288082028215828483041417610fa557600080fd5b80905090509050606480820490509050600960043560e05260c052604060c0205411610fd057600080fd5b610140610460525b61046051516020610460510161046052610460610460511015610ffa57610fd8565b6004356104805260016104a0526104a05161048051600658016104ef565b610440610460525b610460515260206104605103610460526101406104605110151561104357611020565b600050610140610500525b610500515160206105005101610500526105006105005110156110705761104e565b60043561052052600560043560e05260c052604060c0205461054052600654610560526105605161054051610520516006580161005e565b6104e0610500525b61050051526020610500510361050052610140610500511015156110d3576110b0565b600050005b631d2747d460005114156111285760043560a01c156110f657600080fd5b60243560011c1561110657600080fd5b602435600860043560e05260c052604060c0203360e05260c052604060c02055005b63b6b55f256000511415611140573361014052611176565b636e553f65600051141561116e5760243560a01c1561115e57600080fd5b6020602461014037600050611176565b6000156113e8575b62ffffff541561118557600080fd5b600162ffffff55336101405118156111ff576308c379a061016052602061018052600c6101a0527f4e6f7420617070726f76656400000000000000000000000000000000000000006101c0526101a05060083360e05260c052604060c0206101405160e05260c052604060c020546111fe57606461017cfd5b5b6101405161014051610220526001610240526102405161022051600658016104ef565b61014052600050600060043518156113ad5760056101405160e05260c052604060c0205460043581818301101561125857600080fd5b808201905090506102a05260065460043581818301101561127857600080fd5b808201905090506102c0526102a05160056101405160e05260c052604060c020556102c0516006556101406102e0525b6102e0515160206102e051016102e0526102e06102e05110156112ca576112a8565b61014051610300526102a051610320526102c051610340526103405161032051610300516006580161005e565b6102c06102e0525b6102e0515260206102e051036102e0526101406102e051101515611322576112ff565b600050602061046060646323b872dd6103a052336103c052306103e052600435610400526103bc60006002545af161135957600080fd5b601f3d1161136657600080fd5b6000506104605161137657600080fd5b6012543b61138357600080fd5b60006000602463a694fc3a610480526004356104a05261049c60006012545af16113ac57600080fd5b5b60043561050052610140517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c6020610500a2600062ffffff55005b632e1a7d4d600051141561140157600161014052611437565b6338d07436600051141561142f5760243560011c1561141f57600080fd5b6020602461014037600050611437565b60001561160b575b62ffffff541561144657600080fd5b600162ffffff55610140513361018052610140516101a0526101a05161018051600658016104ef565b6101405260005060053360e05260c052604060c020546004358082101561149557600080fd5b8082039050905061020052600654600435808210156114b357600080fd5b80820390509050610220526102005160053360e05260c052604060c02055610220516006556101405161016051610180516101a0516101c0516101e051610200516102205133610260526102005161028052610220516102a0526102a05161028051610260516006580161005e565b61022052610200526101e0526101c0526101a052610180526101605261014052600050600060043511156115d3576012543b61155d57600080fd5b600060006024632e1a7d4d610300526004356103205261031c60006012545af161158657600080fd5b6020610420604463a9059cbb61038052336103a0526004356103c05261039c60006002545af16115b557600080fd5b601f3d116115c257600080fd5b600050610420516115d257600080fd5b5b60043561044052337f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243646020610440a2600062ffffff55005b63e6f1daf26000511415611623573361014052611659565b6384e9bd7e60005114156116515760043560a01c1561164157600080fd5b6020600461014037600050611659565b600015611744575b62ffffff541561166857600080fd5b600162ffffff5561014051610140516101805260016101a0526101a05161018051600658016102c5565b6101405260005060166101405160e05260c052604060c020546102005260206102c0604463a9059cbb6102205261014051610240526102005160176101405160e05260c052604060c02054808210156116ea57600080fd5b808203905090506102605261023c60006013545af161170857600080fd5b601f3d1161171557600080fd5b6000506102c05161172557600080fd5b6102005160176101405160e05260c052604060c02055600062ffffff55005b63d31f3f6d600051141561178557600b546c01431e0fae6d7217caa0000000811061176e57600080fd5b600c60c052602060c020015460005260206000f350005b63e369885360005114156117aa5760185433146117a157600080fd5b601a5415601a55005b636b441a40600051141561180c5760043560a01c156117c857600080fd5b60185433146117d657600080fd5b600435601955600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b636a1c05ae600051141561187757601854331461182857600080fd5b601954610140526000610140511861183f57600080fd5b6101405160185561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b630754617260005114156118935760005460005260206000f350005b6376d8b11760005114156118af5760015460005260206000f350005b6382c6306660005114156118cb5760025460005260206000f350005b63f77c479160005114156118e75760035460005260206000f350005b63dfe0503160005114156119035760045460005260206000f350005b6370a08231600051141561193d5760043560a01c1561192157600080fd5b600560043560e05260c052604060c0205460005260206000f350005b6318160ddd60005114156119595760065460005260206000f350005b63be5d1be960005114156119755760075460005260206000f350005b63e152253660005114156119cd5760043560a01c1561199357600080fd5b60243560a01c156119a357600080fd5b600860043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f350005b6313ecb1ca6000511415611a075760043560a01c156119eb57600080fd5b600960043560e05260c052604060c0205460005260206000f350005b6317e280896000511415611a2357600a5460005260206000f350005b63ef78d4fd6000511415611a3f57600b5460005260206000f350005b637598108c6000511415611a80576004356c01431e0fae6d7217caa00000008110611a6957600080fd5b600c60c052602060c020015460005260206000f350005b63fec8ee0c6000511415611ac1576004356c01431e0fae6d7217caa00000008110611aaa57600080fd5b600d60c052602060c020015460005260206000f350005b63de263bfa6000511415611afb5760043560a01c15611adf57600080fd5b600e60043560e05260c052604060c0205460005260206000f350005b639bd324f26000511415611b355760043560a01c15611b1957600080fd5b600f60043560e05260c052604060c0205460005260206000f350005b63094007076000511415611b6f5760043560a01c15611b5357600080fd5b601060043560e05260c052604060c0205460005260206000f350005b63180692d06000511415611b8b5760115460005260206000f350005b63bf88a6ff6000511415611ba75760125460005260206000f350005b6316fa50b16000511415611bc35760135460005260206000f350005b63aaa626b66000511415611bdf5760145460005260206000f350005b6313fa13686000511415611c195760043560a01c15611bfd57600080fd5b601560043560e05260c052604060c0205460005260206000f350005b639df4ed566000511415611c535760043560a01c15611c3757600080fd5b601660043560e05260c052604060c0205460005260206000f350005b63fd96044b6000511415611c8d5760043560a01c15611c7157600080fd5b601760043560e05260c052604060c0205460005260206000f350005b63f851a4406000511415611ca95760185460005260206000f350005b6317f7182a6000511415611cc55760195460005260206000f350005b639c868ac06000511415611ce157601a5460005260206000f350005b5b60006000fd
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.007298 | 38,729.2227 | $282.66 |
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.