Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| 0x613e7d51 | 24184012 | 45 days ago | Contract Creation | 0 ETH | |||
| 0x6110c951 | 24184012 | 45 days ago | Contract Creation | 0 ETH | |||
| 0x61224551 | 24184012 | 45 days ago | Contract Creation | 0 ETH | |||
| 0x615a0e51 | 24184012 | 45 days ago | Contract Creation | 0 ETH | |||
| 0x61032951 | 24184012 | 45 days ago | Contract Creation | 0 ETH | |||
| Transfer* | 24184003 | 45 days ago | Contract Creation | 0 ETH | |||
| 0x6110c951 | 24184003 | 45 days ago | Contract Creation | 0 ETH | |||
| 0x61224551 | 24184003 | 45 days ago | Contract Creation | 0 ETH | |||
| 0x615a0e51 | 24184003 | 45 days ago | Contract Creation | 0 ETH | |||
| 0x61032951 | 24184003 | 45 days ago | Contract Creation | 0 ETH | |||
| 0x613e7d51 | 23784106 | 101 days ago | Contract Creation | 0 ETH | |||
| 0x6110c951 | 23784106 | 101 days ago | Contract Creation | 0 ETH | |||
| 0x61224551 | 23784106 | 101 days ago | Contract Creation | 0 ETH | |||
| 0x615a0e51 | 23784106 | 101 days ago | Contract Creation | 0 ETH | |||
| 0x61032951 | 23784106 | 101 days ago | Contract Creation | 0 ETH | |||
| 0x613e7d51 | 23784078 | 101 days ago | Contract Creation | 0 ETH | |||
| 0x6110c951 | 23784078 | 101 days ago | Contract Creation | 0 ETH | |||
| 0x61224551 | 23784078 | 101 days ago | Contract Creation | 0 ETH | |||
| 0x615a0e51 | 23784078 | 101 days ago | Contract Creation | 0 ETH | |||
| 0x61032951 | 23784078 | 101 days ago | Contract Creation | 0 ETH | |||
| 0x613e7d51 | 23784065 | 101 days ago | Contract Creation | 0 ETH | |||
| 0x6110c951 | 23784065 | 101 days ago | Contract Creation | 0 ETH | |||
| 0x61224551 | 23784065 | 101 days ago | Contract Creation | 0 ETH | |||
| 0x615a0e51 | 23784065 | 101 days ago | Contract Creation | 0 ETH | |||
| 0x61032951 | 23784065 | 101 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xaDE7cb5e...51500d4Cd The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Factory
Compiler Version
vyper:0.4.3
Contract Source Code (Vyper Json-Input format)
# @version 0.4.3
"""
@title Factory
@notice Factory for Yield Basis
@author Scientia Spectra AG
@license Copyright (c) 2025
"""
from ethereum.ercs import IERC20
from ethereum.ercs import IERC20Detailed
interface LT:
def set_amm(amm: address): nonpayable
def set_rate(rate: uint256): nonpayable
def set_staker(staker: address): nonpayable
def allocate_stablecoins(limit: uint256): nonpayable
interface CurveCryptoPool:
def coins(i: uint256) -> address: view
def decimals() -> uint8: view
interface LPOracle:
def AGG() -> address: view
interface Agg:
def price() -> uint256: view
interface VirtualPool:
def IMPL() -> address: view
struct Market:
asset_token: IERC20
cryptopool: CurveCryptoPool
amm: address
lt: address
price_oracle: address
virtual_pool: address
staker: address
event SetImplementations:
amm: address
lt: address
virtual_pool: address
price_oracle: address
staker: address
event SetAllocator:
allocator: address
amount: uint256
event SetFeeReceiver:
fee_receiver: address
event SetAgg:
agg: address
event SetFlash:
flash: address
event SetAdmin:
admin: address
emergency_admin: address
old_admin: address
old_emergency_admin: address
event SetMinAdminFee:
admin_fee: uint256
event SetGaugeController:
gc: address
event MarketParameters:
idx: indexed(uint256)
asset_token: indexed(address)
cryptopool: indexed(address)
amm: address
lt: address
price_oracle: address
virtual_pool: address
staker: address
agg: address
MAX_MARKETS: public(constant(uint256)) = 50000
LEVERAGE: public(constant(uint256)) = 2 * 10**18
gauge_controller: public(address)
amm_impl: public(address)
lt_impl: public(address)
virtual_pool_impl: public(address)
price_oracle_impl: public(address)
staker_impl: public(address)
agg: public(address)
flash: public(address)
STABLECOIN: public(immutable(IERC20))
fee_receiver: public(address)
admin: public(address)
emergency_admin: public(address)
min_admin_fee: public(uint256)
markets: public(Market[MAX_MARKETS])
market_count: public(uint256)
allocators: public(HashMap[address, uint256])
mint_factory: public(address)
@deploy
def __init__(
stablecoin: IERC20,
amm_impl: address,
lt_impl: address,
virtual_pool_impl: address,
price_oracle_impl: address,
staker_impl: address,
agg: address,
flash: address,
fee_receiver: address,
gauge_controller: address,
admin: address,
emergency_admin: address
):
assert admin != empty(address)
assert stablecoin.address != empty(address)
assert agg != empty(address)
assert price_oracle_impl != empty(address)
assert amm_impl != empty(address)
assert lt_impl != empty(address)
assert staticcall IERC20Detailed(stablecoin.address).decimals() == 18
STABLECOIN = stablecoin
self.gauge_controller = gauge_controller
self.amm_impl = amm_impl
self.lt_impl = lt_impl
self.virtual_pool_impl = virtual_pool_impl
self.price_oracle_impl = price_oracle_impl
self.staker_impl = staker_impl
self.agg = agg
self.flash = flash
self.fee_receiver = fee_receiver
self.admin = admin
self.emergency_admin = emergency_admin
self.min_admin_fee = 10**17
self._validate_agg()
log SetImplementations(amm=amm_impl, lt=lt_impl, virtual_pool=virtual_pool_impl, price_oracle=price_oracle_impl,
staker=staker_impl)
@internal
@view
def _validate_agg():
p: uint256 = staticcall Agg(self.agg).price()
assert p > 9 * 10**17 and p < 11 * 10**17, "Bad aggregator"
@external
@nonreentrant
def add_market(
pool: CurveCryptoPool,
fee: uint256,
rate: uint256,
debt_ceiling: uint256
) -> Market:
"""
@notice Create a new market/pool
@param pool Curve cryptopool which supports "refueling"
@param fee Fee of the releverage AMM (1e18-based)
@param rate Initial borrow/refueling rate in 1e18-based fraction per second
@param debt_ceiling Debt ceiling of the market. Factory to have enough stablecoins
"""
assert msg.sender == self.admin, "Access"
assert staticcall pool.coins(0) == STABLECOIN.address, "Wrong stablecoin"
assert staticcall pool.decimals() == 18
market: Market = empty(Market)
agg: address = self.agg
market.asset_token = IERC20(staticcall pool.coins(1))
market.cryptopool = pool
market.price_oracle = create_from_blueprint(self.price_oracle_impl, pool.address, agg)
market.lt = create_from_blueprint(
self.lt_impl,
market.asset_token.address,
STABLECOIN,
pool.address,
self
)
market.amm = create_from_blueprint(
self.amm_impl,
market.lt,
STABLECOIN.address,
pool.address,
LEVERAGE,
fee,
market.price_oracle
)
extcall LT(market.lt).set_amm(market.amm)
extcall LT(market.lt).set_rate(rate)
assert extcall STABLECOIN.approve(market.lt, max_value(uint256), default_return_value=True)
extcall LT(market.lt).allocate_stablecoins(debt_ceiling)
if self.virtual_pool_impl != empty(address) and self.flash != empty(address):
market.virtual_pool = create_from_blueprint(
self.virtual_pool_impl,
market.amm
)
if self.staker_impl != empty(address):
market.staker = create_from_blueprint(
self.staker_impl,
market.lt)
extcall LT(market.lt).set_staker(market.staker)
i: uint256 = self.market_count
assert i < MAX_MARKETS, "Too many markets"
self.market_count = i + 1
self.markets[i] = market
log MarketParameters(
idx=i,
asset_token=market.asset_token.address,
cryptopool=market.cryptopool.address,
amm=market.amm,
lt=market.lt,
price_oracle=market.price_oracle,
virtual_pool=market.virtual_pool,
staker=market.staker,
agg=agg
)
return market
@external
def fill_staker_vpool(i: uint256):
"""
@notice Set staker and vpool for market i in case they were set or changed in the implementations
"""
assert msg.sender == self.admin, "Access"
assert i < self.market_count, "Nonexistent market"
market: Market = self.markets[i]
assert market.lt != empty(address)
assert market.amm != empty(address)
new_virtual_pool: bool = False
if market.virtual_pool == empty(address):
new_virtual_pool = self.virtual_pool_impl != empty(address) and self.flash != empty(address)
else:
new_virtual_pool = (staticcall VirtualPool(market.virtual_pool).IMPL()) != self.virtual_pool_impl
if new_virtual_pool:
market.virtual_pool = create_from_blueprint(
self.virtual_pool_impl,
market.amm
)
if market.staker == empty(address) and self.staker_impl != empty(address):
market.staker = create_from_blueprint(
self.staker_impl,
market.lt)
extcall LT(market.lt).set_staker(market.staker)
self.markets[i] = market
log MarketParameters(
idx=i,
asset_token=market.asset_token.address,
cryptopool=market.cryptopool.address,
amm=market.amm,
lt=market.lt,
price_oracle=market.price_oracle,
virtual_pool=market.virtual_pool,
staker=market.staker,
agg=(staticcall LPOracle(market.price_oracle).AGG())
)
@external
@nonreentrant
def set_mint_factory(mint_factory: address):
"""
@notice Set factory to mint stablecoins (like crvUSD). This can only ever be done once. Permission to get coins back is given
"""
assert msg.sender == self.admin, "Access"
assert self.mint_factory == empty(address), "Only set once"
assert mint_factory != empty(address)
self.mint_factory = mint_factory
# crvUSD factory can take back as much as it wants. Very important function - this is why it can be called only once
assert extcall STABLECOIN.approve(mint_factory, max_value(uint256), default_return_value=True)
log SetAllocator(allocator=mint_factory, amount=max_value(uint256))
@external
@nonreentrant
def set_allocator(allocator: address, amount: uint256):
"""
@notice Add allocator of stablecoins and take coins from it
"""
assert msg.sender == self.admin, "Access"
assert allocator != self.mint_factory, "Minter"
assert allocator != empty(address)
old_allocation: uint256 = self.allocators[allocator]
if amount > old_allocation:
# Use transferFrom
assert extcall STABLECOIN.transferFrom(allocator, self, amount - old_allocation, default_return_value=True)
self.allocators[allocator] = amount
elif amount < old_allocation:
# Allow to take back the allocation via transferFrom, but not more than the allocation reduction
assert extcall STABLECOIN.approve(allocator, (staticcall STABLECOIN.allowance(self, allocator)) + old_allocation - amount, default_return_value=True)
self.allocators[allocator] = amount
log SetAllocator(allocator=allocator, amount=amount)
@external
def set_agg(agg: address):
"""
@notice Set or change stablecoin price aggregator
"""
assert msg.sender == self.admin, "Access"
assert agg != empty(address)
self.agg = agg
self._validate_agg()
log SetAgg(agg=agg)
@external
def set_flash(flash: address):
"""
@notice Set or change stablecoin flash lender implementation
"""
assert msg.sender == self.admin, "Access"
self.flash = flash
log SetFlash(flash=flash)
@external
def set_admin(new_admin: address, new_emergency_admin: address):
"""
@notice Set new admins of the factory. It is important to set it to the DAO
"""
assert msg.sender == self.admin, "Access"
assert new_admin != empty(address)
assert new_emergency_admin != empty(address)
log SetAdmin(admin=new_admin, emergency_admin=new_emergency_admin, old_admin=self.admin, old_emergency_admin=self.emergency_admin)
self.admin = new_admin
self.emergency_admin = new_emergency_admin
@external
def set_fee_receiver(new_fee_receiver: address):
"""
@notice Set new fee receiver. All pools give admin fee to it
"""
assert msg.sender == self.admin, "Access"
self.fee_receiver = new_fee_receiver
log SetFeeReceiver(fee_receiver=new_fee_receiver)
@external
def set_gauge_controller(gc: address):
"""
@notice Set Gauge Controller. This can only be done once
"""
assert msg.sender == self.admin, "Access"
assert self.gauge_controller == empty(address), "Already set"
self.gauge_controller = gc
log SetGaugeController(gc=gc)
@external
def set_min_admin_fee(new_min_admin_fee: uint256):
"""
@notice Set minimal admin fee (admin fee when nothing is staked)
"""
assert msg.sender == self.admin, "Access"
assert new_min_admin_fee <= 10**18, "Admin fee too high"
self.min_admin_fee = new_min_admin_fee
log SetMinAdminFee(admin_fee=new_min_admin_fee)
@external
def set_implementations(amm: address, lt: address, virtual_pool: address, price_oracle: address, staker: address):
"""
@notice Set implementations for all factory contracts needed for creating markets
@param amm AMM implementation
@param lt LT implementation
@param virtual_pool VirtualPool implementation
@param price_oracle LPPriceOracle implementation (price oracle showing the price of LP token in stablecoins)
@param staker Staker (gauge) implementation
"""
assert msg.sender == self.admin, "Access"
if amm != empty(address):
self.amm_impl = amm
if lt != empty(address):
self.lt_impl = lt
if virtual_pool != empty(address):
self.virtual_pool_impl = virtual_pool
if price_oracle != empty(address):
self.price_oracle_impl = price_oracle
if staker != empty(address):
self.staker_impl = staker
log SetImplementations(amm=amm, lt=lt, virtual_pool=virtual_pool, price_oracle=price_oracle, staker=staker){
"outputSelection": {
"contracts/Factory.vy": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
},
"search_paths": [
"."
]
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"name":"amm","type":"address"},{"indexed":false,"name":"lt","type":"address"},{"indexed":false,"name":"virtual_pool","type":"address"},{"indexed":false,"name":"price_oracle","type":"address"},{"indexed":false,"name":"staker","type":"address"}],"name":"SetImplementations","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"allocator","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"SetAllocator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"fee_receiver","type":"address"}],"name":"SetFeeReceiver","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"agg","type":"address"}],"name":"SetAgg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"flash","type":"address"}],"name":"SetFlash","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"admin","type":"address"},{"indexed":false,"name":"emergency_admin","type":"address"},{"indexed":false,"name":"old_admin","type":"address"},{"indexed":false,"name":"old_emergency_admin","type":"address"}],"name":"SetAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"admin_fee","type":"uint256"}],"name":"SetMinAdminFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gc","type":"address"}],"name":"SetGaugeController","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idx","type":"uint256"},{"indexed":true,"name":"asset_token","type":"address"},{"indexed":true,"name":"cryptopool","type":"address"},{"indexed":false,"name":"amm","type":"address"},{"indexed":false,"name":"lt","type":"address"},{"indexed":false,"name":"price_oracle","type":"address"},{"indexed":false,"name":"virtual_pool","type":"address"},{"indexed":false,"name":"staker","type":"address"},{"indexed":false,"name":"agg","type":"address"}],"name":"MarketParameters","type":"event"},{"inputs":[{"name":"pool","type":"address"},{"name":"fee","type":"uint256"},{"name":"rate","type":"uint256"},{"name":"debt_ceiling","type":"uint256"}],"name":"add_market","outputs":[{"components":[{"name":"asset_token","type":"address"},{"name":"cryptopool","type":"address"},{"name":"amm","type":"address"},{"name":"lt","type":"address"},{"name":"price_oracle","type":"address"},{"name":"virtual_pool","type":"address"},{"name":"staker","type":"address"}],"name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"i","type":"uint256"}],"name":"fill_staker_vpool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"mint_factory","type":"address"}],"name":"set_mint_factory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"allocator","type":"address"},{"name":"amount","type":"uint256"}],"name":"set_allocator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"agg","type":"address"}],"name":"set_agg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"flash","type":"address"}],"name":"set_flash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"new_admin","type":"address"},{"name":"new_emergency_admin","type":"address"}],"name":"set_admin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"new_fee_receiver","type":"address"}],"name":"set_fee_receiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"gc","type":"address"}],"name":"set_gauge_controller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"new_min_admin_fee","type":"uint256"}],"name":"set_min_admin_fee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"amm","type":"address"},{"name":"lt","type":"address"},{"name":"virtual_pool","type":"address"},{"name":"price_oracle","type":"address"},{"name":"staker","type":"address"}],"name":"set_implementations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MAX_MARKETS","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LEVERAGE","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gauge_controller","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amm_impl","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lt_impl","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"virtual_pool_impl","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price_oracle_impl","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staker_impl","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"agg","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flash","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STABLECOIN","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee_receiver","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergency_admin","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"min_admin_fee","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"uint256"}],"name":"markets","outputs":[{"components":[{"name":"asset_token","type":"address"},{"name":"cryptopool","type":"address"},{"name":"amm","type":"address"},{"name":"lt","type":"address"},{"name":"price_oracle","type":"address"},{"name":"virtual_pool","type":"address"},{"name":"staker","type":"address"}],"name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"market_count","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"}],"name":"allocators","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint_factory","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"stablecoin","type":"address"},{"name":"amm_impl","type":"address"},{"name":"lt_impl","type":"address"},{"name":"virtual_pool_impl","type":"address"},{"name":"price_oracle_impl","type":"address"},{"name":"staker_impl","type":"address"},{"name":"agg","type":"address"},{"name":"flash","type":"address"},{"name":"fee_receiver","type":"address"},{"name":"gauge_controller","type":"address"},{"name":"admin","type":"address"},{"name":"emergency_admin","type":"address"}],"outputs":[],"stateMutability":"nonpayable","type":"constructor"}]Contract Creation Code
0x611b78515034610311576020611ec55f395f518060a01c61031157610120526020611ee55f395f518060a01c61031157610140526020611f055f395f518060a01c61031157610160526020611f255f395f518060a01c61031157610180526020611f455f395f518060a01c610311576101a0526020611f655f395f518060a01c610311576101c0526020611f855f395f518060a01c610311576101e0526020611fa55f395f518060a01c61031157610200526020611fc55f395f518060a01c61031157610220526020611fe55f395f518060a01c610311576102405260206120055f395f518060a01c610311576102605260206120255f395f518060a01c61031157610280526102605115610311576101205115610311576101e05115610311576101a051156103115761014051156103115761016051156103115760126101205163313ce5676102a05260206102a060046102bc845afa610163573d5f5f3e3d5ffd5b3d602081183d6020100218806102a0016102c011610311576102a0518060081c610311576102e052506102e0905051186103115761012051611b7852610240515f556101405160015561016051600255610180516003556101a0516004556101c0516005556101e05160065561020051600755610220516008556102605160095561028051600a5567016345785d8a0000600b556101ff610241565b7fe0816edf10a269aa4a7dd0728c02244458ca712361bfc23d84a4ea830b7c44ef60a06101406102a05e60a06102a0a1611b7861031561000039611b98610000f35b60065463a035b1fe606052602060606004607c845afa610263573d5f5f3e3d5ffd5b60203d10610311576060905051604052670c7d713b49da0001604051101561028b575f61029a565b670f43fc2c04edffff60405111155b61030f5760208060c052600e6060527f4261642061676772656761746f7200000000000000000000000000000000000060805260608160c001602e82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b565b5f80fd5f3560e01c6002601a820660011b611b4401601e395f51565b6384f514bf811861074657608436103417611b40576004358060a01c611b40576040525f5c600114611b405760015f5d6009543318156100c35760208060c05260066060527f416363657373000000000000000000000000000000000000000000000000000060805260608160c001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6020611b785f395f5160405163c66106576060525f608052602060606024607c845afa6100f2573d5f5f3e3d5ffd5b3d602081183d602010021880606001608011611b40576060518060a01c611b405760a0525060a090505118156101975760208061012052601060c0527f57726f6e6720737461626c65636f696e0000000000000000000000000000000060e05260c08161012001603082825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610100528060040161011cfd5b601260405163313ce567606052602060606004607c845afa6101bb573d5f5f3e3d5ffd5b3d602081183d602010021880606001608011611b40576060518060081c611b405760a0525060a090505118611b405760e0366060376006546101405260405163c6610657610160526001610180526020610160602461017c845afa610222573d5f5f3e3d5ffd5b3d602081183d6020100218806101600161018011611b4057610160518060a01c611b40576101a052506101a090505160605260405160805260045460405161016052610160516101a0526101405161018052610180516101c05260406003823b035960018212611b405781600382863c818101836101a0825e50828201815ff0806102af573d5f5f3e3d5ffd5b905090509050905060e05260025460605161016052610160516101e0526020611b786101803961018051610200526040516101a0526101a05161022052306101c0526101c0516102405260806003823b035960018212611b405781600382863c818101836101e0825e50828201815ff08061032c573d5f5f3e3d5ffd5b905090509050905060c05260015460c0516101605261016051610220526020611b786101803961018051610240526040516101a0526101a05161026052671bc16d674ec800006101c0526101c051610280526024356101e0526101e0516102a05260e05161020052610200516102c05260c06003823b035960018212611b405781600382863c81810183610220825e50828201815ff0806103cf573d5f5f3e3d5ffd5b905090509050905060a05260c051636831c45b6101605260a05161018052803b15611b40575f610160602461017c5f855af161040d573d5f5f3e3d5ffd5b5060c05163d4387a996101605260443561018052803b15611b40575f610160602461017c5f855af1610441573d5f5f3e3d5ffd5b506020611b785f395f5163095ea7b36101605260c051610180527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101a0526020610160604461017c5f855af161049a573d5f5f3e3d5ffd5b3d6104b157803b15611b405760016101c0526104db565b3d602081183d6020100218806101600161018011611b4057610160518060011c611b40576101c052505b6101c090505115611b405760c05163e5ef2aae6101605260643561018052803b15611b40575f610160602461017c5f855af1610519573d5f5f3e3d5ffd5b506003541561052c57600754151561052e565b5f5b156105855760035460a05161016052610160516101805260206003823b035960018212611b405781600382863c81810161018051815250828201815ff080610578573d5f5f3e3d5ffd5b9050905090509050610100525b600554156106145760055460c05161016052610160516101805260206003823b035960018212611b405781600382863c81810161018051815250828201815ff0806105d2573d5f5f3e3d5ffd5b90509050905090506101205260c05163464d700b610160526101205161018052803b15611b40575f610160602461017c5f855af1610612573d5f5f3e3d5ffd5b505b6205573c546101605261c34f6101605111156106a2576020806101e0526010610180527f546f6f206d616e79206d61726b657473000000000000000000000000000000006101a052610180816101e001603082825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06101c052806004016101dcfd5b6101605160018101818110611b405790506205573c5560076101605161c350811015611b405702600c016060518155608051600182015560a051600282015560c051600382015560e051600482015561010051600582015561012051600682015550608051606051610160517f0a2f141c803b7bf5e04b3d7b621d659110855c736b446179264d6a61232d3f0b60c060a06101805e60c0610180a460e060605f5f5df35b63680c77838118611a6c5734611b4057600a5460405260206040f35b6374729f3e8118611a6c57602436103417611b40576009543318156107f25760208060a05260066040527f416363657373000000000000000000000000000000000000000000000000000060605260408160a001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b6205573c54600435106108705760208060a05260126040527f4e6f6e6578697374656e74206d61726b6574000000000000000000000000000060605260408160a001603282825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b600760043561c350811015611b405702600c01805460405260018101546060526002810154608052600381015460a052600481015460c052600581015460e0526006810154610100525060a05115611b405760805115611b40575f6101205260e0516108f357600354156108e85760075415156108ea565b5f5b61012052610951565b60035460e0516356973ee5610140526020610140600461015c845afa61091b573d5f5f3e3d5ffd5b3d602081183d6020100218806101400161016011611b4057610140518060a01c611b405761018052506101809050511415610120525b61012051156109ab5760035460805161014052610140516101605260206003823b035960018212611b405781600382863c81810161016051815250828201815ff08061099f573d5f5f3e3d5ffd5b905090509050905060e0525b610100516109bd5760055415156109bf565b5f5b15610a4b5760055460a05161014052610140516101605260206003823b035960018212611b405781600382863c81810161016051815250828201815ff080610a09573d5f5f3e3d5ffd5b90509050905090506101005260a05163464d700b610140526101005161016052803b15611b40575f610140602461015c5f855af1610a49573d5f5f3e3d5ffd5b505b600760043561c350811015611b405702600c0160405181556060516001820155608051600282015560a051600382015560c051600482015560e0516005820155610100516006820155506060516040516004357f0a2f141c803b7bf5e04b3d7b621d659110855c736b446179264d6a61232d3f0b60a060806101a05e60c05163858051e2610140526020610140600461015c845afa610aec573d5f5f3e3d5ffd5b3d602081183d6020100218806101400161016011611b4057610140518060a01c611b405761018052506101809050516102405260c06101a0a4005b63dcce86ff8118610d4b57602436103417611b40576004358060a01c611b40576040525f5c600114611b405760015f5d600954331815610bd25760208060c05260066060527f416363657373000000000000000000000000000000000000000000000000000060805260608160c001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6205573e5415610c4d5760208060c052600d6060527f4f6e6c7920736574206f6e63650000000000000000000000000000000000000060805260608160c001602d82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b60405115611b40576040516205573e556020611b785f395f5163095ea7b36060526040516080527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60a052602060606044607c5f855af1610cb0573d5f5f3e3d5ffd5b3d610cc657803b15611b4057600160c052610cec565b3d602081183d602010021880606001608011611b40576060518060011c611b405760c052505b60c090505115611b40577f6e671c52e5bc0aa133fe59c69dcbdde3ebec4145c563664428a70731ff91ae0f6040516060527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60805260406060a15f5f5d005b63041622b58118611a6c5734611b405760015460405260206040f35b63eb060c148118611a6c57604436103417611b40576004358060a01c611b40576040525f5c600114611b405760015f5d600954331815610e125760208060c05260066060527f416363657373000000000000000000000000000000000000000000000000000060805260608160c001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6205573e5460405118610e905760208060c05260066060527f4d696e746572000000000000000000000000000000000000000000000000000060805260608160c001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b60405115611b40576205573d6040516020525f5260405f205460605260605160243511610fbb576060516024351015611063576020611b785f395f5163095ea7b360e052604051610100526020611b785f395f5163dd62ed3e6080523060a05260405160c052602060806044609c845afa610f0d573d5f5f3e3d5ffd5b60203d10611b40576080905051606051808201828110611b405790509050602435808203828111611b40579050905061012052602060e0604460fc5f855af1610f58573d5f5f3e3d5ffd5b3d610f6f57803b15611b4057600161014052610f97565b3d602081183d60201002188060e00161010011611b405760e0518060011c611b405761014052505b61014090505115611b40576024356205573d6040516020525f5260405f2055611063565b6020611b785f395f516323b872dd60805260405160a0523060c052602435606051808203828111611b40579050905060e052602060806064609c5f855af1611005573d5f5f3e3d5ffd5b3d61101c57803b15611b4057600161010052611043565b3d602081183d60201002188060800160a011611b40576080518060011c611b405761010052505b61010090505115611b40576024356205573d6040516020525f5260405f20555b7f6e671c52e5bc0aa133fe59c69dcbdde3ebec4145c563664428a70731ff91ae0f60405160805260243560a05260406080a15f5f5d005b63ec15c030811861118957602436103417611b40576004358060a01c611b405761012052600954331815611140576020806101a0526006610140527f416363657373000000000000000000000000000000000000000000000000000061016052610140816101a001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b6101205115611b405761012051600655611158611a70565b7f843c0fd5d15daa8bb099274f122c91630f39df53ebf3c5f8e843c979fb660bca61012051610140526020610140a1005b63410e36008114600336111615611a6c5734611b405761c35060405260206040f35b63bafa0630811861127d57602436103417611b40576004358060a01c611b40576040526009543318156112495760208060c05260066060527f416363657373000000000000000000000000000000000000000000000000000060805260608160c001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6040516007557feaa8d04d33cdb2fd361c560c793d8cbaee16fbba34b3747921ab2a76191f912d60405160605260206060a1005b63fd775c788118611a6c5734611b40576205573c5460405260206040f35b6373e80cba811861139e57604436103417611b40576004358060a01c611b40576040526024358060a01c611b40576060526009543318156113475760208060e05260066080527f416363657373000000000000000000000000000000000000000000000000000060a05260808160e001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060c0528060040160dcfd5b60405115611b405760605115611b40577f9a45e4c3baa33ef1c484b02fb5837d58d3ffb1b7cf7a11ea3b8d0546064ab3bb6040604060805e60095460c052600a5460e05260806080a1604051600955606051600a55005b632cb2af128118611a6c5760a436103417611b40576004358060a01c611b40576040526024358060a01c611b40576060526044358060a01c611b40576080526064358060a01c611b405760a0526084358060a01c611b405760c0526009543318156114795760208061014052600660e0527f41636365737300000000000000000000000000000000000000000000000000006101005260e08161014001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610120528060040161013cfd5b60405115611488576040516001555b60605115611497576060516002555b608051156114a6576080516003555b60a051156114b55760a0516004555b60c051156114c45760c0516005555b7fe0816edf10a269aa4a7dd0728c02244458ca712361bfc23d84a4ea830b7c44ef60a0604060e05e60a060e0a1005b63e41ab77181186115c557602436103417611b40576004358060a01c611b40576040526009543318156115915760208060c05260066060527f416363657373000000000000000000000000000000000000000000000000000060805260608160c001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6040516008557fffb40bfdfd246e95f543d08d9713c339f1d90fa9265e39b4f562f9011d7c919f60405160605260206060a1005b63b1283e778118611a6c57602436103417611b4057600760043561c350811015611b405702600c01805460405260018101546060526002810154608052600381015460a052600481015460c052600581015460e0526006810154610100525060e06040f35b63783a1cf7811861177357602436103417611b40576004358060a01c611b40576040526009543318156116c85760208060c05260066060527f416363657373000000000000000000000000000000000000000000000000000060805260608160c001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b5f54156117405760208060c052600b6060527f416c72656164792073657400000000000000000000000000000000000000000060805260608160c001602b82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6040515f557f613940253cf21d005743a34a04b5c9c39fb1700b83758166647e87af9b826ac760405160605260206060a1005b63cab4d3db8118611a6c5734611b405760085460405260206040f35b630d58902a81186118d657602436103417611b405760095433181561181f5760208060a05260066040527f416363657373000000000000000000000000000000000000000000000000000060605260408160a001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b670de0b6b3a764000060043511156118a25760208060a05260126040527f41646d696e2066656520746f6f2068696768000000000000000000000000000060605260408160a001603282825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b600435600b557f1d944867b41f8cfe3aa0b5ba9ff5c481e37c5c4dd403801d32000a939ba5fcc060043560405260206040a1005b63f8adac9e81186118f25734611b405760025460405260206040f35b63f851a4408118611a6c5734611b405760095460405260206040f35b638d01f0ba81186119305734611b4057671bc16d674ec8000060405260206040f35b6393a397768118611a6c5734611b40576020611b7860403960206040f35b63d8b9a01881186119695734611b40575f5460405260206040f35b63d7d43f1881186119855734611b405760035460405260206040f35b63084ea36e8118611a6c57602436103417611b40576004358060a01c611b40576040526205573d6040516020525f5260405f205460605260206060f35b63eefc088b8118611a6c5734611b405760045460405260206040f35b63b7d5440e81186119fa5734611b405760055460405260206040f35b63f5e34bfa8118611a6c5734611b405760065460405260206040f35b63d336c82d8118611a6c5734611b405760075460405260206040f35b638c5710c98118611a6c5734611b4057600b5460405260206040f35b6343c26bd18118611a6c5734611b40576205573e5460405260206040f35b5f5ffd5b60065463a035b1fe606052602060606004607c845afa611a92573d5f5f3e3d5ffd5b60203d10611b40576060905051604052670c7d713b49da00016040511015611aba575f611ac9565b670f43fc2c04edffff60405111155b611b3e5760208060c052600e6060527f4261642061676772656761746f7200000000000000000000000000000000000060805260608160c001602e82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b565b5f80fd129b1a4e1a6c00180d671a321a6c1a6c109a19c21a6c0b27194e162a07621a6c178f1a6c19de1a6c190e1a161a6c1a6c11ab14f385582036d01d275fa949cd87c2f3c12f5900a5e5a3f4e7332b279c5196ece946a039f0191b788118341820a1657679706572830004030038000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e000000000000000000000000258f7e1ee13ee4d3a62d79db715fa95c4620d9c300000000000000000000000027845fbb7ba58b152681558e44c4ed4c64e3701600000000000000000000000062b792654eafffbbc483d69fa05f8ca4d0914af2000000000000000000000000de61d94f71a44cb28ce94a34b1b560fc55128c80000000000000000000000000da67786a87bed11081c1d85b26fe75a33e1c271000000000000000000000000018672b1b0c623a30089a280ed9256379fb0e4e6200000000000000000000000026de7861e213a5351f6ed767d00e0839930e9ee100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001be14811a3a06f6af4fa64310a636e1df04c1c21000000000000000000000000a39e4d6bb25a8e55552d6d9ab1f5f8889dddc80d000000000000000000000000467947ee34af926cf1dcac093870f613c96b1e0c
Deployed Bytecode
0x5f3560e01c6002601a820660011b611b4401601e395f51565b6384f514bf811861074657608436103417611b40576004358060a01c611b40576040525f5c600114611b405760015f5d6009543318156100c35760208060c05260066060527f416363657373000000000000000000000000000000000000000000000000000060805260608160c001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6020611b785f395f5160405163c66106576060525f608052602060606024607c845afa6100f2573d5f5f3e3d5ffd5b3d602081183d602010021880606001608011611b40576060518060a01c611b405760a0525060a090505118156101975760208061012052601060c0527f57726f6e6720737461626c65636f696e0000000000000000000000000000000060e05260c08161012001603082825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610100528060040161011cfd5b601260405163313ce567606052602060606004607c845afa6101bb573d5f5f3e3d5ffd5b3d602081183d602010021880606001608011611b40576060518060081c611b405760a0525060a090505118611b405760e0366060376006546101405260405163c6610657610160526001610180526020610160602461017c845afa610222573d5f5f3e3d5ffd5b3d602081183d6020100218806101600161018011611b4057610160518060a01c611b40576101a052506101a090505160605260405160805260045460405161016052610160516101a0526101405161018052610180516101c05260406003823b035960018212611b405781600382863c818101836101a0825e50828201815ff0806102af573d5f5f3e3d5ffd5b905090509050905060e05260025460605161016052610160516101e0526020611b786101803961018051610200526040516101a0526101a05161022052306101c0526101c0516102405260806003823b035960018212611b405781600382863c818101836101e0825e50828201815ff08061032c573d5f5f3e3d5ffd5b905090509050905060c05260015460c0516101605261016051610220526020611b786101803961018051610240526040516101a0526101a05161026052671bc16d674ec800006101c0526101c051610280526024356101e0526101e0516102a05260e05161020052610200516102c05260c06003823b035960018212611b405781600382863c81810183610220825e50828201815ff0806103cf573d5f5f3e3d5ffd5b905090509050905060a05260c051636831c45b6101605260a05161018052803b15611b40575f610160602461017c5f855af161040d573d5f5f3e3d5ffd5b5060c05163d4387a996101605260443561018052803b15611b40575f610160602461017c5f855af1610441573d5f5f3e3d5ffd5b506020611b785f395f5163095ea7b36101605260c051610180527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101a0526020610160604461017c5f855af161049a573d5f5f3e3d5ffd5b3d6104b157803b15611b405760016101c0526104db565b3d602081183d6020100218806101600161018011611b4057610160518060011c611b40576101c052505b6101c090505115611b405760c05163e5ef2aae6101605260643561018052803b15611b40575f610160602461017c5f855af1610519573d5f5f3e3d5ffd5b506003541561052c57600754151561052e565b5f5b156105855760035460a05161016052610160516101805260206003823b035960018212611b405781600382863c81810161018051815250828201815ff080610578573d5f5f3e3d5ffd5b9050905090509050610100525b600554156106145760055460c05161016052610160516101805260206003823b035960018212611b405781600382863c81810161018051815250828201815ff0806105d2573d5f5f3e3d5ffd5b90509050905090506101205260c05163464d700b610160526101205161018052803b15611b40575f610160602461017c5f855af1610612573d5f5f3e3d5ffd5b505b6205573c546101605261c34f6101605111156106a2576020806101e0526010610180527f546f6f206d616e79206d61726b657473000000000000000000000000000000006101a052610180816101e001603082825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06101c052806004016101dcfd5b6101605160018101818110611b405790506205573c5560076101605161c350811015611b405702600c016060518155608051600182015560a051600282015560c051600382015560e051600482015561010051600582015561012051600682015550608051606051610160517f0a2f141c803b7bf5e04b3d7b621d659110855c736b446179264d6a61232d3f0b60c060a06101805e60c0610180a460e060605f5f5df35b63680c77838118611a6c5734611b4057600a5460405260206040f35b6374729f3e8118611a6c57602436103417611b40576009543318156107f25760208060a05260066040527f416363657373000000000000000000000000000000000000000000000000000060605260408160a001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b6205573c54600435106108705760208060a05260126040527f4e6f6e6578697374656e74206d61726b6574000000000000000000000000000060605260408160a001603282825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b600760043561c350811015611b405702600c01805460405260018101546060526002810154608052600381015460a052600481015460c052600581015460e0526006810154610100525060a05115611b405760805115611b40575f6101205260e0516108f357600354156108e85760075415156108ea565b5f5b61012052610951565b60035460e0516356973ee5610140526020610140600461015c845afa61091b573d5f5f3e3d5ffd5b3d602081183d6020100218806101400161016011611b4057610140518060a01c611b405761018052506101809050511415610120525b61012051156109ab5760035460805161014052610140516101605260206003823b035960018212611b405781600382863c81810161016051815250828201815ff08061099f573d5f5f3e3d5ffd5b905090509050905060e0525b610100516109bd5760055415156109bf565b5f5b15610a4b5760055460a05161014052610140516101605260206003823b035960018212611b405781600382863c81810161016051815250828201815ff080610a09573d5f5f3e3d5ffd5b90509050905090506101005260a05163464d700b610140526101005161016052803b15611b40575f610140602461015c5f855af1610a49573d5f5f3e3d5ffd5b505b600760043561c350811015611b405702600c0160405181556060516001820155608051600282015560a051600382015560c051600482015560e0516005820155610100516006820155506060516040516004357f0a2f141c803b7bf5e04b3d7b621d659110855c736b446179264d6a61232d3f0b60a060806101a05e60c05163858051e2610140526020610140600461015c845afa610aec573d5f5f3e3d5ffd5b3d602081183d6020100218806101400161016011611b4057610140518060a01c611b405761018052506101809050516102405260c06101a0a4005b63dcce86ff8118610d4b57602436103417611b40576004358060a01c611b40576040525f5c600114611b405760015f5d600954331815610bd25760208060c05260066060527f416363657373000000000000000000000000000000000000000000000000000060805260608160c001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6205573e5415610c4d5760208060c052600d6060527f4f6e6c7920736574206f6e63650000000000000000000000000000000000000060805260608160c001602d82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b60405115611b40576040516205573e556020611b785f395f5163095ea7b36060526040516080527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60a052602060606044607c5f855af1610cb0573d5f5f3e3d5ffd5b3d610cc657803b15611b4057600160c052610cec565b3d602081183d602010021880606001608011611b40576060518060011c611b405760c052505b60c090505115611b40577f6e671c52e5bc0aa133fe59c69dcbdde3ebec4145c563664428a70731ff91ae0f6040516060527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60805260406060a15f5f5d005b63041622b58118611a6c5734611b405760015460405260206040f35b63eb060c148118611a6c57604436103417611b40576004358060a01c611b40576040525f5c600114611b405760015f5d600954331815610e125760208060c05260066060527f416363657373000000000000000000000000000000000000000000000000000060805260608160c001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6205573e5460405118610e905760208060c05260066060527f4d696e746572000000000000000000000000000000000000000000000000000060805260608160c001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b60405115611b40576205573d6040516020525f5260405f205460605260605160243511610fbb576060516024351015611063576020611b785f395f5163095ea7b360e052604051610100526020611b785f395f5163dd62ed3e6080523060a05260405160c052602060806044609c845afa610f0d573d5f5f3e3d5ffd5b60203d10611b40576080905051606051808201828110611b405790509050602435808203828111611b40579050905061012052602060e0604460fc5f855af1610f58573d5f5f3e3d5ffd5b3d610f6f57803b15611b4057600161014052610f97565b3d602081183d60201002188060e00161010011611b405760e0518060011c611b405761014052505b61014090505115611b40576024356205573d6040516020525f5260405f2055611063565b6020611b785f395f516323b872dd60805260405160a0523060c052602435606051808203828111611b40579050905060e052602060806064609c5f855af1611005573d5f5f3e3d5ffd5b3d61101c57803b15611b4057600161010052611043565b3d602081183d60201002188060800160a011611b40576080518060011c611b405761010052505b61010090505115611b40576024356205573d6040516020525f5260405f20555b7f6e671c52e5bc0aa133fe59c69dcbdde3ebec4145c563664428a70731ff91ae0f60405160805260243560a05260406080a15f5f5d005b63ec15c030811861118957602436103417611b40576004358060a01c611b405761012052600954331815611140576020806101a0526006610140527f416363657373000000000000000000000000000000000000000000000000000061016052610140816101a001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b6101205115611b405761012051600655611158611a70565b7f843c0fd5d15daa8bb099274f122c91630f39df53ebf3c5f8e843c979fb660bca61012051610140526020610140a1005b63410e36008114600336111615611a6c5734611b405761c35060405260206040f35b63bafa0630811861127d57602436103417611b40576004358060a01c611b40576040526009543318156112495760208060c05260066060527f416363657373000000000000000000000000000000000000000000000000000060805260608160c001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6040516007557feaa8d04d33cdb2fd361c560c793d8cbaee16fbba34b3747921ab2a76191f912d60405160605260206060a1005b63fd775c788118611a6c5734611b40576205573c5460405260206040f35b6373e80cba811861139e57604436103417611b40576004358060a01c611b40576040526024358060a01c611b40576060526009543318156113475760208060e05260066080527f416363657373000000000000000000000000000000000000000000000000000060a05260808160e001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060c0528060040160dcfd5b60405115611b405760605115611b40577f9a45e4c3baa33ef1c484b02fb5837d58d3ffb1b7cf7a11ea3b8d0546064ab3bb6040604060805e60095460c052600a5460e05260806080a1604051600955606051600a55005b632cb2af128118611a6c5760a436103417611b40576004358060a01c611b40576040526024358060a01c611b40576060526044358060a01c611b40576080526064358060a01c611b405760a0526084358060a01c611b405760c0526009543318156114795760208061014052600660e0527f41636365737300000000000000000000000000000000000000000000000000006101005260e08161014001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610120528060040161013cfd5b60405115611488576040516001555b60605115611497576060516002555b608051156114a6576080516003555b60a051156114b55760a0516004555b60c051156114c45760c0516005555b7fe0816edf10a269aa4a7dd0728c02244458ca712361bfc23d84a4ea830b7c44ef60a0604060e05e60a060e0a1005b63e41ab77181186115c557602436103417611b40576004358060a01c611b40576040526009543318156115915760208060c05260066060527f416363657373000000000000000000000000000000000000000000000000000060805260608160c001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6040516008557fffb40bfdfd246e95f543d08d9713c339f1d90fa9265e39b4f562f9011d7c919f60405160605260206060a1005b63b1283e778118611a6c57602436103417611b4057600760043561c350811015611b405702600c01805460405260018101546060526002810154608052600381015460a052600481015460c052600581015460e0526006810154610100525060e06040f35b63783a1cf7811861177357602436103417611b40576004358060a01c611b40576040526009543318156116c85760208060c05260066060527f416363657373000000000000000000000000000000000000000000000000000060805260608160c001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b5f54156117405760208060c052600b6060527f416c72656164792073657400000000000000000000000000000000000000000060805260608160c001602b82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6040515f557f613940253cf21d005743a34a04b5c9c39fb1700b83758166647e87af9b826ac760405160605260206060a1005b63cab4d3db8118611a6c5734611b405760085460405260206040f35b630d58902a81186118d657602436103417611b405760095433181561181f5760208060a05260066040527f416363657373000000000000000000000000000000000000000000000000000060605260408160a001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b670de0b6b3a764000060043511156118a25760208060a05260126040527f41646d696e2066656520746f6f2068696768000000000000000000000000000060605260408160a001603282825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b600435600b557f1d944867b41f8cfe3aa0b5ba9ff5c481e37c5c4dd403801d32000a939ba5fcc060043560405260206040a1005b63f8adac9e81186118f25734611b405760025460405260206040f35b63f851a4408118611a6c5734611b405760095460405260206040f35b638d01f0ba81186119305734611b4057671bc16d674ec8000060405260206040f35b6393a397768118611a6c5734611b40576020611b7860403960206040f35b63d8b9a01881186119695734611b40575f5460405260206040f35b63d7d43f1881186119855734611b405760035460405260206040f35b63084ea36e8118611a6c57602436103417611b40576004358060a01c611b40576040526205573d6040516020525f5260405f205460605260206060f35b63eefc088b8118611a6c5734611b405760045460405260206040f35b63b7d5440e81186119fa5734611b405760055460405260206040f35b63f5e34bfa8118611a6c5734611b405760065460405260206040f35b63d336c82d8118611a6c5734611b405760075460405260206040f35b638c5710c98118611a6c5734611b4057600b5460405260206040f35b6343c26bd18118611a6c5734611b40576205573e5460405260206040f35b5f5ffd5b60065463a035b1fe606052602060606004607c845afa611a92573d5f5f3e3d5ffd5b60203d10611b40576060905051604052670c7d713b49da00016040511015611aba575f611ac9565b670f43fc2c04edffff60405111155b611b3e5760208060c052600e6060527f4261642061676772656761746f7200000000000000000000000000000000000060805260608160c001602e82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b565b5f80fd129b1a4e1a6c00180d671a321a6c1a6c109a19c21a6c0b27194e162a07621a6c178f1a6c19de1a6c190e1a161a6c1a6c11ab14f3000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e
Loading...
Loading
Loading...
Loading
Net Worth in USD
$615,039,409.30
Net Worth in ETH
311,202.276206
Token Allocations
CRVUSD
100.00%
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $0.999148 | 615,563,869.7131 | $615,039,409.3 |
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.