Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
YVYFILevSwapper
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-14 */ // 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 @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/Leverage/YVYFILevSwapper.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() external returns (uint256); function deposit(uint256 amount, address recipient) external returns (uint256); } interface TetherToken { function approve(address _spender, uint256 _value) external; } contract YVYFILevSwapper { using BoringMath for uint256; // Local variables IBentoBoxV1 public immutable bentoBox; CurvePool public constant MIM3POOL = CurvePool(0x5a6A4D54456819380173272A5E8E9B9904BdF41B); YearnVault public constant YFI_VAULT = YearnVault(0xE14d13d8B3b85aF791b2AADD661cDBd5E6097Db1); TetherToken public constant TETHER = TetherToken(0xdAC17F958D2ee523a2206206994597C13D831ec7); IUniswapV2Pair constant YFI_WETH = IUniswapV2Pair(0x088ee5007C98a9677165D78dD2109AE4a3D04d0C); IUniswapV2Pair constant pair = IUniswapV2Pair(0x06da0fd433C1A5d7a4faa01111c044910A184553); IERC20 constant YFI = IERC20(0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e); IERC20 public constant MIM = IERC20(0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3); constructor( IBentoBoxV1 bentoBox_ ) public { bentoBox = bentoBox_; MIM.approve(address(MIM3POOL), type(uint256).max); YFI.approve(address(YFI_VAULT), 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 function swap( address recipient, uint256 shareToMin, uint256 shareFrom ) public returns (uint256 extraShare, uint256 shareReturned) { uint256 amountFirst; { (uint256 amountFrom, ) = bentoBox.withdraw(MIM, address(this), address(this), 0, shareFrom); amountFirst = MIM3POOL.exchange_underlying(0, 3, amountFrom, 0, address(pair)); } uint256 amountIntermediate; { (uint256 reserve0, uint256 reserve1, ) = pair.getReserves(); amountIntermediate = getAmountOut(amountFirst, reserve1, reserve0); pair.swap(amountFirst, 0, address(YFI_WETH), new bytes(0)); } (uint256 reserve0, uint256 reserve1, ) = YFI_WETH.getReserves(); uint256 amountInt2 = getAmountOut(amountIntermediate, reserve1, reserve0); YFI_WETH.swap(amountInt2, 0, address(this), new bytes(0)); uint256 amountTo = YFI_VAULT.deposit(type(uint256).max, address(bentoBox)); (, shareReturned) = bentoBox.deposit(IERC20(address(YFI_VAULT)), address(bentoBox), recipient, amountTo, 0); extraShare = shareReturned.sub(shareToMin); } }
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":"MIM","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"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":"YFI_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":"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"}]
Contract Creation Code
60a060405234801561001057600080fd5b50604051610cad380380610cad83398101604081905261002f916101b2565b6001600160601b0319606082901b1660805260405163095ea7b360e01b81527399d8a9c45b2eca8864373a26d1459e3dff1e17f39063095ea7b39061009090735a6a4d54456819380173272a5e8e9b9904bdf41b90600019906004016101d9565b602060405180830381600087803b1580156100aa57600080fd5b505af11580156100be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e2919061018b565b5060405163095ea7b360e01b8152730bc529c00c6401aef6d220be8c6ea1667f6ad93e9063095ea7b3906101329073e14d13d8b3b85af791b2aadd661cdbd5e6097db190600019906004016101d9565b602060405180830381600087803b15801561014c57600080fd5b505af1158015610160573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610184919061018b565b50506101f2565b60006020828403121561019c578081fd5b815180151581146101ab578182fd5b9392505050565b6000602082840312156101c3578081fd5b81516001600160a01b03811681146101ab578182fd5b6001600160a01b03929092168252602082015260400190565b60805160601c610a8b6102226000398060f0528061014a528061055252806105d052806106145250610a8b6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806378e7e3d11161005057806378e7e3d1146100a55780639f1d0f59146100ad578063daec383d146100ce57610072565b806322a88c09146100775780636b2ace87146100955780636df155f31461009d575b600080fd5b61007f6100d6565b60405161008c9190610886565b60405180910390f35b61007f6100ee565b61007f610112565b61007f61012a565b6100c06100bb3660046107b8565b610142565b60405161008c929190610a2f565b61007f6106c6565b735a6a4d54456819380173272a5e8e9b9904bdf41b81565b7f000000000000000000000000000000000000000000000000000000000000000081565b73e14d13d8b3b85af791b2aadd661cdbd5e6097db181565b73dac17f958d2ee523a2206206994597c13d831ec781565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166397da6d307399d8a9c45b2eca8864373a26d1459e3dff1e17f3303060008a6040518663ffffffff1660e01b81526004016101b195949392919061089a565b6040805180830381600087803b1580156101ca57600080fd5b505af11580156101de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102029190610863565b506040516322770cc360e11b8152909150735a6a4d54456819380173272a5e8e9b9904bdf41b906344ee19869061025b90600090600390869083907306da0fd433c1a5d7a4faa01111c044910a184553906004016108ce565b602060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ad919061084b565b91505060008060007306da0fd433c1a5d7a4faa01111c044910a1845536001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561030257600080fd5b505afa158015610316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033a91906107f7565b506001600160701b031691506001600160701b0316915061035c8482846106de565b604080516000808252602082019283905263022c0d9f60e01b9092529194507306da0fd433c1a5d7a4faa01111c044910a1845539163022c0d9f916103bd9188919073088ee5007c98a9677165d78dd2109ae4a3d04d0c90602481016109bd565b600060405180830381600087803b1580156103d757600080fd5b505af11580156103eb573d6000803e3d6000fd5b50505050505060008073088ee5007c98a9677165d78dd2109ae4a3d04d0c6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561044157600080fd5b505afa158015610455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047991906107f7565b506001600160701b031691506001600160701b03169150600061049d8483856106de565b604080516000808252602082019283905263022c0d9f60e01b90925291925073088ee5007c98a9677165d78dd2109ae4a3d04d0c9163022c0d9f916104ea918591903090602481016109bd565b600060405180830381600087803b15801561050457600080fd5b505af1158015610518573d6000803e3d6000fd5b5050604051636e553f6560e01b81526000925073e14d13d8b3b85af791b2aadd661cdbd5e6097db19150636e553f659061057a90600019907f0000000000000000000000000000000000000000000000000000000000000000906004016109a6565b602060405180830381600087803b15801561059457600080fd5b505af11580156105a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cc919061084b565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166302b9446c73e14d13d8b3b85af791b2aadd661cdbd5e6097db17f00000000000000000000000000000000000000000000000000000000000000008e8560006040518663ffffffff1660e01b815260040161065795949392919061089a565b6040805180830381600087803b15801561067057600080fd5b505af1158015610684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a89190610863565b97506106b69050878b61072c565b9750505050505050935093915050565b7399d8a9c45b2eca8864373a26d1459e3dff1e17f381565b6000806106ed856103e561075e565b905060006106fb828561075e565b905060006107158361070f886103e861075e565b90610795565b905080828161072057fe5b04979650505050505050565b808203828111156107585760405162461bcd60e51b815260040161074f90610901565b60405180910390fd5b92915050565b60008115806107795750508082028282828161077657fe5b04145b6107585760405162461bcd60e51b815260040161074f9061096f565b818101818110156107585760405162461bcd60e51b815260040161074f90610938565b6000806000606084860312156107cc578283fd5b83356001600160a01b03811681146107e2578384fd5b95602085013595506040909401359392505050565b60008060006060848603121561080b578283fd5b835161081681610a3d565b602085015190935061082781610a3d565b604085015190925063ffffffff81168114610840578182fd5b809150509250925092565b60006020828403121561085c578081fd5b5051919050565b60008060408385031215610875578182fd5b505080516020909101519092909150565b6001600160a01b0391909116815260200190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b600f95860b81529390940b6020840152604083019190915260608201526001600160a01b03909116608082015260a00190565b60208082526015908201527f426f72696e674d6174683a20556e646572666c6f770000000000000000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b9182526001600160a01b0316602082015260400190565b6000858252602085818401526001600160a01b0385166040840152608060608401528351806080850152825b81811015610a055785810183015185820160a0015282016109e9565b81811115610a16578360a083870101525b50601f01601f19169290920160a0019695505050505050565b918252602082015260400190565b6001600160701b0381168114610a5257600080fd5b5056fea2646970667358221220796d31ca50911ab41135522a5f4dbdef425151cba926b5d7ced279f2a9fcde8964736f6c634300060c0033000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd643966
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100725760003560e01c806378e7e3d11161005057806378e7e3d1146100a55780639f1d0f59146100ad578063daec383d146100ce57610072565b806322a88c09146100775780636b2ace87146100955780636df155f31461009d575b600080fd5b61007f6100d6565b60405161008c9190610886565b60405180910390f35b61007f6100ee565b61007f610112565b61007f61012a565b6100c06100bb3660046107b8565b610142565b60405161008c929190610a2f565b61007f6106c6565b735a6a4d54456819380173272a5e8e9b9904bdf41b81565b7f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd64396681565b73e14d13d8b3b85af791b2aadd661cdbd5e6097db181565b73dac17f958d2ee523a2206206994597c13d831ec781565b6000806000807f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd6439666001600160a01b03166397da6d307399d8a9c45b2eca8864373a26d1459e3dff1e17f3303060008a6040518663ffffffff1660e01b81526004016101b195949392919061089a565b6040805180830381600087803b1580156101ca57600080fd5b505af11580156101de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102029190610863565b506040516322770cc360e11b8152909150735a6a4d54456819380173272a5e8e9b9904bdf41b906344ee19869061025b90600090600390869083907306da0fd433c1a5d7a4faa01111c044910a184553906004016108ce565b602060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ad919061084b565b91505060008060007306da0fd433c1a5d7a4faa01111c044910a1845536001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561030257600080fd5b505afa158015610316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033a91906107f7565b506001600160701b031691506001600160701b0316915061035c8482846106de565b604080516000808252602082019283905263022c0d9f60e01b9092529194507306da0fd433c1a5d7a4faa01111c044910a1845539163022c0d9f916103bd9188919073088ee5007c98a9677165d78dd2109ae4a3d04d0c90602481016109bd565b600060405180830381600087803b1580156103d757600080fd5b505af11580156103eb573d6000803e3d6000fd5b50505050505060008073088ee5007c98a9677165d78dd2109ae4a3d04d0c6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561044157600080fd5b505afa158015610455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047991906107f7565b506001600160701b031691506001600160701b03169150600061049d8483856106de565b604080516000808252602082019283905263022c0d9f60e01b90925291925073088ee5007c98a9677165d78dd2109ae4a3d04d0c9163022c0d9f916104ea918591903090602481016109bd565b600060405180830381600087803b15801561050457600080fd5b505af1158015610518573d6000803e3d6000fd5b5050604051636e553f6560e01b81526000925073e14d13d8b3b85af791b2aadd661cdbd5e6097db19150636e553f659061057a90600019907f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd643966906004016109a6565b602060405180830381600087803b15801561059457600080fd5b505af11580156105a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cc919061084b565b90507f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd6439666001600160a01b03166302b9446c73e14d13d8b3b85af791b2aadd661cdbd5e6097db17f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd6439668e8560006040518663ffffffff1660e01b815260040161065795949392919061089a565b6040805180830381600087803b15801561067057600080fd5b505af1158015610684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a89190610863565b97506106b69050878b61072c565b9750505050505050935093915050565b7399d8a9c45b2eca8864373a26d1459e3dff1e17f381565b6000806106ed856103e561075e565b905060006106fb828561075e565b905060006107158361070f886103e861075e565b90610795565b905080828161072057fe5b04979650505050505050565b808203828111156107585760405162461bcd60e51b815260040161074f90610901565b60405180910390fd5b92915050565b60008115806107795750508082028282828161077657fe5b04145b6107585760405162461bcd60e51b815260040161074f9061096f565b818101818110156107585760405162461bcd60e51b815260040161074f90610938565b6000806000606084860312156107cc578283fd5b83356001600160a01b03811681146107e2578384fd5b95602085013595506040909401359392505050565b60008060006060848603121561080b578283fd5b835161081681610a3d565b602085015190935061082781610a3d565b604085015190925063ffffffff81168114610840578182fd5b809150509250925092565b60006020828403121561085c578081fd5b5051919050565b60008060408385031215610875578182fd5b505080516020909101519092909150565b6001600160a01b0391909116815260200190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b600f95860b81529390940b6020840152604083019190915260608201526001600160a01b03909116608082015260a00190565b60208082526015908201527f426f72696e674d6174683a20556e646572666c6f770000000000000000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b9182526001600160a01b0316602082015260400190565b6000858252602085818401526001600160a01b0385166040840152608060608401528351806080850152825b81811015610a055785810183015185820160a0015282016109e9565b81811115610a16578360a083870101525b50601f01601f19169290920160a0019695505050505050565b918252602082015260400190565b6001600160701b0381168114610a5257600080fd5b5056fea2646970667358221220796d31ca50911ab41135522a5f4dbdef425151cba926b5d7ced279f2a9fcde8964736f6c634300060c0033
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
17367:3313:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17504:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17460:37;;;:::i;17601:93::-;;;:::i;17701:92::-;;;:::i;19441:1236::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;18075:79::-;;;:::i;17504:90::-;17551:42;17504:90;:::o;17460:37::-;;;:::o;17601:93::-;17651:42;17601:93;:::o;17701:92::-;17750:42;17701:92;:::o;19441:1236::-;19563:18;19583:21;19619:19;19665:18;19689:8;-1:-1:-1;;;;;19689:17:0;;18111:42;19720:4;19735;19742:1;19745:9;19689:66;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;19782:64:0;;-1:-1:-1;;;19782:64:0;;19664:91;;-1:-1:-1;17551:42:0;;19782:28;;:64;;19811:1;;19814;;19664:91;;19811:1;;17946:42;;19782:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19768:78;;19441:1236;19872:26;19933:16;19951;17946:42;-1:-1:-1;;;;;19973:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19932:59;-1:-1:-1;;;;;19932:59:0;;;-1:-1:-1;;;;;19932:59:0;;;20034:45;20047:11;20060:8;20070;20034:12;:45::i;:::-;20135:12;;;20113:1;20135:12;;;;;;;;;;-1:-1:-1;;;20090:58:0;;;20012:67;;-1:-1:-1;17946:42:0;;20090:9;;:58;;20100:11;;20113:1;17850:42;;20090:58;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19441:1236;;20175:16;20193;17850:42;-1:-1:-1;;;;;20215:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20174:63;-1:-1:-1;;;;;20174:63:0;;;-1:-1:-1;;;;;20174:63:0;;;20258:18;20279:52;20292:18;20312:8;20322;20279:12;:52::i;:::-;20396:12;;;20378:1;20396:12;;;;;;;;;;-1:-1:-1;;;20352:57:0;;;20258:73;;-1:-1:-1;17850:42:0;;20352:13;;:57;;20258:73;;20378:1;20389:4;;20352:57;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20441:55:0;;-1:-1:-1;;;20441:55:0;;20422:16;;-1:-1:-1;17651:42:0;;-1:-1:-1;20441:17:0;;:55;;-1:-1:-1;;20459:17:0;20486:8;;20441:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20422:74;;20529:8;-1:-1:-1;;;;;20529:16:0;;17651:42;20582:8;20593:9;20604:8;20614:1;20529:87;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20509:107;-1:-1:-1;20640:29:0;;-1:-1:-1;20509:107:0;20658:10;20640:17;:29::i;:::-;20627:42;;19441:1236;;;;;;;;;;;;:::o;18075:79::-;18111:42;18075:79;:::o;18503:398::-;18639:17;;18695;:8;18708:3;18695:12;:17::i;:::-;18669:43;-1:-1:-1;18723:17:0;18743:31;18669:43;18763:10;18743:19;:31::i;:::-;18723:51;-1:-1:-1;18785:19:0;18807:40;18831:15;18807:19;:9;18821:4;18807:13;:19::i;:::-;:23;;:40::i;:::-;18785:62;;18882:11;18870:9;:23;;;;;;;18503:398;-1:-1:-1;;;;;;;18503: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;700:491:-1:-;;;;838:2;826:9;817:7;813:23;809:32;806:2;;;-1:-1;;844:12;806:2;85:6;72:20;-1:-1;;;;;14789:5;12227:54;14764:5;14761:35;14751:2;;-1:-1;;14800:12;14751:2;896:63;996:2;1035:22;;350:20;;-1:-1;1104:2;1143:22;;;350:20;;800:391;-1:-1;;;800:391::o;1198:533::-;;;;1346:2;1334:9;1325:7;1321:23;1317:32;1314:2;;;-1:-1;;1352:12;1314:2;226:6;220:13;238:33;265:5;238:33;:::i;:::-;1515:2;1565:22;;220:13;1404:74;;-1:-1;238:33;220:13;238:33;:::i;:::-;1634:2;1683:22;;638:13;1523:74;;-1:-1;12444:10;12433:22;;15132:34;;15122:2;;-1:-1;;15170:12;15122:2;1642:73;;;;1308:423;;;;;:::o;1738:263::-;;1853:2;1841:9;1832:7;1828:23;1824:32;1821:2;;;-1:-1;;1859:12;1821:2;-1:-1;498:13;;1815:186;-1:-1;1815:186::o;2008:399::-;;;2140:2;2128:9;2119:7;2115:23;2111:32;2108:2;;;-1:-1;;2146:12;2108:2;-1:-1;;498:13;;2309:2;2359:22;;;498:13;;;;;-1:-1;2102:305::o;5290:258::-;-1:-1;;;;;12227:54;;;;2973:68;;5435:2;5420:18;;5406:142::o;6081:712::-;-1:-1;;;;;12227:54;;;2973:68;;12227:54;;;6521:2;6506:18;;2485:37;12227:54;;;;6604:2;6589:18;;2485:37;6695:2;6680:18;;3957:58;;;;6778:3;6763:19;;5241:37;;;;6342:3;6327:19;;6313:480::o;8055:712::-;12027:2;12016:21;;;3809:57;;12016:21;;;;8495:2;8480:18;;3809:57;8578:2;8563:18;;5241:37;;;;8669:2;8654:18;;3957:58;-1:-1;;;;;12227:54;;;8752:3;8737:19;;2485:37;8316:3;8301:19;;8287:480::o;8774:416::-;8974:2;8988:47;;;4399:2;8959:18;;;11617:19;4435:23;11657:14;;;4415:44;4478:12;;;8945:245::o;9197:416::-;9397:2;9411:47;;;4729:2;9382:18;;;11617:19;4765:26;11657:14;;;4745:47;4811:12;;;9368:245::o;9620:416::-;9820:2;9834:47;;;5062:2;9805:18;;;11617:19;5098:26;11657:14;;;5078:47;5144:12;;;9791:245::o;10043:333::-;5241:37;;;-1:-1;;;;;12227:54;10362:2;10347:18;;2485:37;10198:2;10183:18;;10169:207::o;10383:656::-;;5271:5;5248:3;5241:37;10793:2;14163:24;10793:2;10782:9;10778:18;3957:58;-1:-1;;;;;11937:5;12227:54;10876:2;10865:9;10861:18;2485:37;10620:3;10913:2;10902:9;10898:18;10891:48;2676:5;11473:12;11629:6;10620:3;10609:9;10605:19;11617;-1:-1;14393:101;14407:6;14404:1;14401:13;14393:101;;;14474:11;;;;;14468:18;14455:11;;;11657:14;14455:11;14448:39;14422:10;;14393:101;;;14509:6;14506:1;14503:13;14500:2;;;-1:-1;11657:14;14565:6;10609:9;14556:16;;14549:27;14500:2;-1:-1;14681:7;14665:14;-1:-1;;14661:28;2833:39;;;;11657:14;2833:39;;10591:448;-1:-1;;;;;;10591:448::o;11046:333::-;5241:37;;;11365:2;11350:18;;5241:37;11201:2;11186:18;;11172:207::o;14826:117::-;-1:-1;;;;;14913:5;12111:42;14888:5;14885:35;14875:2;;14934:1;;14924:12;14875:2;14869:74;:::o
Swarm Source
ipfs://796d31ca50911ab41135522a5f4dbdef425151cba926b5d7ced279f2a9fcde89
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.