Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
FeeConverter
Compiler Version
v0.8.6+commit.11564f7e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-09-07 */ // SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.6; pragma abicoder v2; interface IERC20 { function totalSupply() external view returns (uint); function balanceOf(address account) external view returns (uint); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint); function symbol() external view returns (string memory); function decimals() external view returns (uint); function approve(address spender, uint amount) external returns (bool); function mint(address account, uint amount) external; function burn(address account, uint amount) external; function transferFrom(address sender, address recipient, uint amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint value); event Approval(address indexed owner, address indexed spender, uint value); } interface IPairFactory { function pairByTokens(address _tokenA, address _tokenB) external view returns(address); function createPair( address _tokenA, address _tokenB ) external returns(address); } interface ILendingPair { function checkAccountHealth(address _account) external view; function accrueAccount(address _account) external; function accrue() external; function accountHealth(address _account) external view returns(uint); function totalDebt(address _token) external view returns(uint); function tokenA() external view returns(address); function tokenB() external view returns(address); function lpToken(address _token) external view returns(IERC20); function debtOf(address _account, address _token) external view returns(uint); function pendingDebtTotal(address _token) external view returns(uint); function pendingSupplyTotal(address _token) external view returns(uint); function deposit(address _token, uint _amount) external; function withdraw(address _token, uint _amount) external; function borrow(address _token, uint _amount) external; function repay(address _token, uint _amount) external; function withdrawBorrow(address _token, uint _amount) external; function controller() external view returns(ILendingController); function borrowBalance( address _account, address _borrowedToken, address _returnToken ) external view returns(uint); function convertTokenValues( address _fromToken, address _toToken, uint _inputAmount ) external view returns(uint); } interface IInterestRateModel { function systemRate(ILendingPair _pair, address _token) external view returns(uint); function supplyRatePerBlock(ILendingPair _pair, address _token) external view returns(uint); function borrowRatePerBlock(ILendingPair _pair, address _token) external view returns(uint); } interface IRewardDistribution { function distributeReward(address _account, address _token) external; function setTotalRewardPerBlock(uint _value) external; function migrateRewards(address _recipient, uint _amount) external; function addPool( address _pair, address _token, bool _isSupply, uint _points ) external; function setReward( address _pair, address _token, bool _isSupply, uint _points ) external; } interface ILendingController { function interestRateModel() external view returns(IInterestRateModel); function rewardDistribution() external view returns(IRewardDistribution); function feeRecipient() external view returns(address); function LIQ_MIN_HEALTH() external view returns(uint); function minBorrowUSD() external view returns(uint); function liqFeeSystem(address _token) external view returns(uint); function liqFeeCaller(address _token) external view returns(uint); function liqFeesTotal(address _token) external view returns(uint); function colFactor(address _token) external view returns(uint); function depositLimit(address _lendingPair, address _token) external view returns(uint); function borrowLimit(address _lendingPair, address _token) external view returns(uint); function originFee(address _token) external view returns(uint); function depositsEnabled() external view returns(bool); function borrowingEnabled() external view returns(bool); function setFeeRecipient(address _feeRecipient) external; function tokenPrice(address _token) external view returns(uint); function tokenSupported(address _token) external view returns(bool); function setRewardDistribution(address _value) external; function setInterestRateModel(address _value) external; function setDepositLimit(address _pair, address _token, uint _value) external; } interface IFeeConverter { function convert( address _incentiveRecipient, ILendingPair _pair, bytes memory _path, uint _supplyTokenAmount, uint _minWildOutput ) external returns(uint); } contract Ownable { address public owner; address public pendingOwner; event OwnershipTransferInitiated(address indexed previousOwner, address indexed newOwner); event OwnershipTransferConfirmed(address indexed previousOwner, address indexed newOwner); constructor() { owner = msg.sender; emit OwnershipTransferConfirmed(address(0), owner); } modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } function isOwner() public view returns (bool) { return msg.sender == owner; } function transferOwnership(address _newOwner) external onlyOwner { require(_newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferInitiated(owner, _newOwner); pendingOwner = _newOwner; } function acceptOwnership() external { require(msg.sender == pendingOwner, "Ownable: caller is not pending owner"); emit OwnershipTransferConfirmed(owner, pendingOwner); owner = pendingOwner; pendingOwner = address(0); } } library BytesLib { function concat( bytes memory _preBytes, bytes memory _postBytes ) internal pure returns (bytes memory) { bytes memory tempBytes; assembly { // Get a location of some free memory and store it in tempBytes as // Solidity does for memory variables. tempBytes := mload(0x40) // Store the length of the first bytes array at the beginning of // the memory for tempBytes. let length := mload(_preBytes) mstore(tempBytes, length) // Maintain a memory counter for the current write location in the // temp bytes array by adding the 32 bytes for the array length to // the starting location. let mc := add(tempBytes, 0x20) // Stop copying when the memory counter reaches the length of the // first bytes array. let end := add(mc, length) for { // Initialize a copy counter to the start of the _preBytes data, // 32 bytes into its memory. let cc := add(_preBytes, 0x20) } lt(mc, end) { // Increase both counters by 32 bytes each iteration. mc := add(mc, 0x20) cc := add(cc, 0x20) } { // Write the _preBytes data into the tempBytes memory 32 bytes // at a time. mstore(mc, mload(cc)) } // Add the length of _postBytes to the current length of tempBytes // and store it as the new length in the first 32 bytes of the // tempBytes memory. length := mload(_postBytes) mstore(tempBytes, add(length, mload(tempBytes))) // Move the memory counter back from a multiple of 0x20 to the // actual end of the _preBytes data. mc := end // Stop copying when the memory counter reaches the new combined // length of the arrays. end := add(mc, length) for { let cc := add(_postBytes, 0x20) } lt(mc, end) { mc := add(mc, 0x20) cc := add(cc, 0x20) } { mstore(mc, mload(cc)) } // Update the free-memory pointer by padding our last write location // to 32 bytes: add 31 bytes to the end of tempBytes to move to the // next 32 byte block, then round down to the nearest multiple of // 32. If the sum of the length of the two arrays is zero then add // one before rounding down to leave a blank 32 bytes (the length block with 0). mstore(0x40, and( add(add(end, iszero(add(length, mload(_preBytes)))), 31), not(31) // Round down to the nearest 32 bytes. )) } return tempBytes; } function concatStorage(bytes storage _preBytes, bytes memory _postBytes) internal { assembly { // Read the first 32 bytes of _preBytes storage, which is the length // of the array. (We don't need to use the offset into the slot // because arrays use the entire slot.) let fslot := sload(_preBytes.slot) // Arrays of 31 bytes or less have an even value in their slot, // while longer arrays have an odd value. The actual length is // the slot divided by two for odd values, and the lowest order // byte divided by two for even values. // If the slot is even, bitwise and the slot with 255 and divide by // two to get the length. If the slot is odd, bitwise and the slot // with -1 and divide by two. let slength := div(and(fslot, sub(mul(0x100, iszero(and(fslot, 1))), 1)), 2) let mlength := mload(_postBytes) let newlength := add(slength, mlength) // slength can contain both the length and contents of the array // if length < 32 bytes so let's prepare for that // v. http://solidity.readthedocs.io/en/latest/miscellaneous.html#layout-of-state-variables-in-storage switch add(lt(slength, 32), lt(newlength, 32)) case 2 { // Since the new array still fits in the slot, we just need to // update the contents of the slot. // uint256(bytes_storage) = uint256(bytes_storage) + uint256(bytes_memory) + new_length sstore( _preBytes.slot, // all the modifications to the slot are inside this // next block add( // we can just add to the slot contents because the // bytes we want to change are the LSBs fslot, add( mul( div( // load the bytes from memory mload(add(_postBytes, 0x20)), // zero all bytes to the right exp(0x100, sub(32, mlength)) ), // and now shift left the number of bytes to // leave space for the length in the slot exp(0x100, sub(32, newlength)) ), // increase length by the double of the memory // bytes length mul(mlength, 2) ) ) ) } case 1 { // The stored value fits in the slot, but the combined value // will exceed it. // get the keccak hash to get the contents of the array mstore(0x0, _preBytes.slot) let sc := add(keccak256(0x0, 0x20), div(slength, 32)) // save new length sstore(_preBytes.slot, add(mul(newlength, 2), 1)) // The contents of the _postBytes array start 32 bytes into // the structure. Our first read should obtain the `submod` // bytes that can fit into the unused space in the last word // of the stored array. To get this, we read 32 bytes starting // from `submod`, so the data we read overlaps with the array // contents by `submod` bytes. Masking the lowest-order // `submod` bytes allows us to add that value directly to the // stored value. let submod := sub(32, slength) let mc := add(_postBytes, submod) let end := add(_postBytes, mlength) let mask := sub(exp(0x100, submod), 1) sstore( sc, add( and( fslot, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ), and(mload(mc), mask) ) ) for { mc := add(mc, 0x20) sc := add(sc, 1) } lt(mc, end) { sc := add(sc, 1) mc := add(mc, 0x20) } { sstore(sc, mload(mc)) } mask := exp(0x100, sub(mc, end)) sstore(sc, mul(div(mload(mc), mask), mask)) } default { // get the keccak hash to get the contents of the array mstore(0x0, _preBytes.slot) // Start copying to the last used word of the stored array. let sc := add(keccak256(0x0, 0x20), div(slength, 32)) // save new length sstore(_preBytes.slot, add(mul(newlength, 2), 1)) // Copy over the first `submod` bytes of the new data as in // case 1 above. let slengthmod := mod(slength, 32) let mlengthmod := mod(mlength, 32) let submod := sub(32, slengthmod) let mc := add(_postBytes, submod) let end := add(_postBytes, mlength) let mask := sub(exp(0x100, submod), 1) sstore(sc, add(sload(sc), and(mload(mc), mask))) for { sc := add(sc, 1) mc := add(mc, 0x20) } lt(mc, end) { sc := add(sc, 1) mc := add(mc, 0x20) } { sstore(sc, mload(mc)) } mask := exp(0x100, sub(mc, end)) sstore(sc, mul(div(mload(mc), mask), mask)) } } } function slice( bytes memory _bytes, uint256 _start, uint256 _length ) internal pure returns (bytes memory) { require(_length + 31 >= _length, "slice_overflow"); require(_bytes.length >= _start + _length, "slice_outOfBounds"); bytes memory tempBytes; assembly { switch iszero(_length) case 0 { // Get a location of some free memory and store it in tempBytes as // Solidity does for memory variables. tempBytes := mload(0x40) // The first word of the slice result is potentially a partial // word read from the original array. To read it, we calculate // the length of that partial word and start copying that many // bytes into the array. The first word we copy will start with // data we don't care about, but the last `lengthmod` bytes will // land at the beginning of the contents of the new array. When // we're done copying, we overwrite the full first word with // the actual length of the slice. let lengthmod := and(_length, 31) // The multiplication in the next line is necessary // because when slicing multiples of 32 bytes (lengthmod == 0) // the following copy loop was copying the origin's length // and then ending prematurely not copying everything it should. let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod))) let end := add(mc, _length) for { // The multiplication in the next line has the same exact purpose // as the one above. let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start) } lt(mc, end) { mc := add(mc, 0x20) cc := add(cc, 0x20) } { mstore(mc, mload(cc)) } mstore(tempBytes, _length) //update free-memory pointer //allocating the array padded to 32 bytes like the compiler does now mstore(0x40, and(add(mc, 31), not(31))) } //if we want a zero-length slice let's just return a zero-length array default { tempBytes := mload(0x40) //zero out the 32 bytes slice we are about to return //we need to do it because Solidity does not garbage collect mstore(tempBytes, 0) mstore(0x40, add(tempBytes, 0x20)) } } return tempBytes; } function toAddress(bytes memory _bytes, uint256 _start) internal pure returns (address) { require(_bytes.length >= _start + 20, "toAddress_outOfBounds"); address tempAddress; assembly { tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000) } return tempAddress; } function toUint8(bytes memory _bytes, uint256 _start) internal pure returns (uint8) { require(_bytes.length >= _start + 1 , "toUint8_outOfBounds"); uint8 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x1), _start)) } return tempUint; } function toUint16(bytes memory _bytes, uint256 _start) internal pure returns (uint16) { require(_bytes.length >= _start + 2, "toUint16_outOfBounds"); uint16 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x2), _start)) } return tempUint; } function toUint32(bytes memory _bytes, uint256 _start) internal pure returns (uint32) { require(_bytes.length >= _start + 4, "toUint32_outOfBounds"); uint32 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x4), _start)) } return tempUint; } function toUint64(bytes memory _bytes, uint256 _start) internal pure returns (uint64) { require(_bytes.length >= _start + 8, "toUint64_outOfBounds"); uint64 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x8), _start)) } return tempUint; } function toUint96(bytes memory _bytes, uint256 _start) internal pure returns (uint96) { require(_bytes.length >= _start + 12, "toUint96_outOfBounds"); uint96 tempUint; assembly { tempUint := mload(add(add(_bytes, 0xc), _start)) } return tempUint; } function toUint128(bytes memory _bytes, uint256 _start) internal pure returns (uint128) { require(_bytes.length >= _start + 16, "toUint128_outOfBounds"); uint128 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x10), _start)) } return tempUint; } function toUint256(bytes memory _bytes, uint256 _start) internal pure returns (uint256) { require(_bytes.length >= _start + 32, "toUint256_outOfBounds"); uint256 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x20), _start)) } return tempUint; } function toBytes32(bytes memory _bytes, uint256 _start) internal pure returns (bytes32) { require(_bytes.length >= _start + 32, "toBytes32_outOfBounds"); bytes32 tempBytes32; assembly { tempBytes32 := mload(add(add(_bytes, 0x20), _start)) } return tempBytes32; } function equal(bytes memory _preBytes, bytes memory _postBytes) internal pure returns (bool) { bool success = true; assembly { let length := mload(_preBytes) // if lengths don't match the arrays are not equal switch eq(length, mload(_postBytes)) case 1 { // cb is a circuit breaker in the for loop since there's // no said feature for inline assembly loops // cb = 1 - don't breaker // cb = 0 - break let cb := 1 let mc := add(_preBytes, 0x20) let end := add(mc, length) for { let cc := add(_postBytes, 0x20) // the next line is the loop condition: // while(uint256(mc < end) + cb == 2) } eq(add(lt(mc, end), cb), 2) { mc := add(mc, 0x20) cc := add(cc, 0x20) } { // if any of these checks fails then arrays are not equal if iszero(eq(mload(mc), mload(cc))) { // unsuccess: success := 0 cb := 0 } } } default { // unsuccess: success := 0 } } return success; } function equalStorage( bytes storage _preBytes, bytes memory _postBytes ) internal view returns (bool) { bool success = true; assembly { // we know _preBytes_offset is 0 let fslot := sload(_preBytes.slot) // Decode the length of the stored array like in concatStorage(). let slength := div(and(fslot, sub(mul(0x100, iszero(and(fslot, 1))), 1)), 2) let mlength := mload(_postBytes) // if lengths don't match the arrays are not equal switch eq(slength, mlength) case 1 { // slength can contain both the length and contents of the array // if length < 32 bytes so let's prepare for that // v. http://solidity.readthedocs.io/en/latest/miscellaneous.html#layout-of-state-variables-in-storage if iszero(iszero(slength)) { switch lt(slength, 32) case 1 { // blank the last byte which is the length fslot := mul(div(fslot, 0x100), 0x100) if iszero(eq(fslot, mload(add(_postBytes, 0x20)))) { // unsuccess: success := 0 } } default { // cb is a circuit breaker in the for loop since there's // no said feature for inline assembly loops // cb = 1 - don't breaker // cb = 0 - break let cb := 1 // get the keccak hash to get the contents of the array mstore(0x0, _preBytes.slot) let sc := keccak256(0x0, 0x20) let mc := add(_postBytes, 0x20) let end := add(mc, mlength) // the next line is the loop condition: // while(uint256(mc < end) + cb == 2) for {} eq(add(lt(mc, end), cb), 2) { sc := add(sc, 1) mc := add(mc, 0x20) } { if iszero(eq(sload(sc), mload(mc))) { // unsuccess: success := 0 cb := 0 } } } } } default { // unsuccess: success := 0 } } return success; } } contract FeeConverter is Ownable, IFeeConverter { IERC20 private constant WETH = IERC20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); using BytesLib for bytes; IERC20 public wildToken; IPairFactory public factory; ILendingController public lendingController; address public stakingPool; address public treasury; uint public callIncentive; uint public daoShareWETH; // 1e18 = 1% constructor( IPairFactory _factory, ILendingController _lendingController, IERC20 _wildToken, address _stakingPool, address _treasury, uint _callIncentive, uint _daoShareWETH ) { factory = _factory; lendingController = _lendingController; wildToken = _wildToken; stakingPool = _stakingPool; treasury = _treasury; callIncentive = _callIncentive; daoShareWETH = _daoShareWETH; } /* * Previous version was converting fees via Uniswap in this contract. * The new version uses TWAP to pull WILD balance from the caller. * This allows the caller to use any pool to source liquidity * and get lower slippage which is similar to how liquidations work. * Since migrating fee recipient would incur very high gas costs, * we're leaving the same function interface here for backward compatibility * * _notUsedAnymore - not used anymore, set to zero * _path - we only need the first token in the path */ function convert( address _originalCaller, ILendingPair _pair, bytes memory _path, uint _supplyTokenAmount, uint _notUsedAnymore ) external override returns(uint) { address supplyToken = _path.toAddress(0); _validatePair(_pair); _validateToken(_pair, supplyToken); require(_supplyTokenAmount > 0, "FeeConverter: nothing to convert"); _pair.withdraw(supplyToken, _supplyTokenAmount); uint inputAmount = _supplyTokenAmount - _collectDaoShare(supplyToken, _supplyTokenAmount); uint wildAmount = wildInput(supplyToken, inputAmount); IERC20(supplyToken).transfer(_originalCaller, inputAmount); wildToken.transferFrom(_originalCaller, stakingPool, wildAmount); return wildAmount; } function setStakingRewards(address _value) external onlyOwner { stakingPool = _value; } function setTreasury(address _value) external onlyOwner { treasury = _value; } function setDaoShareWETH(uint _value) external onlyOwner { daoShareWETH = _value; } function setCallIncentive(uint _value) external onlyOwner { callIncentive = _value; } function wildInput(address _fromToken, uint _fromAmount) public view returns(uint) { uint priceFrom = lendingController.tokenPrice(_fromToken) * 1e18 / 10 ** IERC20(_fromToken).decimals(); uint priceTo = lendingController.tokenPrice(address(wildToken)) * 1e18 / 10 ** IERC20(address(wildToken)).decimals(); uint input = (_fromAmount * priceFrom / priceTo) * (100e18 - callIncentive) / 100e18; return input; } function _collectDaoShare(address _token, uint _amount) internal returns(uint daoAmount) { if (_token == address(WETH)) { daoAmount = _amount * daoShareWETH / 100e18; WETH.transfer(treasury, daoAmount); } } function _validateToken(ILendingPair _pair, address _token) internal view { require( _token == _pair.tokenA() || _token == _pair.tokenB(), "FeeConverter: invalid input token" ); } function _validatePair(ILendingPair _pair) internal view { require( address(_pair) == factory.pairByTokens(_pair.tokenA(), _pair.tokenB()), "FeeConverter: invalid lending pair" ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IPairFactory","name":"_factory","type":"address"},{"internalType":"contract ILendingController","name":"_lendingController","type":"address"},{"internalType":"contract IERC20","name":"_wildToken","type":"address"},{"internalType":"address","name":"_stakingPool","type":"address"},{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"uint256","name":"_callIncentive","type":"uint256"},{"internalType":"uint256","name":"_daoShareWETH","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferInitiated","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"callIncentive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_originalCaller","type":"address"},{"internalType":"contract ILendingPair","name":"_pair","type":"address"},{"internalType":"bytes","name":"_path","type":"bytes"},{"internalType":"uint256","name":"_supplyTokenAmount","type":"uint256"},{"internalType":"uint256","name":"_notUsedAnymore","type":"uint256"}],"name":"convert","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"daoShareWETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IPairFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lendingController","outputs":[{"internalType":"contract ILendingController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setCallIncentive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setDaoShareWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_value","type":"address"}],"name":"setStakingRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_value","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_fromToken","type":"address"},{"internalType":"uint256","name":"_fromAmount","type":"uint256"}],"name":"wildInput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wildToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620013f9380380620013f98339810160408190526200003491620000e1565b600080546001600160a01b0319163390811782556040519091907f646fe5eeb20d96ea45a9caafcb508854a2fb5660885ced7772e12a633c974571908290a3600380546001600160a01b03199081166001600160a01b03998a1617909155600480548216978916979097179096556002805487169588169590951790945560058054861693871693909317909255600680549094169416939093179091556007919091556008556200018d565b600080600080600080600060e0888a031215620000fd57600080fd5b87516200010a8162000174565b60208901519097506200011d8162000174565b6040890151909650620001308162000174565b6060890151909550620001438162000174565b6080890151909450620001568162000174565b8093505060a0880151915060c0880151905092959891949750929550565b6001600160a01b03811681146200018a57600080fd5b50565b61125c806200019d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80639f018ca1116100a2578063cc7554eb11610071578063cc7554eb1461022b578063e30c39781461023e578063f0f4426014610251578063f2acdf6114610264578063f2fde38b1461027757600080fd5b80639f018ca1146101e5578063af32f7dd14610206578063c45a01551461020f578063cb22356b1461022257600080fd5b80636fb83a57116100e95780636fb83a571461018657806379ba5097146101995780638da5cb5b146101a15780638f32d59b146101b45780639aa94564146101d257600080fd5b80630c56ae3b1461011b57806326b18dc71461014b578063486327181461016057806361d027b314610173575b600080fd5b60055461012e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61015e610159366004611023565b61028a565b005b60045461012e906001600160a01b031681565b60065461012e906001600160a01b031681565b61015e610194366004610eac565b6102c2565b61015e61030e565b60005461012e906001600160a01b031681565b6000546001600160a01b031633146040519015158152602001610142565b60025461012e906001600160a01b031681565b6101f86101f3366004610eed565b6103d8565b604051908152602001610142565b6101f860085481565b60035461012e906001600160a01b031681565b6101f860075481565b61015e610239366004611023565b6105f4565b60015461012e906001600160a01b031681565b61015e61025f366004610eac565b610623565b6101f8610272366004610fd5565b61066f565b61015e610285366004610eac565b610915565b6000546001600160a01b031633146102bd5760405162461bcd60e51b81526004016102b490611055565b60405180910390fd5b600855565b6000546001600160a01b031633146102ec5760405162461bcd60e51b81526004016102b490611055565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146103745760405162461bcd60e51b8152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f742070656e64696e67206f6044820152633bb732b960e11b60648201526084016102b4565b600154600080546040516001600160a01b0393841693909116917f646fe5eeb20d96ea45a9caafcb508854a2fb5660885ced7772e12a633c97457191a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000806103e585826109ff565b90506103f086610a64565b6103fa8682610c56565b6000841161044a5760405162461bcd60e51b815260206004820181905260248201527f466565436f6e7665727465723a206e6f7468696e6720746f20636f6e7665727460448201526064016102b4565b60405163f3fef3a360e01b81526001600160a01b0382811660048301526024820186905287169063f3fef3a390604401600060405180830381600087803b15801561049457600080fd5b505af11580156104a8573d6000803e3d6000fd5b5050505060006104b88286610dc1565b6104c290866111ce565b905060006104d0838361066f565b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018590529192509084169063a9059cbb90604401602060405180830381600087803b15801561051e57600080fd5b505af1158015610532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105569190611001565b506002546005546040516323b872dd60e01b81526001600160a01b038c811660048301529182166024820152604481018490529116906323b872dd90606401602060405180830381600087803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e79190611001565b5098975050505050505050565b6000546001600160a01b0316331461061e5760405162461bcd60e51b81526004016102b490611055565b600755565b6000546001600160a01b0316331461064d5760405162461bcd60e51b81526004016102b490611055565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600080836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ab57600080fd5b505afa1580156106bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e3919061103c565b6106ee90600a611107565b600480546040516384ba3f6960e01b81526001600160a01b03888116938201939093529116906384ba3f699060240160206040518083038186803b15801561073557600080fd5b505afa158015610749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076d919061103c565b61077f90670de0b6b3a76400006111af565b61078991906110a2565b90506000600260009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156107db57600080fd5b505afa1580156107ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610813919061103c565b61081e90600a611107565b600480546002546040516384ba3f6960e01b81526001600160a01b039182169381019390935216906384ba3f699060240160206040518083038186803b15801561086757600080fd5b505afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f919061103c565b6108b190670de0b6b3a76400006111af565b6108bb91906110a2565b9050600068056bc75e2d6310000060075468056bc75e2d631000006108e091906111ce565b836108eb86896111af565b6108f591906110a2565b6108ff91906111af565b61090991906110a2565b93505050505b92915050565b6000546001600160a01b0316331461093f5760405162461bcd60e51b81526004016102b490611055565b6001600160a01b0381166109a45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b4565b600080546040516001600160a01b03808516939216917fb150023a879fd806e3599b6ca8ee3b60f0e360ab3846d128d67ebce1a391639a91a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000610a0c82601461108a565b83511015610a545760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016102b4565b500160200151600160601b900490565b600360009054906101000a90046001600160a01b03166001600160a01b0316631d5aa6d8826001600160a01b0316630fc63d106040518163ffffffff1660e01b815260040160206040518083038186803b158015610ac157600080fd5b505afa158015610ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af99190610ed0565b836001600160a01b0316635f64b55b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3257600080fd5b505afa158015610b46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6a9190610ed0565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b158015610bb057600080fd5b505afa158015610bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be89190610ed0565b6001600160a01b0316816001600160a01b031614610c535760405162461bcd60e51b815260206004820152602260248201527f466565436f6e7665727465723a20696e76616c6964206c656e64696e6720706160448201526134b960f11b60648201526084016102b4565b50565b816001600160a01b0316630fc63d106040518163ffffffff1660e01b815260040160206040518083038186803b158015610c8f57600080fd5b505afa158015610ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc79190610ed0565b6001600160a01b0316816001600160a01b03161480610d675750816001600160a01b0316635f64b55b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1a57600080fd5b505afa158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d529190610ed0565b6001600160a01b0316816001600160a01b0316145b610dbd5760405162461bcd60e51b815260206004820152602160248201527f466565436f6e7665727465723a20696e76616c696420696e70757420746f6b656044820152603760f91b60648201526084016102b4565b5050565b60006001600160a01b03831673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2141561090f5768056bc75e2d6310000060085483610e0091906111af565b610e0a91906110a2565b60065460405163a9059cbb60e01b81526001600160a01b0390911660048201526024810182905290915073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29063a9059cbb90604401602060405180830381600087803b158015610e6d57600080fd5b505af1158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea59190611001565b5092915050565b600060208284031215610ebe57600080fd5b8135610ec981611211565b9392505050565b600060208284031215610ee257600080fd5b8151610ec981611211565b600080600080600060a08688031215610f0557600080fd5b8535610f1081611211565b94506020860135610f2081611211565b9350604086013567ffffffffffffffff80821115610f3d57600080fd5b818801915088601f830112610f5157600080fd5b813581811115610f6357610f636111fb565b604051601f8201601f19908116603f01168101908382118183101715610f8b57610f8b6111fb565b816040528281528b6020848701011115610fa457600080fd5b8260208601602083013760009281016020019290925250969995985095966060810135965060800135949350505050565b60008060408385031215610fe857600080fd5b8235610ff381611211565b946020939093013593505050565b60006020828403121561101357600080fd5b81518015158114610ec957600080fd5b60006020828403121561103557600080fd5b5035919050565b60006020828403121561104e57600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561109d5761109d6111e5565b500190565b6000826110bf57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156110ff5781600019048211156110e5576110e56111e5565b808516156110f257918102915b93841c93908002906110c9565b509250929050565b6000610ec9838360008261111d5750600161090f565b8161112a5750600061090f565b8160018114611140576002811461114a57611166565b600191505061090f565b60ff84111561115b5761115b6111e5565b50506001821b61090f565b5060208310610133831016604e8410600b8410161715611189575081810a61090f565b61119383836110c4565b80600019048211156111a7576111a76111e5565b029392505050565b60008160001904831182151516156111c9576111c96111e5565b500290565b6000828210156111e0576111e06111e5565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610c5357600080fdfea2646970667358221220b554a4184677062d2597aeb6ae224a3dee325d9ee9f35d1b4483f5e738878dc864736f6c6343000806003300000000000000000000000023b74796b72f995e14a5e3ff2156dad9653256cf00000000000000000000000045ee906e9cfae0aabdb194d6180a3a119d4376c400000000000000000000000008a75dbc7167714ceac1a8e43a8d643a4edd625a000000000000000000000000b0f466cc45dc73d0a6ea889c63390aeea7b6dcc5000000000000000000000000fd66fb512dbc2dfa49377cfe1168eafc4ea6aa5d0000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000000000000000000000000002b5e3af16b1880000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101165760003560e01c80639f018ca1116100a2578063cc7554eb11610071578063cc7554eb1461022b578063e30c39781461023e578063f0f4426014610251578063f2acdf6114610264578063f2fde38b1461027757600080fd5b80639f018ca1146101e5578063af32f7dd14610206578063c45a01551461020f578063cb22356b1461022257600080fd5b80636fb83a57116100e95780636fb83a571461018657806379ba5097146101995780638da5cb5b146101a15780638f32d59b146101b45780639aa94564146101d257600080fd5b80630c56ae3b1461011b57806326b18dc71461014b578063486327181461016057806361d027b314610173575b600080fd5b60055461012e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61015e610159366004611023565b61028a565b005b60045461012e906001600160a01b031681565b60065461012e906001600160a01b031681565b61015e610194366004610eac565b6102c2565b61015e61030e565b60005461012e906001600160a01b031681565b6000546001600160a01b031633146040519015158152602001610142565b60025461012e906001600160a01b031681565b6101f86101f3366004610eed565b6103d8565b604051908152602001610142565b6101f860085481565b60035461012e906001600160a01b031681565b6101f860075481565b61015e610239366004611023565b6105f4565b60015461012e906001600160a01b031681565b61015e61025f366004610eac565b610623565b6101f8610272366004610fd5565b61066f565b61015e610285366004610eac565b610915565b6000546001600160a01b031633146102bd5760405162461bcd60e51b81526004016102b490611055565b60405180910390fd5b600855565b6000546001600160a01b031633146102ec5760405162461bcd60e51b81526004016102b490611055565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146103745760405162461bcd60e51b8152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f742070656e64696e67206f6044820152633bb732b960e11b60648201526084016102b4565b600154600080546040516001600160a01b0393841693909116917f646fe5eeb20d96ea45a9caafcb508854a2fb5660885ced7772e12a633c97457191a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000806103e585826109ff565b90506103f086610a64565b6103fa8682610c56565b6000841161044a5760405162461bcd60e51b815260206004820181905260248201527f466565436f6e7665727465723a206e6f7468696e6720746f20636f6e7665727460448201526064016102b4565b60405163f3fef3a360e01b81526001600160a01b0382811660048301526024820186905287169063f3fef3a390604401600060405180830381600087803b15801561049457600080fd5b505af11580156104a8573d6000803e3d6000fd5b5050505060006104b88286610dc1565b6104c290866111ce565b905060006104d0838361066f565b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018590529192509084169063a9059cbb90604401602060405180830381600087803b15801561051e57600080fd5b505af1158015610532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105569190611001565b506002546005546040516323b872dd60e01b81526001600160a01b038c811660048301529182166024820152604481018490529116906323b872dd90606401602060405180830381600087803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e79190611001565b5098975050505050505050565b6000546001600160a01b0316331461061e5760405162461bcd60e51b81526004016102b490611055565b600755565b6000546001600160a01b0316331461064d5760405162461bcd60e51b81526004016102b490611055565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600080836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ab57600080fd5b505afa1580156106bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e3919061103c565b6106ee90600a611107565b600480546040516384ba3f6960e01b81526001600160a01b03888116938201939093529116906384ba3f699060240160206040518083038186803b15801561073557600080fd5b505afa158015610749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076d919061103c565b61077f90670de0b6b3a76400006111af565b61078991906110a2565b90506000600260009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156107db57600080fd5b505afa1580156107ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610813919061103c565b61081e90600a611107565b600480546002546040516384ba3f6960e01b81526001600160a01b039182169381019390935216906384ba3f699060240160206040518083038186803b15801561086757600080fd5b505afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f919061103c565b6108b190670de0b6b3a76400006111af565b6108bb91906110a2565b9050600068056bc75e2d6310000060075468056bc75e2d631000006108e091906111ce565b836108eb86896111af565b6108f591906110a2565b6108ff91906111af565b61090991906110a2565b93505050505b92915050565b6000546001600160a01b0316331461093f5760405162461bcd60e51b81526004016102b490611055565b6001600160a01b0381166109a45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b4565b600080546040516001600160a01b03808516939216917fb150023a879fd806e3599b6ca8ee3b60f0e360ab3846d128d67ebce1a391639a91a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000610a0c82601461108a565b83511015610a545760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016102b4565b500160200151600160601b900490565b600360009054906101000a90046001600160a01b03166001600160a01b0316631d5aa6d8826001600160a01b0316630fc63d106040518163ffffffff1660e01b815260040160206040518083038186803b158015610ac157600080fd5b505afa158015610ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af99190610ed0565b836001600160a01b0316635f64b55b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3257600080fd5b505afa158015610b46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6a9190610ed0565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b158015610bb057600080fd5b505afa158015610bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be89190610ed0565b6001600160a01b0316816001600160a01b031614610c535760405162461bcd60e51b815260206004820152602260248201527f466565436f6e7665727465723a20696e76616c6964206c656e64696e6720706160448201526134b960f11b60648201526084016102b4565b50565b816001600160a01b0316630fc63d106040518163ffffffff1660e01b815260040160206040518083038186803b158015610c8f57600080fd5b505afa158015610ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc79190610ed0565b6001600160a01b0316816001600160a01b03161480610d675750816001600160a01b0316635f64b55b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1a57600080fd5b505afa158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d529190610ed0565b6001600160a01b0316816001600160a01b0316145b610dbd5760405162461bcd60e51b815260206004820152602160248201527f466565436f6e7665727465723a20696e76616c696420696e70757420746f6b656044820152603760f91b60648201526084016102b4565b5050565b60006001600160a01b03831673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2141561090f5768056bc75e2d6310000060085483610e0091906111af565b610e0a91906110a2565b60065460405163a9059cbb60e01b81526001600160a01b0390911660048201526024810182905290915073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29063a9059cbb90604401602060405180830381600087803b158015610e6d57600080fd5b505af1158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea59190611001565b5092915050565b600060208284031215610ebe57600080fd5b8135610ec981611211565b9392505050565b600060208284031215610ee257600080fd5b8151610ec981611211565b600080600080600060a08688031215610f0557600080fd5b8535610f1081611211565b94506020860135610f2081611211565b9350604086013567ffffffffffffffff80821115610f3d57600080fd5b818801915088601f830112610f5157600080fd5b813581811115610f6357610f636111fb565b604051601f8201601f19908116603f01168101908382118183101715610f8b57610f8b6111fb565b816040528281528b6020848701011115610fa457600080fd5b8260208601602083013760009281016020019290925250969995985095966060810135965060800135949350505050565b60008060408385031215610fe857600080fd5b8235610ff381611211565b946020939093013593505050565b60006020828403121561101357600080fd5b81518015158114610ec957600080fd5b60006020828403121561103557600080fd5b5035919050565b60006020828403121561104e57600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561109d5761109d6111e5565b500190565b6000826110bf57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156110ff5781600019048211156110e5576110e56111e5565b808516156110f257918102915b93841c93908002906110c9565b509250929050565b6000610ec9838360008261111d5750600161090f565b8161112a5750600061090f565b8160018114611140576002811461114a57611166565b600191505061090f565b60ff84111561115b5761115b6111e5565b50506001821b61090f565b5060208310610133831016604e8410600b8410161715611189575081810a61090f565b61119383836110c4565b80600019048211156111a7576111a76111e5565b029392505050565b60008160001904831182151516156111c9576111c96111e5565b500290565b6000828210156111e0576111e06111e5565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610c5357600080fdfea2646970667358221220b554a4184677062d2597aeb6ae224a3dee325d9ee9f35d1b4483f5e738878dc864736f6c63430008060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000023b74796b72f995e14a5e3ff2156dad9653256cf00000000000000000000000045ee906e9cfae0aabdb194d6180a3a119d4376c400000000000000000000000008a75dbc7167714ceac1a8e43a8d643a4edd625a000000000000000000000000b0f466cc45dc73d0a6ea889c63390aeea7b6dcc5000000000000000000000000fd66fb512dbc2dfa49377cfe1168eafc4ea6aa5d0000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000000000000000000000000002b5e3af16b1880000
-----Decoded View---------------
Arg [0] : _factory (address): 0x23B74796b72f995E14a5e3FF2156Dad9653256Cf
Arg [1] : _lendingController (address): 0x45ee906E9CFAE0aabDB194D6180A3A119D4376C4
Arg [2] : _wildToken (address): 0x08A75dbC7167714CeaC1a8e43a8d643A4EDd625a
Arg [3] : _stakingPool (address): 0xB0f466cc45dc73D0A6Ea889C63390aEea7b6Dcc5
Arg [4] : _treasury (address): 0xfd66Fb512dBC2dFA49377CfE1168eaFc4ea6Aa5D
Arg [5] : _callIncentive (uint256): 10000000000000000000
Arg [6] : _daoShareWETH (uint256): 50000000000000000000
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 00000000000000000000000023b74796b72f995e14a5e3ff2156dad9653256cf
Arg [1] : 00000000000000000000000045ee906e9cfae0aabdb194d6180a3a119d4376c4
Arg [2] : 00000000000000000000000008a75dbc7167714ceac1a8e43a8d643a4edd625a
Arg [3] : 000000000000000000000000b0f466cc45dc73d0a6ea889c63390aeea7b6dcc5
Arg [4] : 000000000000000000000000fd66fb512dbc2dfa49377cfe1168eafc4ea6aa5d
Arg [5] : 0000000000000000000000000000000000000000000000008ac7230489e80000
Arg [6] : 000000000000000000000000000000000000000000000002b5e3af16b1880000
Deployed Bytecode Sourcemap
25521:3938:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25824:38;;;;;-1:-1:-1;;;;;25824:38:0;;;;;;-1:-1:-1;;;;;3022:32:1;;;3004:51;;2992:2;2977:18;25824:38:0;;;;;;;;28141:91;;;;;;:::i;:::-;;:::i;:::-;;25775:44;;;;;-1:-1:-1;;;;;25775:44:0;;;25867:35;;;;;-1:-1:-1;;;;;25867:35:0;;;27948:95;;;;;;:::i;:::-;;:::i;5864:242::-;;;:::i;5069:20::-;;;;;-1:-1:-1;;;;;5069:20:0;;;5528:85;5568:4;5602:5;-1:-1:-1;;;;;5602:5:0;5588:10;:19;5528:85;;4199:14:1;;4192:22;4174:41;;4162:2;4147:18;5528:85:0;4129:92:1;25695:36:0;;;;;-1:-1:-1;;;;;25695:36:0;;;27135:807;;;;;;:::i;:::-;;:::i;:::-;;;7744:25:1;;;7732:2;7717:18;27135:807:0;7699:76:1;25952:39:0;;;;;;25736:34;;;;;-1:-1:-1;;;;;25736:34:0;;;25907:40;;;;;;28238:93;;;;;;:::i;:::-;;:::i;5094:27::-;;;;;-1:-1:-1;;;;;5094:27:0;;;28049:86;;;;;;:::i;:::-;;:::i;28337:447::-;;;;;;:::i;:::-;;:::i;5619:239::-;;;;;;:::i;:::-;;:::i;28141:91::-;5568:4;5602:5;-1:-1:-1;;;;;5602:5:0;5588:10;:19;5454:54;;;;-1:-1:-1;;;5454:54:0;;;;;;;:::i;:::-;;;;;;;;;28205:12:::1;:21:::0;28141:91::o;27948:95::-;5568:4;5602:5;-1:-1:-1;;;;;5602:5:0;5588:10;:19;5454:54;;;;-1:-1:-1;;;5454:54:0;;;;;;;:::i;:::-;28017:11:::1;:20:::0;;-1:-1:-1;;;;;;28017:20:0::1;-1:-1:-1::0;;;;;28017:20:0;;;::::1;::::0;;;::::1;::::0;;27948:95::o;5864:242::-;5929:12;;-1:-1:-1;;;;;5929:12:0;5915:10;:26;5907:75;;;;-1:-1:-1;;;5907:75:0;;7395:2:1;5907:75:0;;;7377:21:1;7434:2;7414:18;;;7407:30;7473:34;7453:18;;;7446:62;-1:-1:-1;;;7524:18:1;;;7517:34;7568:19;;5907:75:0;7367:226:1;5907:75:0;6028:12;;;6021:5;;5994:47;;-1:-1:-1;;;;;6028:12:0;;;;6021:5;;;;5994:47;;;6056:12;;;;6048:20;;-1:-1:-1;;;;;;6048:20:0;;;-1:-1:-1;;;;;6056:12:0;;6048:20;;;;6075:25;;;5864:242::o;27135:807::-;27361:4;;27398:18;:5;27361:4;27398:15;:18::i;:::-;27376:40;;27425:20;27439:5;27425:13;:20::i;:::-;27452:34;27467:5;27474:11;27452:14;:34::i;:::-;27522:1;27501:18;:22;27493:67;;;;-1:-1:-1;;;27493:67:0;;7034:2:1;27493:67:0;;;7016:21:1;;;7053:18;;;7046:30;7112:34;7092:18;;;7085:62;7164:18;;27493:67:0;7006:182:1;27493:67:0;27569:47;;-1:-1:-1;;;27569:47:0;;-1:-1:-1;;;;;3947:32:1;;;27569:47:0;;;3929:51:1;3996:18;;;3989:34;;;27569:14:0;;;;;3902:18:1;;27569:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27623:16;27663:49;27680:11;27693:18;27663:16;:49::i;:::-;27642:70;;:18;:70;:::i;:::-;27623:89;;27721:15;27739:35;27749:11;27762;27739:9;:35::i;:::-;27781:58;;-1:-1:-1;;;27781:58:0;;-1:-1:-1;;;;;3947:32:1;;;27781:58:0;;;3929:51:1;3996:18;;;3989:34;;;27721:53:0;;-1:-1:-1;27781:28:0;;;;;;3902:18:1;;27781:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;27846:9:0;;27886:11;;27846:64;;-1:-1:-1;;;27846:64:0;;-1:-1:-1;;;;;3633:15:1;;;27846:64:0;;;3615:34:1;27886:11:0;;;3665:18:1;;;3658:43;3717:18;;;3710:34;;;27846:9:0;;;:22;;3550:18:1;;27846:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;27926:10:0;27135:807;-1:-1:-1;;;;;;;;27135:807:0:o;28238:93::-;5568:4;5602:5;-1:-1:-1;;;;;5602:5:0;5588:10;:19;5454:54;;;;-1:-1:-1;;;5454:54:0;;;;;;;:::i;:::-;28303:13:::1;:22:::0;28238:93::o;28049:86::-;5568:4;5602:5;-1:-1:-1;;;;;5602:5:0;5588:10;:19;5454:54;;;;-1:-1:-1;;;5454:54:0;;;;;;;:::i;:::-;28112:8:::1;:17:::0;;-1:-1:-1;;;;;;28112:17:0::1;-1:-1:-1::0;;;;;28112:17:0;;;::::1;::::0;;;::::1;::::0;;28049:86::o;28337:447::-;28414:4;28429:14;28517:10;-1:-1:-1;;;;;28510:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28504:35;;:2;:35;:::i;:::-;28446:17;;;:40;;-1:-1:-1;;;28446:40:0;;-1:-1:-1;;;;;3022:32:1;;;28446:40:0;;;3004:51:1;;;;28446:17:0;;;:28;;2977:18:1;;28446:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:55;;28497:4;28446:55;:::i;:::-;:93;;;;:::i;:::-;28429:110;;28546:12;28642:9;;;;;;;;;-1:-1:-1;;;;;28642:9:0;-1:-1:-1;;;;;28627:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28621:43;;:2;:43;:::i;:::-;28563:17;;;28600:9;;28563:48;;-1:-1:-1;;;28563:48:0;;-1:-1:-1;;;;;28600:9:0;;;28563:48;;;3004:51:1;;;;28563:17:0;;:28;;2977:18:1;;28563:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:55;;28614:4;28563:55;:::i;:::-;:101;;;;:::i;:::-;28546:118;;28673:10;28751:6;28734:13;;28725:6;:22;;;;:::i;:::-;28713:7;28687:23;28701:9;28687:11;:23;:::i;:::-;:33;;;;:::i;:::-;28686:62;;;;:::i;:::-;:71;;;;:::i;:::-;28673:84;-1:-1:-1;;;;28337:447:0;;;;;:::o;5619:239::-;5568:4;5602:5;-1:-1:-1;;;;;5602:5:0;5588:10;:19;5454:54;;;;-1:-1:-1;;;5454:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5699:23:0;::::1;5691:74;;;::::0;-1:-1:-1;;;5691:74:0;;5111:2:1;5691:74:0::1;::::0;::::1;5093:21:1::0;5150:2;5130:18;;;5123:30;5189:34;5169:18;;;5162:62;-1:-1:-1;;;5240:18:1;;;5233:36;5286:19;;5691:74:0::1;5083:228:1::0;5691:74:0::1;5804:5;::::0;;5777:44:::1;::::0;-1:-1:-1;;;;;5777:44:0;;::::1;::::0;5804:5;::::1;::::0;5777:44:::1;::::0;::::1;5828:12;:24:::0;;-1:-1:-1;;;;;;5828:24:0::1;-1:-1:-1::0;;;;;5828:24:0;;;::::1;::::0;;;::::1;::::0;;5619:239::o;18297:363::-;18376:7;18421:11;:6;18430:2;18421:11;:::i;:::-;18404:6;:13;:28;;18396:62;;;;-1:-1:-1;;;18396:62:0;;6684:2:1;18396:62:0;;;6666:21:1;6723:2;6703:18;;;6696:30;-1:-1:-1;;;6742:18:1;;;6735:51;6803:18;;18396:62:0;6656:171:1;18396:62:0;-1:-1:-1;18550:30:0;18566:4;18550:30;18544:37;-1:-1:-1;;;18540:71:0;;;18297:363::o;29248:208::-;29346:7;;;;;;;;;-1:-1:-1;;;;;29346:7:0;-1:-1:-1;;;;;29346:20:0;;29367:5;-1:-1:-1;;;;;29367:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29383:5;-1:-1:-1;;;;;29383:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29346:52;;-1:-1:-1;;;;;;29346:52:0;;;;;;;-1:-1:-1;;;;;3296:15:1;;;29346:52:0;;;3278:34:1;3348:15;;3328:18;;;3321:43;3213:18;;29346:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29328:70:0;29336:5;-1:-1:-1;;;;;29328:70:0;;29312:138;;;;-1:-1:-1;;;29312:138:0;;5920:2:1;29312:138:0;;;5902:21:1;5959:2;5939:18;;;5932:30;5998:34;5978:18;;;5971:62;-1:-1:-1;;;6049:18:1;;;6042:32;6091:19;;29312:138:0;5892:224:1;29312:138:0;29248:208;:::o;29029:213::-;29136:5;-1:-1:-1;;;;;29136:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29126:24:0;:6;-1:-1:-1;;;;;29126:24:0;;:59;;;;29171:5;-1:-1:-1;;;;;29171:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29161:24:0;:6;-1:-1:-1;;;;;29161:24:0;;29126:59;29110:126;;;;-1:-1:-1;;;29110:126:0;;5518:2:1;29110:126:0;;;5500:21:1;5557:2;5537:18;;;5530:30;5596:34;5576:18;;;5569:62;-1:-1:-1;;;5647:18:1;;;5640:31;5688:19;;29110:126:0;5490:223:1;29110:126:0;29029:213;;:::o;28790:233::-;28863:14;-1:-1:-1;;;;;28890:23:0;;25614:42;28890:23;28886:132;;;28961:6;28946:12;;28936:7;:22;;;;:::i;:::-;:31;;;;:::i;:::-;28990:8;;28976:34;;-1:-1:-1;;;28976:34:0;;-1:-1:-1;;;;;28990:8:0;;;28976:34;;;3929:51:1;3996:18;;;3989:34;;;28924:43:0;;-1:-1:-1;25614:42:0;;28976:13;;3902:18:1;;28976:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28790:233;;;;:::o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;142:1;139;132:12;94:2;181:9;168:23;200:31;225:5;200:31;:::i;:::-;250:5;84:177;-1:-1:-1;;;84:177:1:o;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:2;;;405:1;402;395:12;357:2;437:9;431:16;456:31;481:5;456:31;:::i;522:1355::-;646:6;654;662;670;678;731:3;719:9;710:7;706:23;702:33;699:2;;;748:1;745;738:12;699:2;787:9;774:23;806:31;831:5;806:31;:::i;:::-;856:5;-1:-1:-1;913:2:1;898:18;;885:32;926:33;885:32;926:33;:::i;:::-;978:7;-1:-1:-1;1036:2:1;1021:18;;1008:32;1059:18;1089:14;;;1086:2;;;1116:1;1113;1106:12;1086:2;1154:6;1143:9;1139:22;1129:32;;1199:7;1192:4;1188:2;1184:13;1180:27;1170:2;;1221:1;1218;1211:12;1170:2;1257;1244:16;1279:2;1275;1272:10;1269:2;;;1285:18;;:::i;:::-;1360:2;1354:9;1328:2;1414:13;;-1:-1:-1;;1410:22:1;;;1434:2;1406:31;1402:40;1390:53;;;1458:18;;;1478:22;;;1455:46;1452:2;;;1504:18;;:::i;:::-;1544:10;1540:2;1533:22;1579:2;1571:6;1564:18;1619:7;1614:2;1609;1605;1601:11;1597:20;1594:33;1591:2;;;1640:1;1637;1630:12;1591:2;1696;1691;1687;1683:11;1678:2;1670:6;1666:15;1653:46;1741:1;1719:15;;;1736:2;1715:24;1708:35;;;;-1:-1:-1;689:1188:1;;;;-1:-1:-1;1723:6:1;;1815:2;1800:18;;1787:32;;-1:-1:-1;1866:3:1;1851:19;1838:33;;689:1188;-1:-1:-1;;;;689:1188:1:o;1882:315::-;1950:6;1958;2011:2;1999:9;1990:7;1986:23;1982:32;1979:2;;;2027:1;2024;2017:12;1979:2;2066:9;2053:23;2085:31;2110:5;2085:31;:::i;:::-;2135:5;2187:2;2172:18;;;;2159:32;;-1:-1:-1;;;1969:228:1:o;2202:277::-;2269:6;2322:2;2310:9;2301:7;2297:23;2293:32;2290:2;;;2338:1;2335;2328:12;2290:2;2370:9;2364:16;2423:5;2416:13;2409:21;2402:5;2399:32;2389:2;;2445:1;2442;2435:12;2484:180;2543:6;2596:2;2584:9;2575:7;2571:23;2567:32;2564:2;;;2612:1;2609;2602:12;2564:2;-1:-1:-1;2635:23:1;;2554:110;-1:-1:-1;2554:110:1:o;2669:184::-;2739:6;2792:2;2780:9;2771:7;2767:23;2763:32;2760:2;;;2808:1;2805;2798:12;2760:2;-1:-1:-1;2831:16:1;;2750:103;-1:-1:-1;2750:103:1:o;6121:356::-;6323:2;6305:21;;;6342:18;;;6335:30;6401:34;6396:2;6381:18;;6374:62;6468:2;6453:18;;6295:182::o;7780:128::-;7820:3;7851:1;7847:6;7844:1;7841:13;7838:2;;;7857:18;;:::i;:::-;-1:-1:-1;7893:9:1;;7828:80::o;7913:217::-;7953:1;7979;7969:2;;8023:10;8018:3;8014:20;8011:1;8004:31;8058:4;8055:1;8048:15;8086:4;8083:1;8076:15;7969:2;-1:-1:-1;8115:9:1;;7959:171::o;8135:422::-;8224:1;8267:5;8224:1;8281:270;8302:7;8292:8;8289:21;8281:270;;;8361:4;8357:1;8353:6;8349:17;8343:4;8340:27;8337:2;;;8370:18;;:::i;:::-;8420:7;8410:8;8406:22;8403:2;;;8440:16;;;;8403:2;8519:22;;;;8479:15;;;;8281:270;;;8285:3;8199:358;;;;;:::o;8562:131::-;8622:5;8651:36;8678:8;8672:4;8747:5;8777:8;8767:2;;-1:-1:-1;8818:1:1;8832:5;;8767:2;8866:4;8856:2;;-1:-1:-1;8903:1:1;8917:5;;8856:2;8948:4;8966:1;8961:59;;;;9034:1;9029:130;;;;8941:218;;8961:59;8991:1;8982:10;;9005:5;;;9029:130;9066:3;9056:8;9053:17;9050:2;;;9073:18;;:::i;:::-;-1:-1:-1;;9129:1:1;9115:16;;9144:5;;8941:218;;9243:2;9233:8;9230:16;9224:3;9218:4;9215:13;9211:36;9205:2;9195:8;9192:16;9187:2;9181:4;9178:12;9174:35;9171:77;9168:2;;;-1:-1:-1;9280:19:1;;;9312:5;;9168:2;9359:34;9384:8;9378:4;9359:34;:::i;:::-;9429:6;9425:1;9421:6;9417:19;9408:7;9405:32;9402:2;;;9440:18;;:::i;:::-;9478:20;;8757:747;-1:-1:-1;;;8757:747:1:o;9509:168::-;9549:7;9615:1;9611;9607:6;9603:14;9600:1;9597:21;9592:1;9585:9;9578:17;9574:45;9571:2;;;9622:18;;:::i;:::-;-1:-1:-1;9662:9:1;;9561:116::o;9682:125::-;9722:4;9750:1;9747;9744:8;9741:2;;;9755:18;;:::i;:::-;-1:-1:-1;9792:9:1;;9731:76::o;9812:127::-;9873:10;9868:3;9864:20;9861:1;9854:31;9904:4;9901:1;9894:15;9928:4;9925:1;9918:15;9944:127;10005:10;10000:3;9996:20;9993:1;9986:31;10036:4;10033:1;10026:15;10060:4;10057:1;10050:15;10076:131;-1:-1:-1;;;;;10151:31:1;;10141:42;;10131:2;;10197:1;10194;10187:12
Swarm Source
ipfs://b554a4184677062d2597aeb6ae224a3dee325d9ee9f35d1b4483f5e738878dc8
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.