Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
V3Manager
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-01-15 */ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity >=0.8.0 ^0.8.0; // lib/openzeppelin-contracts/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // src/interfaces/IUniswapV3Factory.sol /// @title The interface for the Uniswap V3 Factory /// @notice The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees interface IUniswapV3Factory { /// @notice Emitted when the owner of the factory is changed /// @param oldOwner The owner before the owner was changed /// @param newOwner The owner after the owner was changed event OwnerChanged(address indexed oldOwner, address indexed newOwner); /// @notice Emitted when a pool is created /// @param token0 The first token of the pool by address sort order /// @param token1 The second token of the pool by address sort order /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip /// @param tickSpacing The minimum number of ticks between initialized ticks /// @param pool The address of the created pool event PoolCreated( address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool ); /// @notice Emitted when a new fee amount is enabled for pool creation via the factory /// @param fee The enabled fee, denominated in hundredths of a bip /// @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing); /// @notice Returns the current owner of the factory /// @dev Can be changed by the current owner via setOwner /// @return The address of the factory owner function owner() external view returns (address); /// @notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled /// @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context /// @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee /// @return The tick spacing function feeAmountTickSpacing(uint24 fee) external view returns (int24); /// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist /// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order /// @param tokenA The contract address of either token0 or token1 /// @param tokenB The contract address of the other token /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip /// @return pool The pool address function getPool( address tokenA, address tokenB, uint24 fee ) external view returns (address pool); /// @notice Creates a pool for the given two tokens and fee /// @param tokenA One of the two tokens in the desired pool /// @param tokenB The other of the two tokens in the desired pool /// @param fee The desired fee for the pool /// @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved /// from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments /// are invalid. /// @return pool The address of the newly created pool function createPool( address tokenA, address tokenB, uint24 fee ) external returns (address pool); /// @notice Updates the owner of the factory /// @dev Must be called by the current owner /// @param _owner The new owner of the factory function setOwner(address _owner) external; /// @notice Enables a fee amount with the given tickSpacing /// @dev Fee amounts may never be removed once enabled /// @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6) /// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount function enableFeeAmount(uint24 fee, int24 tickSpacing) external; } // src/interfaces/IUniswapV3Pool.sol interface IUniswapV3Pool { // IUniswapV3PoolActions function initialize(uint160 sqrtPriceX96) external; function mint( address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes calldata data ) external returns (uint256 amount0, uint256 amount1); function collect( address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested ) external returns (uint128 amount0, uint128 amount1); function burn( int24 tickLower, int24 tickUpper, uint128 amount ) external returns (uint256 amount0, uint256 amount1); function swap( address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes calldata data ) external returns (int256 amount0, int256 amount1); function flash( address recipient, uint256 amount0, uint256 amount1, bytes calldata data ) external; function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external; // IUniswapV3PoolDerivedState function observe(uint32[] calldata secondsAgos) external view returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s); function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) external view returns ( int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside ); // IUniswapV3PoolErrors error LOK(); error TLU(); error TLM(); error TUM(); error AI(); error M0(); error M1(); error AS(); error IIA(); error L(); error F0(); error F1(); // IUniswapV3PoolEvents event Initialize(uint160 sqrtPriceX96, int24 tick); event Mint( address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1 ); event Collect( address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1 ); event Burn( address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1 ); event Swap( address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick ); event Flash( address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1 ); event IncreaseObservationCardinalityNext( uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew ); event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New); event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1); // IUniswapV3PoolImmutables function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function fee() external view returns (uint24); function tickSpacing() external view returns (int24); function maxLiquidityPerTick() external view returns (uint128); // IUniswapV3PoolOwnerActions function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external; function collectProtocol( address recipient, uint128 amount0Requested, uint128 amount1Requested ) external returns (uint128 amount0, uint128 amount1); // IUniswapV3PoolState function slot0() external view returns ( uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked ); function feeGrowthGlobal0X128() external view returns (uint256); function feeGrowthGlobal1X128() external view returns (uint256); function protocolFees() external view returns (uint128 token0, uint128 token1); function liquidity() external view returns (uint128); function ticks(int24 tick) external view returns ( uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized ); function tickBitmap(int16 wordPosition) external view returns (uint256); function positions(bytes32 key) external view returns ( uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1 ); function observations(uint256 index) external view returns ( uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized ); } // lib/openzeppelin-contracts/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol // OpenZeppelin Contracts (last updated v4.8.0) (access/Ownable2Step.sol) /** * @dev Contract module which provides access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership} and {acceptOwnership}. * * This module is used through inheritance. It will make available all functions * from parent (Ownable). */ abstract contract Ownable2Step is Ownable { address private _pendingOwner; event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner); /** * @dev Returns the address of the pending owner. */ function pendingOwner() public view virtual returns (address) { return _pendingOwner; } /** * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual override onlyOwner { _pendingOwner = newOwner; emit OwnershipTransferStarted(owner(), newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner. * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual override { delete _pendingOwner; super._transferOwnership(newOwner); } /** * @dev The new owner accepts the ownership transfer. */ function acceptOwnership() external { address sender = _msgSender(); require(pendingOwner() == sender, "Ownable2Step: caller is not the new owner"); _transferOwnership(sender); } } // src/Auth.sol abstract contract Auth is Ownable2Step { event SetTrusted(address indexed user, bool isTrusted); mapping(address => bool) public trusted; error OnlyTrusted(); modifier onlyTrusted() { if (!trusted[msg.sender]) revert OnlyTrusted(); _; } constructor(address trustedUser) { trusted[trustedUser] = true; emit SetTrusted(trustedUser, true); } function setTrusted(address user, bool isTrusted) external onlyOwner { trusted[user] = isTrusted; emit SetTrusted(user, isTrusted); } } // src/V3Manager.sol /// @title V3Manager for UniswapV3Factory /// @notice This contract is used to create fee tiers, set protocol fee on pools, and collect fees from pools /// @dev Uses Auth contract for owner and trusted operators to guard functions contract V3Manager is Auth { IUniswapV3Factory public factory; address public maker; uint8 public protocolFee; constructor( address _operator, address _factory, address _maker, uint8 _protocolFee ) Auth(_operator) { // initial owner is msg.sender factory = IUniswapV3Factory(_factory); maker = _maker; protocolFee = _protocolFee; } /// @notice Creates a new fee tier with passed tickSpacing /// @dev will revert on factory contract if inputs invalid /// @param fee The fee amount to enable, denominated in hundreths of a bip /// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount function createFeeTier(uint24 fee, int24 tickSpacing) external onlyOwner { IUniswapV3Factory(factory).enableFeeAmount(fee, tickSpacing); } /// @notice transfer ownership of the factory contract /// @param newOwner The newOwner address to set on the factory contract function setFactoryOwner(address newOwner) external onlyOwner { IUniswapV3Factory(factory).setOwner(newOwner); } /// @notice Sets the protocol fee to be used for all pools /// @dev must be between 4 and 10, or 0 to disable - must apply to each pool everytime it's changed /// @param _protocolFee The protocol fee to be used for all pools function setProtocolFee(uint8 _protocolFee) external onlyOwner { require( _protocolFee == 0 || (_protocolFee >= 4 && _protocolFee <= 10) ); protocolFee = _protocolFee; } /// @notice Sets the maker contract to be used for collecting fees /// @dev Where all fees will be sent to when collected /// @param _maker The address of the maker contract function setMaker(address _maker) external onlyOwner { maker = _maker; } /// @notice Applies the protocol fee to all pools passed /// @dev must be called for each pool, after protocolFee is updated /// @param pools The addresses of the pools to apply the protocol fee to function applyProtocolFee(address[] calldata pools) external onlyTrusted { for (uint256 i = 0; i < pools.length; i++) { IUniswapV3Pool pool = IUniswapV3Pool(pools[i]); pool.setFeeProtocol(protocolFee, protocolFee); } } /// @notice Collects fees from pools passed /// @dev Will call collectProtocol on each pool address, sending fees to maker contract that is set /// @param pools The addresses of the pools to collect fees from function collectFees(address[] calldata pools) external onlyTrusted { for (uint256 i = 0; i < pools.length; i++) { IUniswapV3Pool pool = IUniswapV3Pool(pools[i]); (uint128 amount0, uint128 amount1) = pool.protocolFees(); pool.collectProtocol(maker, amount0, amount1); } } /// @notice Available function in case we need to do any calls that aren't supported by the contract (unwinding lp positions, etc.) /// @dev can only be called by owner /// @param to The address to send the call to /// @param _value The amount of eth to send with the call /// @param data The data to be sent with the call function doAction(address to, uint256 _value, bytes memory data) onlyOwner external { (bool success, ) = to.call{value: _value}(data); require(success); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_maker","type":"address"},{"internalType":"uint8","name":"_protocolFee","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"OnlyTrusted","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"isTrusted","type":"bool"}],"name":"SetTrusted","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"pools","type":"address[]"}],"name":"applyProtocolFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"pools","type":"address[]"}],"name":"collectFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"createFeeTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"doAction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IUniswapV3Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maker","outputs":[{"internalType":"address","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":[],"name":"protocolFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setFactoryOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_maker","type":"address"}],"name":"setMaker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_protocolFee","type":"uint8"}],"name":"setProtocolFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"isTrusted","type":"bool"}],"name":"setTrusted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"trusted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620011653803806200116583398101604081905262000034916200017d565b836200004033620000e6565b6001600160a01b038116600081815260026020908152604091829020805460ff1916600190811790915591519182527f878d105ed19c01e992a54459c2f04ba19432ac45600b42ce340d034272207436910160405180910390a250600380546001600160a01b039485166001600160a01b03199091161790556004805460ff909216600160a01b026001600160a81b0319909216929093169190911717905550620001e1565b600180546001600160a01b03191690556200010d8162000110602090811b62000a8617901c565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200017857600080fd5b919050565b600080600080608085870312156200019457600080fd5b6200019f8562000160565b9350620001af6020860162000160565b9250620001bf6040860162000160565b9150606085015160ff81168114620001d657600080fd5b939692955090935050565b610f7480620001f16000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80638da5cb5b116100b2578063cff8e7f711610081578063f2fde38b11610066578063f2fde38b146102b4578063f32a12ac146102c7578063f3cc660c146102da57600080fd5b8063cff8e7f714610283578063e30c39781461029657600080fd5b80638da5cb5b146101fb578063b0e21e8a14610219578063bc19a9e214610250578063c45a01551461026357600080fd5b80636e9821c2116100ee5780636e9821c2146101a5578063715018a6146101d857806372754262146101e057806379ba5097146101f357600080fd5b80634e91f8111461012057806350655d8c1461013557806354a0af171461017f57806358c0f72914610192575b600080fd5b61013361012e366004610bad565b6102ed565b005b6004546101559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61013361018d366004610c2f565b61036d565b6101336101a0366004610d18565b6103f3565b6101c86101b3366004610d8d565b60026020526000908152604090205460ff1681565b6040519015158152602001610176565b6101336105be565b6101336101ee366004610d18565b6105d2565b61013361070d565b60005473ffffffffffffffffffffffffffffffffffffffff16610155565b60045461023e9074010000000000000000000000000000000000000000900460ff1681565b60405160ff9091168152602001610176565b61013361025e366004610d8d565b6107c7565b6003546101559073ffffffffffffffffffffffffffffffffffffffff1681565b610133610291366004610da8565b610816565b60015473ffffffffffffffffffffffffffffffffffffffff16610155565b6101336102c2366004610d8d565b6108b4565b6101336102d5366004610df0565b610964565b6101336102e8366004610d8d565b6109f6565b6102f5610afb565b60ff81161580610318575060048160ff16101580156103185750600a8160ff1611155b61032157600080fd5b6004805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b610375610afb565b60008373ffffffffffffffffffffffffffffffffffffffff16838360405161039d9190610e21565b60006040518083038185875af1925050503d80600081146103da576040519150601f19603f3d011682016040523d82523d6000602084013e6103df565b606091505b50509050806103ed57600080fd5b50505050565b3360009081526002602052604090205460ff1661043c576040517fcf1119ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105b957600083838381811061045b5761045b610e5c565b90506020020160208101906104709190610d8d565b90506000808273ffffffffffffffffffffffffffffffffffffffff16631ad8b03b6040518163ffffffff1660e01b81526004016040805180830381865afa1580156104bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e39190610eab565b600480546040517f85b6672900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216928101929092526fffffffffffffffffffffffffffffffff808516602484015283166044830152929450909250908416906385b667299060640160408051808303816000875af115801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190610eab565b505050505080806105b190610ede565b91505061043f565b505050565b6105c6610afb565b6105d06000610b7c565b565b3360009081526002602052604090205460ff1661061b576040517fcf1119ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105b957600083838381811061063a5761063a610e5c565b905060200201602081019061064f9190610d8d565b600480546040517f8206a4d10000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090910460ff16918101829052602481019190915290915073ffffffffffffffffffffffffffffffffffffffff821690638206a4d190604401600060405180830381600087803b1580156106e157600080fd5b505af11580156106f5573d6000803e3d6000fd5b5050505050808061070590610ede565b91505061061e565b600154339073ffffffffffffffffffffffffffffffffffffffff1681146107bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6107c481610b7c565b50565b6107cf610afb565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61081e610afb565b6003546040517f8a7c195f00000000000000000000000000000000000000000000000000000000815262ffffff84166004820152600283900b602482015273ffffffffffffffffffffffffffffffffffffffff90911690638a7c195f90604401600060405180830381600087803b15801561089857600080fd5b505af11580156108ac573d6000803e3d6000fd5b505050505050565b6108bc610afb565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915561091f60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b61096c610afb565b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f878d105ed19c01e992a54459c2f04ba19432ac45600b42ce340d034272207436910160405180910390a25050565b6109fe610afb565b6003546040517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152909116906313af403590602401600060405180830381600087803b158015610a6b57600080fd5b505af1158015610a7f573d6000803e3d6000fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b2565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556107c481610a86565b600060208284031215610bbf57600080fd5b813560ff81168114610bd057600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bfb57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215610c4457600080fd5b610c4d84610bd7565b925060208401359150604084013567ffffffffffffffff80821115610c7157600080fd5b818601915086601f830112610c8557600080fd5b813581811115610c9757610c97610c00565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610cdd57610cdd610c00565b81604052828152896020848701011115610cf657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060208385031215610d2b57600080fd5b823567ffffffffffffffff80821115610d4357600080fd5b818501915085601f830112610d5757600080fd5b813581811115610d6657600080fd5b8660208260051b8501011115610d7b57600080fd5b60209290920196919550909350505050565b600060208284031215610d9f57600080fd5b610bd082610bd7565b60008060408385031215610dbb57600080fd5b823562ffffff81168114610dce57600080fd5b91506020830135600281900b8114610de557600080fd5b809150509250929050565b60008060408385031215610e0357600080fd5b610e0c83610bd7565b915060208301358015158114610de557600080fd5b6000825160005b81811015610e425760208186018101518583015201610e28565b81811115610e51576000828501525b509190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80516fffffffffffffffffffffffffffffffff81168114610bfb57600080fd5b60008060408385031215610ebe57600080fd5b610ec783610e8b565b9150610ed560208401610e8b565b90509250929050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610f37577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220114424c9378fd8a69f0c5cf9a4c8bfb01073dab0636fe6b18d65015675db28fc64736f6c634300080a00330000000000000000000000007812bcd0c0de8d15ff4c47391d2d9ae1b4de13f000000000000000000000000046b3fdf7b5cde91ac049936bf0bdb12c5d22202e000000000000000000000000d4777bd428e6eac069806ea581eb4806d22076730000000000000000000000000000000000000000000000000000000000000004
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061011b5760003560e01c80638da5cb5b116100b2578063cff8e7f711610081578063f2fde38b11610066578063f2fde38b146102b4578063f32a12ac146102c7578063f3cc660c146102da57600080fd5b8063cff8e7f714610283578063e30c39781461029657600080fd5b80638da5cb5b146101fb578063b0e21e8a14610219578063bc19a9e214610250578063c45a01551461026357600080fd5b80636e9821c2116100ee5780636e9821c2146101a5578063715018a6146101d857806372754262146101e057806379ba5097146101f357600080fd5b80634e91f8111461012057806350655d8c1461013557806354a0af171461017f57806358c0f72914610192575b600080fd5b61013361012e366004610bad565b6102ed565b005b6004546101559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61013361018d366004610c2f565b61036d565b6101336101a0366004610d18565b6103f3565b6101c86101b3366004610d8d565b60026020526000908152604090205460ff1681565b6040519015158152602001610176565b6101336105be565b6101336101ee366004610d18565b6105d2565b61013361070d565b60005473ffffffffffffffffffffffffffffffffffffffff16610155565b60045461023e9074010000000000000000000000000000000000000000900460ff1681565b60405160ff9091168152602001610176565b61013361025e366004610d8d565b6107c7565b6003546101559073ffffffffffffffffffffffffffffffffffffffff1681565b610133610291366004610da8565b610816565b60015473ffffffffffffffffffffffffffffffffffffffff16610155565b6101336102c2366004610d8d565b6108b4565b6101336102d5366004610df0565b610964565b6101336102e8366004610d8d565b6109f6565b6102f5610afb565b60ff81161580610318575060048160ff16101580156103185750600a8160ff1611155b61032157600080fd5b6004805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b610375610afb565b60008373ffffffffffffffffffffffffffffffffffffffff16838360405161039d9190610e21565b60006040518083038185875af1925050503d80600081146103da576040519150601f19603f3d011682016040523d82523d6000602084013e6103df565b606091505b50509050806103ed57600080fd5b50505050565b3360009081526002602052604090205460ff1661043c576040517fcf1119ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105b957600083838381811061045b5761045b610e5c565b90506020020160208101906104709190610d8d565b90506000808273ffffffffffffffffffffffffffffffffffffffff16631ad8b03b6040518163ffffffff1660e01b81526004016040805180830381865afa1580156104bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e39190610eab565b600480546040517f85b6672900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216928101929092526fffffffffffffffffffffffffffffffff808516602484015283166044830152929450909250908416906385b667299060640160408051808303816000875af115801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190610eab565b505050505080806105b190610ede565b91505061043f565b505050565b6105c6610afb565b6105d06000610b7c565b565b3360009081526002602052604090205460ff1661061b576040517fcf1119ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105b957600083838381811061063a5761063a610e5c565b905060200201602081019061064f9190610d8d565b600480546040517f8206a4d10000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090910460ff16918101829052602481019190915290915073ffffffffffffffffffffffffffffffffffffffff821690638206a4d190604401600060405180830381600087803b1580156106e157600080fd5b505af11580156106f5573d6000803e3d6000fd5b5050505050808061070590610ede565b91505061061e565b600154339073ffffffffffffffffffffffffffffffffffffffff1681146107bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6107c481610b7c565b50565b6107cf610afb565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61081e610afb565b6003546040517f8a7c195f00000000000000000000000000000000000000000000000000000000815262ffffff84166004820152600283900b602482015273ffffffffffffffffffffffffffffffffffffffff90911690638a7c195f90604401600060405180830381600087803b15801561089857600080fd5b505af11580156108ac573d6000803e3d6000fd5b505050505050565b6108bc610afb565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915561091f60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b61096c610afb565b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f878d105ed19c01e992a54459c2f04ba19432ac45600b42ce340d034272207436910160405180910390a25050565b6109fe610afb565b6003546040517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152909116906313af403590602401600060405180830381600087803b158015610a6b57600080fd5b505af1158015610a7f573d6000803e3d6000fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b2565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556107c481610a86565b600060208284031215610bbf57600080fd5b813560ff81168114610bd057600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bfb57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215610c4457600080fd5b610c4d84610bd7565b925060208401359150604084013567ffffffffffffffff80821115610c7157600080fd5b818601915086601f830112610c8557600080fd5b813581811115610c9757610c97610c00565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610cdd57610cdd610c00565b81604052828152896020848701011115610cf657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060208385031215610d2b57600080fd5b823567ffffffffffffffff80821115610d4357600080fd5b818501915085601f830112610d5757600080fd5b813581811115610d6657600080fd5b8660208260051b8501011115610d7b57600080fd5b60209290920196919550909350505050565b600060208284031215610d9f57600080fd5b610bd082610bd7565b60008060408385031215610dbb57600080fd5b823562ffffff81168114610dce57600080fd5b91506020830135600281900b8114610de557600080fd5b809150509250929050565b60008060408385031215610e0357600080fd5b610e0c83610bd7565b915060208301358015158114610de557600080fd5b6000825160005b81811015610e425760208186018101518583015201610e28565b81811115610e51576000828501525b509190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80516fffffffffffffffffffffffffffffffff81168114610bfb57600080fd5b60008060408385031215610ebe57600080fd5b610ec783610e8b565b9150610ed560208401610e8b565b90509250929050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610f37577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220114424c9378fd8a69f0c5cf9a4c8bfb01073dab0636fe6b18d65015675db28fc64736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007812bcd0c0de8d15ff4c47391d2d9ae1b4de13f000000000000000000000000046b3fdf7b5cde91ac049936bf0bdb12c5d22202e000000000000000000000000d4777bd428e6eac069806ea581eb4806d22076730000000000000000000000000000000000000000000000000000000000000004
-----Decoded View---------------
Arg [0] : _operator (address): 0x7812BCD0c0De8D15Ff4C47391d2d9AE1B4DE13f0
Arg [1] : _factory (address): 0x46B3fDF7b5CDe91Ac049936bF0bDb12c5d22202e
Arg [2] : _maker (address): 0xd4777Bd428e6eAc069806eA581EB4806D2207673
Arg [3] : _protocolFee (uint8): 4
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000007812bcd0c0de8d15ff4c47391d2d9ae1b4de13f0
Arg [1] : 00000000000000000000000046b3fdf7b5cde91ac049936bf0bdb12c5d22202e
Arg [2] : 000000000000000000000000d4777bd428e6eac069806ea581eb4806d2207673
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Deployed Bytecode Sourcemap
15851:3324:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17210:194;;;;;;:::i;:::-;;:::i;:::-;;15920:20;;;;;;;;;;;;464:42:1;452:55;;;434:74;;422:2;407:18;15920:20:0;;;;;;;;19005:167;;;;;;:::i;:::-;;:::i;18356:305::-;;;;;;:::i;:::-;;:::i;15112:39::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3012:14:1;;3005:22;2987:41;;2975:2;2960:18;15112:39:0;2847:187:1;12183:103:0;;;:::i;17886:245::-;;;;;;:::i;:::-;;:::i;14765:210::-;;;:::i;11535:87::-;11581:7;11608:6;;;11535:87;;15945:24;;;;;;;;;;;;;;;3211:4:1;3199:17;;;3181:36;;3169:2;3154:18;15945:24:0;3039:184:1;17593:80:0;;;;;;:::i;:::-;;:::i;15883:32::-;;;;;;;;;16565:146;;;;;;:::i;:::-;;:::i;13853:101::-;13933:13;;;;13853:101;;14153:181;;;;;;:::i;:::-;;:::i;15428:156::-;;;;;;:::i;:::-;;:::i;16850:120::-;;;;;;:::i;:::-;;:::i;17210:194::-;11421:13;:11;:13::i;:::-;17296:17:::1;::::0;::::1;::::0;;:62:::1;;;17334:1;17318:12;:17;;;;:39;;;;;17355:2;17339:12;:18;;;;17318:39;17280:85;;;::::0;::::1;;17372:11;:26:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;17210:194::o;19005:167::-;11421:13;:11;:13::i;:::-;19097:12:::1;19115:2;:7;;19130:6;19138:4;19115:28;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19096:47;;;19158:7;19150:16;;;::::0;::::1;;19089:83;19005:167:::0;;;:::o;18356:305::-;15235:10;15227:19;;;;:7;:19;;;;;;;;15222:46;;15255:13;;;;;;;;;;;;;;15222:46;18436:9:::1;18431:225;18451:16:::0;;::::1;18431:225;;;18483:19;18520:5;;18526:1;18520:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;18483:46;;18539:15;18556::::0;18575:4:::1;:17;;;:19;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18624:5;::::0;;18603:45:::1;::::0;;;;:20:::1;18624:5:::0;;::::1;18603:45:::0;;::::1;5601:74:1::0;;;;5694:34;5764:15;;;5744:18;;;5737:43;5816:15;;5796:18;;;5789:43;18538:56:0;;-1:-1:-1;18538:56:0;;-1:-1:-1;18603:20:0;;::::1;::::0;::::1;::::0;5574:18:1;;18603:45:0::1;::::0;::::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;18474:182;;;18469:3;;;;;:::i;:::-;;;;18431:225;;;;18356:305:::0;;:::o;12183:103::-;11421:13;:11;:13::i;:::-;12248:30:::1;12275:1;12248:18;:30::i;:::-;12183:103::o:0;17886:245::-;15235:10;15227:19;;;;:7;:19;;;;;;;;15222:46;;15255:13;;;;;;;;;;;;;;15222:46;17971:9:::1;17966:160;17986:16:::0;;::::1;17966:160;;;18018:19;18055:5;;18061:1;18055:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;18093:11;::::0;;18073:45:::1;::::0;;;;18093:11;;;::::1;;;18073:45:::0;;::::1;6363:36:1::0;;;6415:18;;;6408:45;;;;18018:46:0;;-1:-1:-1;18073:19:0::1;::::0;::::1;::::0;::::1;::::0;6336:18:1;;18073:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18009:117;18004:3;;;;;:::i;:::-;;;;17966:160;;14765:210:::0;13933:13;;818:10;;14860:24;13933:13;14860:24;;14852:78;;;;;;;6666:2:1;14852:78:0;;;6648:21:1;6705:2;6685:18;;;6678:30;6744:34;6724:18;;;6717:62;6815:11;6795:18;;;6788:39;6844:19;;14852:78:0;;;;;;;;;14941:26;14960:6;14941:18;:26::i;:::-;14801:174;14765:210::o;17593:80::-;11421:13;:11;:13::i;:::-;17653:5:::1;:14:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;17593:80::o;16565:146::-;11421:13;:11;:13::i;:::-;16663:7:::1;::::0;16645:60:::1;::::0;;;;7072:8:1;7060:21;;16645:60:0::1;::::0;::::1;7042:40:1::0;7129:1;7118:21;;;7098:18;;;7091:49;16663:7:0::1;::::0;;::::1;::::0;16645:42:::1;::::0;7015:18:1;;16645:60:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16565:146:::0;;:::o;14153:181::-;11421:13;:11;:13::i;:::-;14243::::1;:24:::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;14308:7:::1;11581::::0;11608:6;;;;11535:87;14308:7:::1;14283:43;;;;;;;;;;;;14153:181:::0;:::o;15428:156::-;11421:13;:11;:13::i;:::-;15508::::1;::::0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;;;:25;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;15549:27;;2987:41:1;;;15549:27:0::1;::::0;2960:18:1;15549:27:0::1;;;;;;;15428:156:::0;;:::o;16850:120::-;11421:13;:11;:13::i;:::-;16937:7:::1;::::0;16919:45:::1;::::0;;;;16937:7:::1;452:55:1::0;;;16919:45:0::1;::::0;::::1;434:74:1::0;16937:7:0;;::::1;::::0;16919:35:::1;::::0;407:18:1;;16919:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16850:120:::0;:::o;12802:191::-;12876:16;12895:6;;;12912:17;;;;;;;;;;12945:40;;12895:6;;;;;;;12945:40;;12876:16;12945:40;12865:128;12802:191;:::o;11700:132::-;11581:7;11608:6;11764:23;11608:6;818:10;11764:23;11756:68;;;;;;;7353:2:1;11756:68:0;;;7335:21:1;;;7372:18;;;7365:30;7431:34;7411:18;;;7404:62;7483:18;;11756:68:0;7151:356:1;14524:156:0;14614:13;14607:20;;;;;;14638:34;14663:8;14638:24;:34::i;14:269:1:-;71:6;124:2;112:9;103:7;99:23;95:32;92:52;;;140:1;137;130:12;92:52;179:9;166:23;229:4;222:5;218:16;211:5;208:27;198:55;;249:1;246;239:12;198:55;272:5;14:269;-1:-1:-1;;;14:269:1:o;519:196::-;587:20;;647:42;636:54;;626:65;;616:93;;705:1;702;695:12;616:93;519:196;;;:::o;720:184::-;772:77;769:1;762:88;869:4;866:1;859:15;893:4;890:1;883:15;909:1122;995:6;1003;1011;1064:2;1052:9;1043:7;1039:23;1035:32;1032:52;;;1080:1;1077;1070:12;1032:52;1103:29;1122:9;1103:29;:::i;:::-;1093:39;;1179:2;1168:9;1164:18;1151:32;1141:42;;1234:2;1223:9;1219:18;1206:32;1257:18;1298:2;1290:6;1287:14;1284:34;;;1314:1;1311;1304:12;1284:34;1352:6;1341:9;1337:22;1327:32;;1397:7;1390:4;1386:2;1382:13;1378:27;1368:55;;1419:1;1416;1409:12;1368:55;1455:2;1442:16;1477:2;1473;1470:10;1467:36;;;1483:18;;:::i;:::-;1617:2;1611:9;1679:4;1671:13;;1522:66;1667:22;;;1691:2;1663:31;1659:40;1647:53;;;1715:18;;;1735:22;;;1712:46;1709:72;;;1761:18;;:::i;:::-;1801:10;1797:2;1790:22;1836:2;1828:6;1821:18;1876:7;1871:2;1866;1862;1858:11;1854:20;1851:33;1848:53;;;1897:1;1894;1887:12;1848:53;1953:2;1948;1944;1940:11;1935:2;1927:6;1923:15;1910:46;1998:1;1993:2;1988;1980:6;1976:15;1972:24;1965:35;2019:6;2009:16;;;;;;;909:1122;;;;;:::o;2036:615::-;2122:6;2130;2183:2;2171:9;2162:7;2158:23;2154:32;2151:52;;;2199:1;2196;2189:12;2151:52;2239:9;2226:23;2268:18;2309:2;2301:6;2298:14;2295:34;;;2325:1;2322;2315:12;2295:34;2363:6;2352:9;2348:22;2338:32;;2408:7;2401:4;2397:2;2393:13;2389:27;2379:55;;2430:1;2427;2420:12;2379:55;2470:2;2457:16;2496:2;2488:6;2485:14;2482:34;;;2512:1;2509;2502:12;2482:34;2565:7;2560:2;2550:6;2547:1;2543:14;2539:2;2535:23;2531:32;2528:45;2525:65;;;2586:1;2583;2576:12;2525:65;2617:2;2609:11;;;;;2639:6;;-1:-1:-1;2036:615:1;;-1:-1:-1;;;;2036:615:1:o;2656:186::-;2715:6;2768:2;2756:9;2747:7;2743:23;2739:32;2736:52;;;2784:1;2781;2774:12;2736:52;2807:29;2826:9;2807:29;:::i;3484:443::-;3549:6;3557;3610:2;3598:9;3589:7;3585:23;3581:32;3578:52;;;3626:1;3623;3616:12;3578:52;3665:9;3652:23;3715:8;3708:5;3704:20;3697:5;3694:31;3684:59;;3739:1;3736;3729:12;3684:59;3762:5;-1:-1:-1;3819:2:1;3804:18;;3791:32;3865:1;3854:22;;;3842:35;;3832:63;;3891:1;3888;3881:12;3832:63;3914:7;3904:17;;;3484:443;;;;;:::o;3932:347::-;3997:6;4005;4058:2;4046:9;4037:7;4033:23;4029:32;4026:52;;;4074:1;4071;4064:12;4026:52;4097:29;4116:9;4097:29;:::i;:::-;4087:39;;4176:2;4165:9;4161:18;4148:32;4223:5;4216:13;4209:21;4202:5;4199:32;4189:60;;4245:1;4242;4235:12;4284:426;4413:3;4451:6;4445:13;4476:1;4486:129;4500:6;4497:1;4494:13;4486:129;;;4598:4;4582:14;;;4578:25;;4572:32;4559:11;;;4552:53;4515:12;4486:129;;;4633:6;4630:1;4627:13;4624:48;;;4668:1;4659:6;4654:3;4650:16;4643:27;4624:48;-1:-1:-1;4688:16:1;;;;;4284:426;-1:-1:-1;;4284:426:1:o;4715:184::-;4767:77;4764:1;4757:88;4864:4;4861:1;4854:15;4888:4;4885:1;4878:15;4904:192;4983:13;;5036:34;5025:46;;5015:57;;5005:85;;5086:1;5083;5076:12;5101:293;5180:6;5188;5241:2;5229:9;5220:7;5216:23;5212:32;5209:52;;;5257:1;5254;5247:12;5209:52;5280:40;5310:9;5280:40;:::i;:::-;5270:50;;5339:49;5384:2;5373:9;5369:18;5339:49;:::i;:::-;5329:59;;5101:293;;;;;:::o;5843:349::-;5882:3;5913:66;5906:5;5903:77;5900:257;;;6013:77;6010:1;6003:88;6114:4;6111:1;6104:15;6142:4;6139:1;6132:15;5900:257;-1:-1:-1;6184:1:1;6173:13;;5843:349::o
Swarm Source
ipfs://114424c9378fd8a69f0c5cf9a4c8bfb01073dab0636fe6b18d65015675db28fc
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.