Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
0x60a06040 | 12783199 | 994 days ago | IN | Create: YVWETHSwapperFlat | 0 ETH | 0.02638125 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
YVWETHSwapperFlat
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-07-07 */ // SPDX-License-Identifier: MIXED // File @boringcrypto/boring-solidity/contracts/libraries/[email protected] // License-Identifier: MIT pragma solidity 0.6.12; /// @notice A library for performing overflow-/underflow-safe math, /// updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math). library BoringMath { function add(uint256 a, uint256 b) internal pure returns (uint256 c) { require((c = a + b) >= b, "BoringMath: Add Overflow"); } function sub(uint256 a, uint256 b) internal pure returns (uint256 c) { require((c = a - b) <= a, "BoringMath: Underflow"); } function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { require(b == 0 || (c = a * b) / b == a, "BoringMath: Mul Overflow"); } function to128(uint256 a) internal pure returns (uint128 c) { require(a <= uint128(-1), "BoringMath: uint128 Overflow"); c = uint128(a); } function to64(uint256 a) internal pure returns (uint64 c) { require(a <= uint64(-1), "BoringMath: uint64 Overflow"); c = uint64(a); } function to32(uint256 a) internal pure returns (uint32 c) { require(a <= uint32(-1), "BoringMath: uint32 Overflow"); c = uint32(a); } } /// @notice A library for performing overflow-/underflow-safe addition and subtraction on uint128. library BoringMath128 { function add(uint128 a, uint128 b) internal pure returns (uint128 c) { require((c = a + b) >= b, "BoringMath: Add Overflow"); } function sub(uint128 a, uint128 b) internal pure returns (uint128 c) { require((c = a - b) <= a, "BoringMath: Underflow"); } } /// @notice A library for performing overflow-/underflow-safe addition and subtraction on uint64. library BoringMath64 { function add(uint64 a, uint64 b) internal pure returns (uint64 c) { require((c = a + b) >= b, "BoringMath: Add Overflow"); } function sub(uint64 a, uint64 b) internal pure returns (uint64 c) { require((c = a - b) <= a, "BoringMath: Underflow"); } } /// @notice A library for performing overflow-/underflow-safe addition and subtraction on uint32. library BoringMath32 { function add(uint32 a, uint32 b) internal pure returns (uint32 c) { require((c = a + b) >= b, "BoringMath: Add Overflow"); } function sub(uint32 a, uint32 b) internal pure returns (uint32 c) { require((c = a - b) <= a, "BoringMath: Underflow"); } } // File @sushiswap/core/contracts/uniswapv2/interfaces/[email protected] // License-Identifier: GPL-3.0 pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function migrator() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; function setMigrator(address) external; } // File @sushiswap/core/contracts/uniswapv2/interfaces/[email protected] // License-Identifier: GPL-3.0 pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // File @boringcrypto/boring-solidity/contracts/interfaces/[email protected] // License-Identifier: MIT pragma solidity 0.6.12; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); /// @notice EIP 2612 function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; } // File contracts/interfaces/ISwapper.sol // License-Identifier: MIT pragma solidity 0.6.12; interface ISwapper { /// @notice Withdraws 'amountFrom' of token 'from' from the BentoBox account for this swapper. /// Swaps it for at least 'amountToMin' of token 'to'. /// Transfers the swapped tokens of 'to' into the BentoBox using a plain ERC20 transfer. /// Returns the amount of tokens 'to' transferred to BentoBox. /// (The BentoBox skim function will be used by the caller to get the swapped funds). function swap( IERC20 fromToken, IERC20 toToken, address recipient, uint256 shareToMin, uint256 shareFrom ) external returns (uint256 extraShare, uint256 shareReturned); /// @notice Calculates the amount of token 'from' needed to complete the swap (amountFrom), /// this should be less than or equal to amountFromMax. /// Withdraws 'amountFrom' of token 'from' from the BentoBox account for this swapper. /// Swaps it for exactly 'exactAmountTo' of token 'to'. /// Transfers the swapped tokens of 'to' into the BentoBox using a plain ERC20 transfer. /// Transfers allocated, but unused 'from' tokens within the BentoBox to 'refundTo' (amountFromMax - amountFrom). /// Returns the amount of 'from' tokens withdrawn from BentoBox (amountFrom). /// (The BentoBox skim function will be used by the caller to get the swapped funds). function swapExact( IERC20 fromToken, IERC20 toToken, address recipient, address refundTo, uint256 shareFromSupplied, uint256 shareToExact ) external returns (uint256 shareUsed, uint256 shareReturned); } // File @boringcrypto/boring-solidity/contracts/libraries/[email protected] // License-Identifier: MIT pragma solidity 0.6.12; struct Rebase { uint128 elastic; uint128 base; } /// @notice A rebasing library using overflow-/underflow-safe math. library RebaseLibrary { using BoringMath for uint256; using BoringMath128 for uint128; /// @notice Calculates the base value in relationship to `elastic` and `total`. function toBase( Rebase memory total, uint256 elastic, bool roundUp ) internal pure returns (uint256 base) { if (total.elastic == 0) { base = elastic; } else { base = elastic.mul(total.base) / total.elastic; if (roundUp && base.mul(total.elastic) / total.base < elastic) { base = base.add(1); } } } /// @notice Calculates the elastic value in relationship to `base` and `total`. function toElastic( Rebase memory total, uint256 base, bool roundUp ) internal pure returns (uint256 elastic) { if (total.base == 0) { elastic = base; } else { elastic = base.mul(total.elastic) / total.base; if (roundUp && elastic.mul(total.base) / total.elastic < base) { elastic = elastic.add(1); } } } /// @notice Add `elastic` to `total` and doubles `total.base`. /// @return (Rebase) The new total. /// @return base in relationship to `elastic`. function add( Rebase memory total, uint256 elastic, bool roundUp ) internal pure returns (Rebase memory, uint256 base) { base = toBase(total, elastic, roundUp); total.elastic = total.elastic.add(elastic.to128()); total.base = total.base.add(base.to128()); return (total, base); } /// @notice Sub `base` from `total` and update `total.elastic`. /// @return (Rebase) The new total. /// @return elastic in relationship to `base`. function sub( Rebase memory total, uint256 base, bool roundUp ) internal pure returns (Rebase memory, uint256 elastic) { elastic = toElastic(total, base, roundUp); total.elastic = total.elastic.sub(elastic.to128()); total.base = total.base.sub(base.to128()); return (total, elastic); } /// @notice Add `elastic` and `base` to `total`. function add( Rebase memory total, uint256 elastic, uint256 base ) internal pure returns (Rebase memory) { total.elastic = total.elastic.add(elastic.to128()); total.base = total.base.add(base.to128()); return total; } /// @notice Subtract `elastic` and `base` to `total`. function sub( Rebase memory total, uint256 elastic, uint256 base ) internal pure returns (Rebase memory) { total.elastic = total.elastic.sub(elastic.to128()); total.base = total.base.sub(base.to128()); return total; } /// @notice Add `elastic` to `total` and update storage. /// @return newElastic Returns updated `elastic`. function addElastic(Rebase storage total, uint256 elastic) internal returns (uint256 newElastic) { newElastic = total.elastic = total.elastic.add(elastic.to128()); } /// @notice Subtract `elastic` from `total` and update storage. /// @return newElastic Returns updated `elastic`. function subElastic(Rebase storage total, uint256 elastic) internal returns (uint256 newElastic) { newElastic = total.elastic = total.elastic.sub(elastic.to128()); } } // File @sushiswap/bentobox-sdk/contracts/[email protected] // License-Identifier: MIT pragma solidity 0.6.12; interface IBatchFlashBorrower { function onBatchFlashLoan( address sender, IERC20[] calldata tokens, uint256[] calldata amounts, uint256[] calldata fees, bytes calldata data ) external; } // File @sushiswap/bentobox-sdk/contracts/[email protected] // License-Identifier: MIT pragma solidity 0.6.12; interface IFlashBorrower { function onFlashLoan( address sender, IERC20 token, uint256 amount, uint256 fee, bytes calldata data ) external; } // File @sushiswap/bentobox-sdk/contracts/[email protected] // License-Identifier: MIT pragma solidity 0.6.12; interface IStrategy { // Send the assets to the Strategy and call skim to invest them function skim(uint256 amount) external; // Harvest any profits made converted to the asset and pass them to the caller function harvest(uint256 balance, address sender) external returns (int256 amountAdded); // Withdraw assets. The returned amount can differ from the requested amount due to rounding. // The actualAmount should be very close to the amount. The difference should NOT be used to report a loss. That's what harvest is for. function withdraw(uint256 amount) external returns (uint256 actualAmount); // Withdraw all assets in the safest way possible. This shouldn't fail. function exit(uint256 balance) external returns (int256 amountAdded); } // File @sushiswap/bentobox-sdk/contracts/[email protected] // License-Identifier: MIT pragma solidity 0.6.12; pragma experimental ABIEncoderV2; interface IBentoBoxV1 { event LogDeploy(address indexed masterContract, bytes data, address indexed cloneAddress); event LogDeposit(address indexed token, address indexed from, address indexed to, uint256 amount, uint256 share); event LogFlashLoan(address indexed borrower, address indexed token, uint256 amount, uint256 feeAmount, address indexed receiver); event LogRegisterProtocol(address indexed protocol); event LogSetMasterContractApproval(address indexed masterContract, address indexed user, bool approved); event LogStrategyDivest(address indexed token, uint256 amount); event LogStrategyInvest(address indexed token, uint256 amount); event LogStrategyLoss(address indexed token, uint256 amount); event LogStrategyProfit(address indexed token, uint256 amount); event LogStrategyQueued(address indexed token, address indexed strategy); event LogStrategySet(address indexed token, address indexed strategy); event LogStrategyTargetPercentage(address indexed token, uint256 targetPercentage); event LogTransfer(address indexed token, address indexed from, address indexed to, uint256 share); event LogWhiteListMasterContract(address indexed masterContract, bool approved); event LogWithdraw(address indexed token, address indexed from, address indexed to, uint256 amount, uint256 share); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); function balanceOf(IERC20, address) external view returns (uint256); function batch(bytes[] calldata calls, bool revertOnFail) external payable returns (bool[] memory successes, bytes[] memory results); function batchFlashLoan(IBatchFlashBorrower borrower, address[] calldata receivers, IERC20[] calldata tokens, uint256[] calldata amounts, bytes calldata data) external; function claimOwnership() external; function deploy(address masterContract, bytes calldata data, bool useCreate2) external payable; function deposit(IERC20 token_, address from, address to, uint256 amount, uint256 share) external payable returns (uint256 amountOut, uint256 shareOut); function flashLoan(IFlashBorrower borrower, address receiver, IERC20 token, uint256 amount, bytes calldata data) external; function harvest(IERC20 token, bool balance, uint256 maxChangeAmount) external; function masterContractApproved(address, address) external view returns (bool); function masterContractOf(address) external view returns (address); function nonces(address) external view returns (uint256); function owner() external view returns (address); function pendingOwner() external view returns (address); function pendingStrategy(IERC20) external view returns (IStrategy); function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; function registerProtocol() external; function setMasterContractApproval(address user, address masterContract, bool approved, uint8 v, bytes32 r, bytes32 s) external; function setStrategy(IERC20 token, IStrategy newStrategy) external; function setStrategyTargetPercentage(IERC20 token, uint64 targetPercentage_) external; function strategy(IERC20) external view returns (IStrategy); function strategyData(IERC20) external view returns (uint64 strategyStartDate, uint64 targetPercentage, uint128 balance); function toAmount(IERC20 token, uint256 share, bool roundUp) external view returns (uint256 amount); function toShare(IERC20 token, uint256 amount, bool roundUp) external view returns (uint256 share); function totals(IERC20) external view returns (Rebase memory totals_); function transfer(IERC20 token, address from, address to, uint256 share) external; function transferMultiple(IERC20 token, address from, address[] calldata tos, uint256[] calldata shares) external; function transferOwnership(address newOwner, bool direct, bool renounce) external; function whitelistMasterContract(address masterContract, bool approved) external; function whitelistedMasterContracts(address) external view returns (bool); function withdraw(IERC20 token_, address from, address to, uint256 amount, uint256 share) external returns (uint256 amountOut, uint256 shareOut); } // File contracts/swappers/YVWETHSwapper.sol // License-Identifier: MIT pragma solidity 0.6.12; interface CurvePool { function exchange_underlying(int128 i, int128 j, uint256 dx, uint256 min_dy, address receiver) external returns (uint256); } interface YearnVault { function withdraw(uint256 maxShares, address recipient) external returns (uint256); } interface TetherToken { function approve(address _spender, uint256 _value) external; } contract YVWETHSwapperFlat is ISwapper { using BoringMath for uint256; // Local variables IBentoBoxV1 public immutable bentoBox; CurvePool public constant MIM3POOL = CurvePool(0x5a6A4D54456819380173272A5E8E9B9904BdF41B); TetherToken public constant TETHER = TetherToken(0xdAC17F958D2ee523a2206206994597C13D831ec7); YearnVault public constant WETH_VAULT = YearnVault(0xa258C4606Ca8206D8aA700cE2143D7db854D168c); IUniswapV2Pair constant pair = IUniswapV2Pair(0x06da0fd433C1A5d7a4faa01111c044910A184553); constructor( IBentoBoxV1 bentoBox_ ) public { bentoBox = bentoBox_; TETHER.approve(address(MIM3POOL), type(uint256).max); } // Given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) internal pure returns (uint256 amountOut) { uint256 amountInWithFee = amountIn.mul(997); uint256 numerator = amountInWithFee.mul(reserveOut); uint256 denominator = reserveIn.mul(1000).add(amountInWithFee); amountOut = numerator / denominator; } // Given an output amount of an asset and pair reserves, returns a required input amount of the other asset function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) internal pure returns (uint256 amountIn) { uint256 numerator = reserveIn.mul(amountOut).mul(1000); uint256 denominator = reserveOut.sub(amountOut).mul(997); amountIn = (numerator / denominator).add(1); } // Swaps to a flexible amount, from an exact input amount /// @inheritdoc ISwapper function swap( IERC20 fromToken, IERC20 toToken, address recipient, uint256 shareToMin, uint256 shareFrom ) public override returns (uint256 extraShare, uint256 shareReturned) { bentoBox.withdraw(fromToken, address(this), address(this), 0, shareFrom); uint256 amountFrom = WETH_VAULT.withdraw(type(uint256).max, address(pair)); (uint256 reserve0, uint256 reserve1, ) = pair.getReserves(); uint256 amountIntermediate = getAmountOut(amountFrom, reserve0, reserve1); pair.swap(0, amountIntermediate, address(this), new bytes(0)); uint256 amountTo = MIM3POOL.exchange_underlying(3, 0, amountIntermediate, 0, address(bentoBox)); (, shareReturned) = bentoBox.deposit(toToken, address(bentoBox), recipient, amountTo, 0); extraShare = shareReturned.sub(shareToMin); } // Swaps to an exact amount, from a flexible input amount /// @inheritdoc ISwapper function swapExact( IERC20 fromToken, IERC20 toToken, address recipient, address refundTo, uint256 shareFromSupplied, uint256 shareToExact ) public override returns (uint256 shareUsed, uint256 shareReturned) { return (0,0); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IBentoBoxV1","name":"bentoBox_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"MIM3POOL","outputs":[{"internalType":"contract CurvePool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TETHER","outputs":[{"internalType":"contract TetherToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH_VAULT","outputs":[{"internalType":"contract YearnVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bentoBox","outputs":[{"internalType":"contract IBentoBoxV1","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"fromToken","type":"address"},{"internalType":"contract IERC20","name":"toToken","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"shareToMin","type":"uint256"},{"internalType":"uint256","name":"shareFrom","type":"uint256"}],"name":"swap","outputs":[{"internalType":"uint256","name":"extraShare","type":"uint256"},{"internalType":"uint256","name":"shareReturned","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"fromToken","type":"address"},{"internalType":"contract IERC20","name":"toToken","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"address","name":"refundTo","type":"address"},{"internalType":"uint256","name":"shareFromSupplied","type":"uint256"},{"internalType":"uint256","name":"shareToExact","type":"uint256"}],"name":"swapExact","outputs":[{"internalType":"uint256","name":"shareUsed","type":"uint256"},{"internalType":"uint256","name":"shareReturned","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b50604051610b0f380380610b0f83398101604081905261002f916100c8565b6001600160601b0319606082901b1660805260405163095ea7b360e01b815273dac17f958d2ee523a2206206994597c13d831ec79063095ea7b39061009090735a6a4d54456819380173272a5e8e9b9904bdf41b90600019906004016100f6565b600060405180830381600087803b1580156100aa57600080fd5b505af11580156100be573d6000803e3d6000fd5b505050505061010f565b6000602082840312156100d9578081fd5b81516001600160a01b03811681146100ef578182fd5b9392505050565b6001600160a01b03929092168252602082015260400190565b60805160601c6109cf610140600039806101215280610160528061041d528061049b52806104cb52506109cf6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80636b2ace87116100505780636b2ace87146100be57806378e7e3d1146100c6578063e343fe12146100ce57610072565b806322a88c091461007757806341495591146100955780634622be901461009d575b600080fd5b61007f6100e1565b60405161008c91906107ae565b60405180910390f35b61007f6100f9565b6100b06100ab366004610658565b610111565b60405161008c929190610957565b61007f61011f565b61007f610143565b6100b06100dc3660046106c5565b61015b565b735a6a4d54456819380173272a5e8e9b9904bdf41b81565b73a258c4606ca8206d8aa700ce2143d7db854d168c81565b600080965096945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b73dac17f958d2ee523a2206206994597c13d831ec781565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166397da6d308830306000886040518663ffffffff1660e01b81526004016101b39594939291906107c2565b6040805180830381600087803b1580156101cc57600080fd5b505af11580156101e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610204919061078b565b5050604051627b8a6760e11b815260009073a258c4606ca8206d8aa700ce2143d7db854d168c9062f714ce9061025690600019907306da0fd433c1a5d7a4faa01111c044910a18455390600401610940565b602060405180830381600087803b15801561027057600080fd5b505af1158015610284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a89190610773565b90506000807306da0fd433c1a5d7a4faa01111c044910a1845536001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156102fa57600080fd5b505afa15801561030e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610332919061071f565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150600061036484848461057e565b604080516000808252602082019283905263022c0d9f60e01b9092529192507306da0fd433c1a5d7a4faa01111c044910a1845539163022c0d9f916103b09185903090602481016107f6565b600060405180830381600087803b1580156103ca57600080fd5b505af11580156103de573d6000803e3d6000fd5b50506040516322770cc360e11b815260009250735a6a4d54456819380173272a5e8e9b9904bdf41b91506344ee198690610445906003908590879082907f000000000000000000000000000000000000000000000000000000000000000090600401610868565b602060405180830381600087803b15801561045f57600080fd5b505af1158015610473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104979190610773565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166302b9446c8c7f00000000000000000000000000000000000000000000000000000000000000008d8560006040518663ffffffff1660e01b815260040161050e9594939291906107c2565b6040805180830381600087803b15801561052757600080fd5b505af115801561053b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055f919061078b565b965061056d9050868a6105cc565b965050505050509550959350505050565b60008061058d856103e56105fe565b9050600061059b82856105fe565b905060006105b5836105af886103e86105fe565b90610635565b90508082816105c057fe5b04979650505050505050565b808203828111156105f85760405162461bcd60e51b81526004016105ef9061089b565b60405180910390fd5b92915050565b60008115806106195750508082028282828161061657fe5b04145b6105f85760405162461bcd60e51b81526004016105ef90610909565b818101818110156105f85760405162461bcd60e51b81526004016105ef906108d2565b60008060008060008060c08789031215610670578182fd5b863561067b81610965565b9550602087013561068b81610965565b9450604087013561069b81610965565b935060608701356106ab81610965565b9598949750929560808101359460a0909101359350915050565b600080600080600060a086880312156106dc578081fd5b85356106e781610965565b945060208601356106f781610965565b9350604086013561070781610965565b94979396509394606081013594506080013592915050565b600080600060608486031215610733578283fd5b835161073e8161097d565b602085015190935061074f8161097d565b604085015190925063ffffffff81168114610768578182fd5b809150509250925092565b600060208284031215610784578081fd5b5051919050565b6000806040838503121561079d578182fd5b505080516020909101519092909150565b6001600160a01b0391909116815260200190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b6000858252602085818401526001600160a01b0385166040840152608060608401528351806080850152825b8181101561083e5785810183015185820160a001528201610822565b8181111561084f578360a083870101525b50601f01601f19169290920160a0019695505050505050565b600f95860b81529390940b6020840152604083019190915260608201526001600160a01b03909116608082015260a00190565b60208082526015908201527f426f72696e674d6174683a20556e646572666c6f770000000000000000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b6001600160a01b038116811461097a57600080fd5b50565b6dffffffffffffffffffffffffffff8116811461097a57600080fdfea264697066735822122082e7babab089d15f638e61b679be92e5a574c3fbe58c122af9ba720c9c3a6cfd64736f6c634300060c0033000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd643966
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100725760003560e01c80636b2ace87116100505780636b2ace87146100be57806378e7e3d1146100c6578063e343fe12146100ce57610072565b806322a88c091461007757806341495591146100955780634622be901461009d575b600080fd5b61007f6100e1565b60405161008c91906107ae565b60405180910390f35b61007f6100f9565b6100b06100ab366004610658565b610111565b60405161008c929190610957565b61007f61011f565b61007f610143565b6100b06100dc3660046106c5565b61015b565b735a6a4d54456819380173272a5e8e9b9904bdf41b81565b73a258c4606ca8206d8aa700ce2143d7db854d168c81565b600080965096945050505050565b7f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd64396681565b73dac17f958d2ee523a2206206994597c13d831ec781565b6000807f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd6439666001600160a01b03166397da6d308830306000886040518663ffffffff1660e01b81526004016101b39594939291906107c2565b6040805180830381600087803b1580156101cc57600080fd5b505af11580156101e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610204919061078b565b5050604051627b8a6760e11b815260009073a258c4606ca8206d8aa700ce2143d7db854d168c9062f714ce9061025690600019907306da0fd433c1a5d7a4faa01111c044910a18455390600401610940565b602060405180830381600087803b15801561027057600080fd5b505af1158015610284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a89190610773565b90506000807306da0fd433c1a5d7a4faa01111c044910a1845536001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156102fa57600080fd5b505afa15801561030e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610332919061071f565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150600061036484848461057e565b604080516000808252602082019283905263022c0d9f60e01b9092529192507306da0fd433c1a5d7a4faa01111c044910a1845539163022c0d9f916103b09185903090602481016107f6565b600060405180830381600087803b1580156103ca57600080fd5b505af11580156103de573d6000803e3d6000fd5b50506040516322770cc360e11b815260009250735a6a4d54456819380173272a5e8e9b9904bdf41b91506344ee198690610445906003908590879082907f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd64396690600401610868565b602060405180830381600087803b15801561045f57600080fd5b505af1158015610473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104979190610773565b90507f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd6439666001600160a01b03166302b9446c8c7f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd6439668d8560006040518663ffffffff1660e01b815260040161050e9594939291906107c2565b6040805180830381600087803b15801561052757600080fd5b505af115801561053b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055f919061078b565b965061056d9050868a6105cc565b965050505050509550959350505050565b60008061058d856103e56105fe565b9050600061059b82856105fe565b905060006105b5836105af886103e86105fe565b90610635565b90508082816105c057fe5b04979650505050505050565b808203828111156105f85760405162461bcd60e51b81526004016105ef9061089b565b60405180910390fd5b92915050565b60008115806106195750508082028282828161061657fe5b04145b6105f85760405162461bcd60e51b81526004016105ef90610909565b818101818110156105f85760405162461bcd60e51b81526004016105ef906108d2565b60008060008060008060c08789031215610670578182fd5b863561067b81610965565b9550602087013561068b81610965565b9450604087013561069b81610965565b935060608701356106ab81610965565b9598949750929560808101359460a0909101359350915050565b600080600080600060a086880312156106dc578081fd5b85356106e781610965565b945060208601356106f781610965565b9350604086013561070781610965565b94979396509394606081013594506080013592915050565b600080600060608486031215610733578283fd5b835161073e8161097d565b602085015190935061074f8161097d565b604085015190925063ffffffff81168114610768578182fd5b809150509250925092565b600060208284031215610784578081fd5b5051919050565b6000806040838503121561079d578182fd5b505080516020909101519092909150565b6001600160a01b0391909116815260200190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b6000858252602085818401526001600160a01b0385166040840152608060608401528351806080850152825b8181101561083e5785810183015185820160a001528201610822565b8181111561084f578360a083870101525b50601f01601f19169290920160a0019695505050505050565b600f95860b81529390940b6020840152604083019190915260608201526001600160a01b03909116608082015260a00190565b60208082526015908201527f426f72696e674d6174683a20556e646572666c6f770000000000000000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b6001600160a01b038116811461097a57600080fd5b50565b6dffffffffffffffffffffffffffff8116811461097a57600080fdfea264697066735822122082e7babab089d15f638e61b679be92e5a574c3fbe58c122af9ba720c9c3a6cfd64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd643966
-----Decoded View---------------
Arg [0] : bentoBox_ (address): 0xF5BCE5077908a1b7370B9ae04AdC565EBd643966
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd643966
Deployed Bytecode Sourcemap
19036:3107:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19189:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19386:94;;;:::i;21842:298::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;19143:37::-;;;:::i;19286:92::-;;;:::i;20835:906::-;;;;;;:::i;:::-;;:::i;19189:90::-;19236:42;19189:90;:::o;19386:94::-;19437:42;19386:94;:::o;21842:298::-;22067:17;;21842:298;;;;;;;;;:::o;19143:37::-;;;:::o;19286:92::-;19335:42;19286:92;:::o;20835:906::-;21018:18;21038:21;21074:8;-1:-1:-1;;;;;21074:17:0;;21092:9;21111:4;21126;21133:1;21136:9;21074:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;21180:53:0;;-1:-1:-1;;;21180:53:0;;21159:18;;19437:42;;21180:19;;:53;;-1:-1:-1;;21200:17:0;19533:42;;21180:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21159:74;;21247:16;21265;19533:42;-1:-1:-1;;;;;21287:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21246:59;;;;;;;;;21326:26;21355:44;21368:10;21380:8;21390;21355:12;:44::i;:::-;21458:12;;;21420:1;21458:12;;;;;;;;;;-1:-1:-1;;;21410:61:0;;;21326:73;;-1:-1:-1;19533:42:0;;21410:9;;:61;;21326:73;;21451:4;;21410:61;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21503:76:0;;-1:-1:-1;;;21503:76:0;;21484:16;;-1:-1:-1;19236:42:0;;-1:-1:-1;21503:28:0;;:76;;21532:1;;21484:16;;21538:18;;21484:16;;21569:8;;21503:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21484:95;;21612:8;-1:-1:-1;;;;;21612:16:0;;21629:7;21646:8;21657:9;21668:8;21678:1;21612:68;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21592:88;-1:-1:-1;21704:29:0;;-1:-1:-1;21592:88:0;21722:10;21704:17;:29::i;:::-;21691:42;;20835:906;;;;;;;;;;;;;:::o;19867:398::-;20003:17;;20059;:8;20072:3;20059:12;:17::i;:::-;20033:43;-1:-1:-1;20087:17:0;20107:31;20033:43;20127:10;20107:19;:31::i;:::-;20087:51;-1:-1:-1;20149:19:0;20171:40;20195:15;20171:19;:9;20185:4;20171:13;:19::i;:::-;:23;;:40::i;:::-;20149:62;;20246:11;20234:9;:23;;;;;;;19867:398;-1:-1:-1;;;;;;;19867:398:0:o;501:138::-;594:5;;;589:16;;;;581:50;;;;-1:-1:-1;;;581:50:0;;;;;;;:::i;:::-;;;;;;;;;501:138;;;;:::o;647:155::-;705:9;735:6;;;:30;;-1:-1:-1;;750:5:0;;;764:1;759;750:5;759:1;745:15;;;;;:20;735:30;727:67;;;;-1:-1:-1;;;727:67:0;;;;;;;:::i;352:141::-;445:5;;;440:16;;;;432:53;;;;-1:-1:-1;;;432:53:0;;;;;;;:::i;865:925:-1:-;;;;;;;1082:3;1070:9;1061:7;1057:23;1053:33;1050:2;;;-1:-1;;1089:12;1050:2;236:6;223:20;248:47;289:5;248:47;:::i;:::-;1141:77;-1:-1;1255:2;1308:22;;223:20;248:47;223:20;248:47;:::i;:::-;1263:77;-1:-1;1377:2;1416:22;;72:20;97:33;72:20;97:33;:::i;:::-;1385:63;-1:-1;1485:2;1524:22;;72:20;97:33;72:20;97:33;:::i;:::-;1044:746;;;;-1:-1;1044:746;;1593:3;1633:22;;515:20;;1702:3;1742:22;;;515:20;;-1:-1;1044:746;-1:-1;;1044:746::o;1797:799::-;;;;;;1997:3;1985:9;1976:7;1972:23;1968:33;1965:2;;;-1:-1;;2004:12;1965:2;236:6;223:20;248:47;289:5;248:47;:::i;:::-;2056:77;-1:-1;2170:2;2223:22;;223:20;248:47;223:20;248:47;:::i;:::-;2178:77;-1:-1;2292:2;2331:22;;72:20;97:33;72:20;97:33;:::i;:::-;1959:637;;;;-1:-1;2300:63;;2400:2;2439:22;;515:20;;-1:-1;2508:3;2548:22;515:20;;1959:637;-1:-1;;1959:637::o;2603:533::-;;;;2751:2;2739:9;2730:7;2726:23;2722:32;2719:2;;;-1:-1;;2757:12;2719:2;391:6;385:13;403:33;430:5;403:33;:::i;:::-;2920:2;2970:22;;385:13;2809:74;;-1:-1;403:33;385:13;403:33;:::i;:::-;3039:2;3088:22;;803:13;2928:74;;-1:-1;13704:10;13693:22;;16544:34;;16534:2;;-1:-1;;16582:12;16534:2;3047:73;;;;2713:423;;;;;:::o;3143:263::-;;3258:2;3246:9;3237:7;3233:23;3229:32;3226:2;;;-1:-1;;3264:12;3226:2;-1:-1;663:13;;3220:186;-1:-1;3220:186::o;3413:399::-;;;3545:2;3533:9;3524:7;3520:23;3516:32;3513:2;;;-1:-1;;3551:12;3513:2;-1:-1;;663:13;;3714:2;3764:22;;;663:13;;;;;-1:-1;3507:305::o;6695:258::-;-1:-1;;;;;13487:54;;;;4378:68;;6840:2;6825:18;;6811:142::o;7229:712::-;-1:-1;;;;;13487:54;;;4378:68;;13487:54;;;7669:2;7654:18;;3890:37;13487:54;;;;7752:2;7737:18;;3890:37;7843:2;7828:18;;5362:58;;;;7926:3;7911:19;;6646:37;;;;7490:3;7475:19;;7461:480::o;9203:656::-;;15423:24;5369:3;5362:58;9613:2;6676:5;9613:2;9602:9;9598:18;6646:37;-1:-1;;;;;13085:5;13487:54;9696:2;9685:9;9681:18;3890:37;9440:3;9733:2;9722:9;9718:18;9711:48;4081:5;12621:12;12777:6;9440:3;9429:9;9425:19;12765;-1:-1;15653:101;15667:6;15664:1;15661:13;15653:101;;;15734:11;;;;;15728:18;15715:11;;;12805:14;15715:11;15708:39;15682:10;;15653:101;;;15769:6;15766:1;15763:13;15760:2;;;-1:-1;12805:14;15825:6;9429:9;15816:16;;15809:27;15760:2;-1:-1;15941:7;15925:14;-1:-1;;15921:28;4238:39;;;;12805:14;4238:39;;9411:448;-1:-1;;;;;;9411:448::o;9866:712::-;13287:2;13276:21;;;5214:57;;13276:21;;;;10306:2;10291:18;;5214:57;10389:2;10374:18;;6646:37;;;;10480:2;10465:18;;5362:58;-1:-1;;;;;13487:54;;;10563:3;10548:19;;3890:37;10127:3;10112:19;;10098:480::o;10585:416::-;10785:2;10799:47;;;5804:2;10770:18;;;12765:19;5840:23;12805:14;;;5820:44;5883:12;;;10756:245::o;11008:416::-;11208:2;11222:47;;;6134:2;11193:18;;;12765:19;6170:26;12805:14;;;6150:47;6216:12;;;11179:245::o;11431:416::-;11631:2;11645:47;;;6467:2;11616:18;;;12765:19;6503:26;12805:14;;;6483:47;6549:12;;;11602:245::o;11854:333::-;6646:37;;;-1:-1;;;;;13487:54;12173:2;12158:18;;3890:37;12009:2;11994:18;;11980:207::o;12194:333::-;6646:37;;;12513:2;12498:18;;6646:37;12349:2;12334:18;;12320:207::o;15962:117::-;-1:-1;;;;;16049:5;13487:54;16024:5;16021:35;16011:2;;16070:1;;16060:12;16011:2;16005:74;:::o;16238:117::-;13382:30;16325:5;13371:42;16300:5;16297:35;16287:2;;16346:1;;16336:12
Swarm Source
ipfs://82e7babab089d15f638e61b679be92e5a574c3fbe58c122af9ba720c9c3a6cfd
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 24 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.