Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
0x60e06040 | 15976718 | 881 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
GelatoLQTYArb
Compiler Version
v0.8.14+commit.80d49f37
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-15 */ // based on https://etherscan.io/address/0xf9a0e641c98f964b1c732661fab9d5b96af28d49#code pragma solidity ^0.8.14; // OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol) // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } enum Module { RESOLVER, TIME, PROXY, SINGLE_EXEC } struct ModuleData { Module[] modules; bytes[] args; } interface IOps { function createTask( address execAddress, bytes calldata execDataOrSelector, ModuleData calldata moduleData, address feeToken ) external returns (bytes32 taskId); function cancelTask(bytes32 taskId) external; function getFeeDetails() external view returns (uint256, address); function gelato() external view returns (address payable); function taskTreasury() external view returns (ITaskTreasuryUpgradable); } interface ITaskTreasuryUpgradable { function depositFunds( address receiver, address token, uint256 amount ) external payable; function withdrawFunds( address payable receiver, address token, uint256 amount ) external; } interface IOpsProxyFactory { function getProxyOf(address account) external view returns (address, bool); } /** * @dev Inherit this contract to allow your smart contract to * - Make synchronous fee payments. * - Have call restrictions for functions to be automated. */ // solhint-disable private-vars-leading-underscore abstract contract OpsReady { IOps public immutable ops; address public immutable dedicatedMsgSender; address private immutable _gelato; address internal constant ETH = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; address private constant OPS_PROXY_FACTORY = 0xC815dB16D4be6ddf2685C201937905aBf338F5D7; /** * @dev * Only tasks created by _taskCreator defined in constructor can call * the functions with this modifier. */ modifier onlyDedicatedMsgSender() { require(msg.sender == dedicatedMsgSender, "Only dedicated msg.sender"); _; } /** * @dev * _taskCreator is the address which will create tasks for this contract. */ constructor(address _ops, address _taskCreator) { ops = IOps(_ops); _gelato = IOps(_ops).gelato(); (dedicatedMsgSender, ) = IOpsProxyFactory(OPS_PROXY_FACTORY).getProxyOf( _taskCreator ); } /** * @dev * Transfers fee to gelato for synchronous fee payments. * * _fee & _feeToken should be queried from IOps.getFeeDetails() */ function _transfer(uint256 _fee, address _feeToken) internal { if (_feeToken == ETH) { (bool success, ) = _gelato.call{value: _fee}(""); require(success, "_transfer: ETH transfer failed"); } else { SafeERC20.safeTransfer(IERC20(_feeToken), _gelato, _fee); } } function _getFeeDetails() internal view returns (uint256 fee, address feeToken) { (fee, feeToken) = ops.getFeeDetails(); } } interface IUniswapReserve { function swap( address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes calldata data ) external returns (int256 amount0, int256 amount1); } interface ERC20Like { function approve(address spender, uint value) external returns(bool); function transfer(address to, uint value) external returns(bool); function balanceOf(address a) external view returns(uint); } interface WethLike is ERC20Like { function deposit() external payable; function withdraw(uint wad) external; } interface ReserveLike { function trade( address srcToken, uint256 srcAmount, address destToken, address payable destAddress, uint256 conversionRate, bool validate ) external payable returns (bool); } contract GelatoLQTYArb is OpsReady { address constant LQTY = 0x6DEA81C8171D0bA574754EF6F8b412F2Ed88c54D; address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; IUniswapReserve constant LQTYETH = IUniswapReserve(0xD1D5A4c0eA98971894772Dcd6D2f1dc71083C44E); uint160 constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342; uint160 constant MIN_SQRT_RATIO = 4295128739; constructor(address _ops, address _taskCreator) OpsReady(_ops, _taskCreator) {} function swap(uint lqtyQty, address reserve, address lqtyDest, uint minLqtyProfit) external payable returns(uint) { bytes memory data = abi.encode(reserve); LQTYETH.swap(address(this), true, int256(lqtyQty), MIN_SQRT_RATIO + 1, data); uint retVal = ERC20Like(LQTY).balanceOf(address(this)); require(retVal >= minLqtyProfit, "insufficient arb profit"); ERC20Like(LQTY).transfer(lqtyDest, retVal); return retVal; } function uniswapV3SwapCallback( int256 amount0Delta, int256 amount1Delta, bytes calldata data ) external { require(msg.sender == address(LQTYETH), "uniswapV3SwapCallback: invalid sender"); // swap ETH to LQTY uint ethAmount = uint(-1 * amount1Delta); WethLike(WETH).withdraw(ethAmount); uint totalEthBal = address(this).balance; // pay for gelato fees (uint256 fee, address feeToken) = _getFeeDetails(); _transfer(fee, feeToken); require(totalEthBal > fee, "Fee > ETH received"); uint remainingEth = totalEthBal - fee; ReserveLike reserve = abi.decode(data, (ReserveLike)); reserve.trade{value: remainingEth}( 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE, remainingEth, LQTY, payable(this), 1, false ); if(amount0Delta > 0) { ERC20Like(LQTY).transfer(msg.sender, uint(amount0Delta)); } } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_ops","type":"address"},{"internalType":"address","name":"_taskCreator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"dedicatedMsgSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ops","outputs":[{"internalType":"contract IOps","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lqtyQty","type":"uint256"},{"internalType":"address","name":"reserve","type":"address"},{"internalType":"address","name":"lqtyDest","type":"address"},{"internalType":"uint256","name":"minLqtyProfit","type":"uint256"}],"name":"swap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e06040523480156200001157600080fd5b50604051620010113803806200101183398101604081905262000034916200016b565b8181816001600160a01b03166080816001600160a01b031681525050816001600160a01b031663573ea5756040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200008f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b59190620001aa565b6001600160a01b0390811660c0526040516337b6269f60e21b8152908216600482015273c815db16d4be6ddf2685c201937905abf338f5d79063ded89a7c906024016040805180830381865afa15801562000114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013a9190620001d1565b506001600160a01b031660a052506200020992505050565b6001600160a01b03811681146200016857600080fd5b50565b600080604083850312156200017f57600080fd5b82516200018c8162000152565b60208401519092506200019f8162000152565b809150509250929050565b600060208284031215620001bd57600080fd5b8151620001ca8162000152565b9392505050565b60008060408385031215620001e557600080fd5b8251620001f28162000152565b602084015190925080151581146200019f57600080fd5b60805160a05160c051610dcc62000245600039600081816106a3015261076d01526000606101526000818160d301526105f20152610dcc6000f3fe6080604052600436106100435760003560e01c806328f150eb1461004f57806370085be0146100a0578063e70abe92146100c1578063fa461e33146100f557600080fd5b3661004a57005b600080fd5b34801561005b57600080fd5b506100837f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b36100ae366004610a65565b610117565b604051908152602001610097565b3480156100cd57600080fd5b506100837f000000000000000000000000000000000000000000000000000000000000000081565b34801561010157600080fd5b50610115610110366004610aad565b610331565b005b604080516001600160a01b038516602082015260009182910160408051601f19818403018152919052905073d1d5a4c0ea98971894772dcd6d2f1dc71083c44e63128acb083060018961016f6401000276a383610b43565b866040518663ffffffff1660e01b8152600401610190959493929190610bca565b60408051808303816000875af11580156101ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d29190610c04565b50506040516370a0823160e01b8152306004820152600090736dea81c8171d0ba574754ef6f8b412f2ed88c54d906370a0823190602401602060405180830381865afa158015610226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024a9190610c28565b9050838110156102a15760405162461bcd60e51b815260206004820152601760248201527f696e73756666696369656e74206172622070726f66697400000000000000000060448201526064015b60405180910390fd5b60405163a9059cbb60e01b81526001600160a01b038616600482015260248101829052736dea81c8171d0ba574754ef6f8b412f2ed88c54d9063a9059cbb906044016020604051808303816000875af1158015610302573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103269190610c41565b509695505050505050565b3373d1d5a4c0ea98971894772dcd6d2f1dc71083c44e146103a25760405162461bcd60e51b815260206004820152602560248201527f756e697377617056335377617043616c6c6261636b3a20696e76616c6964207360448201526432b73232b960d91b6064820152608401610298565b60006103b084600019610c63565b604051632e1a7d4d60e01b81526004810182905290915073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90602401600060405180830381600087803b15801561040057600080fd5b505af1158015610414573d6000803e3d6000fd5b5050505060004790506000806104286105ed565b91509150610436828261067a565b8183116104855760405162461bcd60e51b815260206004820152601260248201527f466565203e2045544820726563656976656400000000000000000000000000006044820152606401610298565b60006104918385610d03565b905060006104a187890189610d1a565b604051636cf6981160e01b815273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600482015260248101849052736dea81c8171d0ba574754ef6f8b412f2ed88c54d604482015230606482015260016084820152600060a48201529091506001600160a01b03821690636cf6981190849060c40160206040518083038185885af1158015610534573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105599190610c41565b5060008a13156105e15760405163a9059cbb60e01b8152336004820152602481018b9052736dea81c8171d0ba574754ef6f8b412f2ed88c54d9063a9059cbb906044016020604051808303816000875af11580156105bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105df9190610c41565b505b50505050505050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b810c6366040518163ffffffff1660e01b81526004016040805180830381865afa15801561064d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106719190610d37565b90939092509050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038216016107675760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168360405160006040518083038185875af1925050503d806000811461070c576040519150601f19603f3d011682016040523d82523d6000602084013e610711565b606091505b50509050806107625760405162461bcd60e51b815260206004820152601e60248201527f5f7472616e736665723a20455448207472616e73666572206661696c656400006044820152606401610298565b505050565b610792817f000000000000000000000000000000000000000000000000000000000000000084610796565b5050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052610762908490600061084d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108ca9092919063ffffffff16565b805190915015610762578080602001905181019061086b9190610c41565b6107625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610298565b60606108d984846000856108e3565b90505b9392505050565b6060824710156109445760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610298565b6001600160a01b0385163b61099b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610298565b600080866001600160a01b031685876040516109b79190610d67565b60006040518083038185875af1925050503d80600081146109f4576040519150601f19603f3d011682016040523d82523d6000602084013e6109f9565b606091505b5091509150610a09828286610a14565b979650505050505050565b60608315610a235750816108dc565b825115610a335782518084602001fd5b8160405162461bcd60e51b81526004016102989190610d83565b6001600160a01b0381168114610a6257600080fd5b50565b60008060008060808587031215610a7b57600080fd5b843593506020850135610a8d81610a4d565b92506040850135610a9d81610a4d565b9396929550929360600135925050565b60008060008060608587031215610ac357600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610ae957600080fd5b818701915087601f830112610afd57600080fd5b813581811115610b0c57600080fd5b886020828501011115610b1e57600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b60006001600160a01b03808316818516808303821115610b6557610b65610b2d565b01949350505050565b60005b83811015610b89578181015183820152602001610b71565b83811115610b98576000848401525b50505050565b60008151808452610bb6816020860160208601610b6e565b601f01601f19169290920160200192915050565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a06080830152610a0960a0830184610b9e565b60008060408385031215610c1757600080fd5b505080516020909101519092909150565b600060208284031215610c3a57600080fd5b5051919050565b600060208284031215610c5357600080fd5b815180151581146108dc57600080fd5b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615610ca457610ca4610b2d565b600160ff1b6000871282811687830589121615610cc357610cc3610b2d565b60008712925087820587128484161615610cdf57610cdf610b2d565b87850587128184161615610cf557610cf5610b2d565b505050929093029392505050565b600082821015610d1557610d15610b2d565b500390565b600060208284031215610d2c57600080fd5b81356108dc81610a4d565b60008060408385031215610d4a57600080fd5b825191506020830151610d5c81610a4d565b809150509250929050565b60008251610d79818460208701610b6e565b9190910192915050565b6020815260006108dc6020830184610b9e56fea26469706673582212208ebdce31eeaf21e0ea776375f4692ad1169419da3742cc989268723450ea8a0a64736f6c634300080e0033000000000000000000000000b3f5503f93d5ef84b06993a1975b9d21b962892f000000000000000000000000b1116e117dba24cace34f7887779b25e15060311
Deployed Bytecode
0x6080604052600436106100435760003560e01c806328f150eb1461004f57806370085be0146100a0578063e70abe92146100c1578063fa461e33146100f557600080fd5b3661004a57005b600080fd5b34801561005b57600080fd5b506100837f00000000000000000000000007d0de1b0f29884fff9c0b8a1b40af1910b757c781565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b36100ae366004610a65565b610117565b604051908152602001610097565b3480156100cd57600080fd5b506100837f000000000000000000000000b3f5503f93d5ef84b06993a1975b9d21b962892f81565b34801561010157600080fd5b50610115610110366004610aad565b610331565b005b604080516001600160a01b038516602082015260009182910160408051601f19818403018152919052905073d1d5a4c0ea98971894772dcd6d2f1dc71083c44e63128acb083060018961016f6401000276a383610b43565b866040518663ffffffff1660e01b8152600401610190959493929190610bca565b60408051808303816000875af11580156101ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d29190610c04565b50506040516370a0823160e01b8152306004820152600090736dea81c8171d0ba574754ef6f8b412f2ed88c54d906370a0823190602401602060405180830381865afa158015610226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024a9190610c28565b9050838110156102a15760405162461bcd60e51b815260206004820152601760248201527f696e73756666696369656e74206172622070726f66697400000000000000000060448201526064015b60405180910390fd5b60405163a9059cbb60e01b81526001600160a01b038616600482015260248101829052736dea81c8171d0ba574754ef6f8b412f2ed88c54d9063a9059cbb906044016020604051808303816000875af1158015610302573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103269190610c41565b509695505050505050565b3373d1d5a4c0ea98971894772dcd6d2f1dc71083c44e146103a25760405162461bcd60e51b815260206004820152602560248201527f756e697377617056335377617043616c6c6261636b3a20696e76616c6964207360448201526432b73232b960d91b6064820152608401610298565b60006103b084600019610c63565b604051632e1a7d4d60e01b81526004810182905290915073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90602401600060405180830381600087803b15801561040057600080fd5b505af1158015610414573d6000803e3d6000fd5b5050505060004790506000806104286105ed565b91509150610436828261067a565b8183116104855760405162461bcd60e51b815260206004820152601260248201527f466565203e2045544820726563656976656400000000000000000000000000006044820152606401610298565b60006104918385610d03565b905060006104a187890189610d1a565b604051636cf6981160e01b815273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600482015260248101849052736dea81c8171d0ba574754ef6f8b412f2ed88c54d604482015230606482015260016084820152600060a48201529091506001600160a01b03821690636cf6981190849060c40160206040518083038185885af1158015610534573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105599190610c41565b5060008a13156105e15760405163a9059cbb60e01b8152336004820152602481018b9052736dea81c8171d0ba574754ef6f8b412f2ed88c54d9063a9059cbb906044016020604051808303816000875af11580156105bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105df9190610c41565b505b50505050505050505050565b6000807f000000000000000000000000b3f5503f93d5ef84b06993a1975b9d21b962892f6001600160a01b031663b810c6366040518163ffffffff1660e01b81526004016040805180830381865afa15801561064d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106719190610d37565b90939092509050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038216016107675760007f0000000000000000000000003caca7b48d0573d793d3b0279b5f0029180e83b66001600160a01b03168360405160006040518083038185875af1925050503d806000811461070c576040519150601f19603f3d011682016040523d82523d6000602084013e610711565b606091505b50509050806107625760405162461bcd60e51b815260206004820152601e60248201527f5f7472616e736665723a20455448207472616e73666572206661696c656400006044820152606401610298565b505050565b610792817f0000000000000000000000003caca7b48d0573d793d3b0279b5f0029180e83b684610796565b5050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052610762908490600061084d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108ca9092919063ffffffff16565b805190915015610762578080602001905181019061086b9190610c41565b6107625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610298565b60606108d984846000856108e3565b90505b9392505050565b6060824710156109445760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610298565b6001600160a01b0385163b61099b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610298565b600080866001600160a01b031685876040516109b79190610d67565b60006040518083038185875af1925050503d80600081146109f4576040519150601f19603f3d011682016040523d82523d6000602084013e6109f9565b606091505b5091509150610a09828286610a14565b979650505050505050565b60608315610a235750816108dc565b825115610a335782518084602001fd5b8160405162461bcd60e51b81526004016102989190610d83565b6001600160a01b0381168114610a6257600080fd5b50565b60008060008060808587031215610a7b57600080fd5b843593506020850135610a8d81610a4d565b92506040850135610a9d81610a4d565b9396929550929360600135925050565b60008060008060608587031215610ac357600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610ae957600080fd5b818701915087601f830112610afd57600080fd5b813581811115610b0c57600080fd5b886020828501011115610b1e57600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b60006001600160a01b03808316818516808303821115610b6557610b65610b2d565b01949350505050565b60005b83811015610b89578181015183820152602001610b71565b83811115610b98576000848401525b50505050565b60008151808452610bb6816020860160208601610b6e565b601f01601f19169290920160200192915050565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a06080830152610a0960a0830184610b9e565b60008060408385031215610c1757600080fd5b505080516020909101519092909150565b600060208284031215610c3a57600080fd5b5051919050565b600060208284031215610c5357600080fd5b815180151581146108dc57600080fd5b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615610ca457610ca4610b2d565b600160ff1b6000871282811687830589121615610cc357610cc3610b2d565b60008712925087820587128484161615610cdf57610cdf610b2d565b87850587128184161615610cf557610cf5610b2d565b505050929093029392505050565b600082821015610d1557610d15610b2d565b500390565b600060208284031215610d2c57600080fd5b81356108dc81610a4d565b60008060408385031215610d4a57600080fd5b825191506020830151610d5c81610a4d565b809150509250929050565b60008251610d79818460208701610b6e565b9190910192915050565b6020815260006108dc6020830184610b9e56fea26469706673582212208ebdce31eeaf21e0ea776375f4692ad1169419da3742cc989268723450ea8a0a64736f6c634300080e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000B3f5503f93d5Ef84b06993a1975B9D21B962892F000000000000000000000000B1116e117dBA24CacE34F7887779B25e15060311
-----Decoded View---------------
Arg [0] : _ops (address): 0xB3f5503f93d5Ef84b06993a1975B9D21B962892F
Arg [1] : _taskCreator (address): 0xB1116e117dBA24CacE34F7887779B25e15060311
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000B3f5503f93d5Ef84b06993a1975B9D21B962892F
Arg [1] : 000000000000000000000000B1116e117dBA24CacE34F7887779B25e15060311
Deployed Bytecode Sourcemap
19080:2101:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16574:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;16574:43:0;;;;;;;;19601:476;;;;;;:::i;:::-;;:::i;:::-;;;1080:25:1;;;1068:2;1053:18;19601:476:0;934:177:1;16542:25:0;;;;;;;;;;;;;;;20085:1056;;;;;;;;;;-1:-1:-1;20085:1056:0;;;;;:::i;:::-;;:::i;:::-;;19601:476;19746:19;;;-1:-1:-1;;;;;178:55:1;;19746:19:0;;;160:74:1;19709:4:0;;;;133:18:1;19746:19:0;;;-1:-1:-1;;19746:19:0;;;;;;;;;;-1:-1:-1;19321:42:0;19776:12;19797:4;19804;19817:7;19827:18;19495:10;19804:4;19827:18;:::i;:::-;19847:4;19776:76;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;19879:40:0;;-1:-1:-1;;;19879:40:0;;19913:4;19879:40;;;160:74:1;19865:11:0;;19146:42;;19879:25;;133:18:1;;19879:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19865:54;;19948:13;19938:6;:23;;19930:59;;;;-1:-1:-1;;;19930:59:0;;4247:2:1;19930:59:0;;;4229:21:1;4286:2;4266:18;;;4259:30;4325:25;4305:18;;;4298:53;4368:18;;19930:59:0;;;;;;;;;20000:42;;-1:-1:-1;;;20000:42:0;;-1:-1:-1;;;;;4589:55:1;;20000:42:0;;;4571:74:1;4661:18;;;4654:34;;;19146:42:0;;20000:24;;4544:18:1;;20000:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20062:6:0;19601:476;-1:-1:-1;;;;;;19601:476:0:o;20085:1056::-;20241:10;19321:42;20241:30;20233:80;;;;-1:-1:-1;;;20233:80:0;;5183:2:1;20233:80:0;;;5165:21:1;5222:2;5202:18;;;5195:30;5261:34;5241:18;;;5234:62;-1:-1:-1;;;5312:18:1;;;5305:35;5357:19;;20233:80:0;4981:401:1;20233:80:0;20353:14;20375:17;20380:12;-1:-1:-1;;20375:17:0;:::i;:::-;20404:34;;-1:-1:-1;;;20404:34:0;;;;;1080:25:1;;;20353:40:0;;-1:-1:-1;19219:42:0;;20404:23;;1053:18:1;;20404:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20449:16;20468:21;20449:40;;20535:11;20548:16;20568;:14;:16::i;:::-;20534:50;;;;20595:24;20605:3;20610:8;20595:9;:24::i;:::-;20652:3;20638:11;:17;20630:48;;;;-1:-1:-1;;;20630:48:0;;6194:2:1;20630:48:0;;;6176:21:1;6233:2;6213:18;;;6206:30;6272:20;6252:18;;;6245:48;6310:18;;20630:48:0;5992:342:1;20630:48:0;20691:17;20711;20725:3;20711:11;:17;:::i;:::-;20691:37;-1:-1:-1;20741:19:0;20763:31;;;;20774:4;20763:31;:::i;:::-;20805:212;;-1:-1:-1;;;20805:212:0;;20854:42;20805:212;;;7106:34:1;7156:18;;;7149:34;;;19146:42:0;7199:18:1;;;7192:43;20965:4:0;7251:18:1;;;7244:43;20985:1:0;7303:19:1;;;7296:35;21001:5:0;7347:19:1;;;7340:51;20741:53:0;;-1:-1:-1;;;;;;20805:13:0;;;;;20826:12;;7017:19:1;;20805:212:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21048:1;21033:12;:16;21030:104;;;21066:56;;-1:-1:-1;;;21066:56:0;;21091:10;21066:56;;;4571:74:1;4661:18;;;4654:34;;;19146:42:0;;21066:24;;4544:18:1;;21066:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21030:104;20222:919;;;;;;20085:1056;;;;:::o;18010:168::-;18086:11;18099:16;18151:3;-1:-1:-1;;;;;18151:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18133:37;;;;-1:-1:-1;18010:168:0;-1:-1:-1;18010:168:0:o;17672:330::-;-1:-1:-1;;;;;;;17748:16:0;;;17744:251;;17782:12;17800:7;-1:-1:-1;;;;;17800:12:0;17820:4;17800:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17781:48;;;17852:7;17844:50;;;;-1:-1:-1;;;17844:50:0;;8131:2:1;17844:50:0;;;8113:21:1;8170:2;8150:18;;;8143:30;8209:32;8189:18;;;8182:60;8259:18;;17844:50:0;7929:354:1;17844:50:0;17766:140;17672:330;;:::o;17744:251::-;17927:56;17957:9;17969:7;17978:4;17927:22;:56::i;:::-;17672:330;;:::o;11925:211::-;12069:58;;;-1:-1:-1;;;;;4589:55:1;;12069:58:0;;;4571:74:1;4661:18;;;;4654:34;;;12069:58:0;;;;;;;;;;4544:18:1;;;;12069:58:0;;;;;;;;;;-1:-1:-1;;;12069:58:0;;;12042:86;;12062:5;;14922:23;14948:69;14976:4;14948:69;;;;;;;;;;;;;;;;;14956:5;-1:-1:-1;;;;;14948:27:0;;;:69;;;;;:::i;:::-;15032:17;;14922:95;;-1:-1:-1;15032:21:0;15028:179;;15129:10;15118:30;;;;;;;;;;;;:::i;:::-;15110:85;;;;-1:-1:-1;;;15110:85:0;;8490:2:1;15110:85:0;;;8472:21:1;8529:2;8509:18;;;8502:30;8568:34;8548:18;;;8541:62;-1:-1:-1;;;8619:18:1;;;8612:40;8669:19;;15110:85:0;8288:406:1;6874:229:0;7011:12;7043:52;7065:6;7073:4;7079:1;7082:12;7043:21;:52::i;:::-;7036:59;;6874:229;;;;;;:::o;7994:510::-;8164:12;8222:5;8197:21;:30;;8189:81;;;;-1:-1:-1;;;8189:81:0;;8901:2:1;8189:81:0;;;8883:21:1;8940:2;8920:18;;;8913:30;8979:34;8959:18;;;8952:62;-1:-1:-1;;;9030:18:1;;;9023:36;9076:19;;8189:81:0;8699:402:1;8189:81:0;-1:-1:-1;;;;;4424:19:0;;;8281:60;;;;-1:-1:-1;;;8281:60:0;;9308:2:1;8281:60:0;;;9290:21:1;9347:2;9327:18;;;9320:30;9386:31;9366:18;;;9359:59;9435:18;;8281:60:0;9106:353:1;8281:60:0;8355:12;8369:23;8396:6;-1:-1:-1;;;;;8396:11:0;8415:5;8422:4;8396:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8354:73;;;;8445:51;8462:7;8471:10;8483:12;8445:16;:51::i;:::-;8438:58;7994:510;-1:-1:-1;;;;;;;7994:510:0:o;10680:712::-;10830:12;10859:7;10855:530;;;-1:-1:-1;10890:10:0;10883:17;;10855:530;11004:17;;:21;11000:374;;11202:10;11196:17;11263:15;11250:10;11246:2;11242:19;11235:44;11000:374;11345:12;11338:20;;-1:-1:-1;;;11338:20:0;;;;;;;;:::i;245:154:1:-;-1:-1:-1;;;;;324:5:1;320:54;313:5;310:65;300:93;;389:1;386;379:12;300:93;245:154;:::o;404:525::-;490:6;498;506;514;567:3;555:9;546:7;542:23;538:33;535:53;;;584:1;581;574:12;535:53;620:9;607:23;597:33;;680:2;669:9;665:18;652:32;693:31;718:5;693:31;:::i;:::-;743:5;-1:-1:-1;800:2:1;785:18;;772:32;813:33;772:32;813:33;:::i;:::-;404:525;;;;-1:-1:-1;865:7:1;;919:2;904:18;891:32;;-1:-1:-1;;404:525:1:o;1359:725::-;1445:6;1453;1461;1469;1522:2;1510:9;1501:7;1497:23;1493:32;1490:52;;;1538:1;1535;1528:12;1490:52;1574:9;1561:23;1551:33;;1631:2;1620:9;1616:18;1603:32;1593:42;;1686:2;1675:9;1671:18;1658:32;1709:18;1750:2;1742:6;1739:14;1736:34;;;1766:1;1763;1756:12;1736:34;1804:6;1793:9;1789:22;1779:32;;1849:7;1842:4;1838:2;1834:13;1830:27;1820:55;;1871:1;1868;1861:12;1820:55;1911:2;1898:16;1937:2;1929:6;1926:14;1923:34;;;1953:1;1950;1943:12;1923:34;1998:7;1993:2;1984:6;1980:2;1976:15;1972:24;1969:37;1966:57;;;2019:1;2016;2009:12;1966:57;1359:725;;;;-1:-1:-1;;2050:2:1;2042:11;;-1:-1:-1;;;1359:725:1:o;2089:127::-;2150:10;2145:3;2141:20;2138:1;2131:31;2181:4;2178:1;2171:15;2205:4;2202:1;2195:15;2221:261;2261:3;-1:-1:-1;;;;;2358:2:1;2355:1;2351:10;2388:2;2385:1;2381:10;2419:3;2415:2;2411:12;2406:3;2403:21;2400:47;;;2427:18;;:::i;:::-;2463:13;;2221:261;-1:-1:-1;;;;2221:261:1:o;2487:258::-;2559:1;2569:113;2583:6;2580:1;2577:13;2569:113;;;2659:11;;;2653:18;2640:11;;;2633:39;2605:2;2598:10;2569:113;;;2700:6;2697:1;2694:13;2691:48;;;2735:1;2726:6;2721:3;2717:16;2710:27;2691:48;;2487:258;;;:::o;2750:257::-;2791:3;2829:5;2823:12;2856:6;2851:3;2844:19;2872:63;2928:6;2921:4;2916:3;2912:14;2905:4;2898:5;2894:16;2872:63;:::i;:::-;2989:2;2968:15;-1:-1:-1;;2964:29:1;2955:39;;;;2996:4;2951:50;;2750:257;-1:-1:-1;;2750:257:1:o;3012:591::-;3226:4;-1:-1:-1;;;;;3336:2:1;3328:6;3324:15;3313:9;3306:34;3390:6;3383:14;3376:22;3371:2;3360:9;3356:18;3349:50;3435:6;3430:2;3419:9;3415:18;3408:34;3490:2;3482:6;3478:15;3473:2;3462:9;3458:18;3451:43;;3531:3;3525;3514:9;3510:19;3503:32;3552:45;3592:3;3581:9;3577:19;3569:6;3552:45;:::i;3608:243::-;3685:6;3693;3746:2;3734:9;3725:7;3721:23;3717:32;3714:52;;;3762:1;3759;3752:12;3714:52;-1:-1:-1;;3785:16:1;;3841:2;3826:18;;;3820:25;3785:16;;3820:25;;-1:-1:-1;3608:243:1:o;3856:184::-;3926:6;3979:2;3967:9;3958:7;3954:23;3950:32;3947:52;;;3995:1;3992;3985:12;3947:52;-1:-1:-1;4018:16:1;;3856:184;-1:-1:-1;3856:184:1:o;4699:277::-;4766:6;4819:2;4807:9;4798:7;4794:23;4790:32;4787:52;;;4835:1;4832;4825:12;4787:52;4867:9;4861:16;4920:5;4913:13;4906:21;4899:5;4896:32;4886:60;;4942:1;4939;4932:12;5387:600;5426:7;5458:66;5550:1;5547;5543:9;5578:1;5575;5571:9;5623:1;5619:2;5615:10;5612:1;5609:17;5604:2;5600;5596:11;5592:35;5589:61;;;5630:18;;:::i;:::-;-1:-1:-1;;;5706:1:1;5699:9;;5724:11;;;5744;;;5737:19;;5720:37;5717:63;;;5760:18;;:::i;:::-;5806:1;5803;5799:9;5789:19;;5853:1;5849:2;5844:11;5841:1;5837:19;5832:2;5828;5824:11;5820:37;5817:63;;;5860:18;;:::i;:::-;5925:1;5921:2;5916:11;5913:1;5909:19;5904:2;5900;5896:11;5892:37;5889:63;;;5932:18;;:::i;:::-;-1:-1:-1;;;5972:9:1;;;;;5387:600;-1:-1:-1;;;5387:600:1:o;6339:125::-;6379:4;6407:1;6404;6401:8;6398:34;;;6412:18;;:::i;:::-;-1:-1:-1;6449:9:1;;6339:125::o;6469:266::-;6547:6;6600:2;6588:9;6579:7;6575:23;6571:32;6568:52;;;6616:1;6613;6606:12;6568:52;6655:9;6642:23;6674:31;6699:5;6674:31;:::i;7402:312::-;7481:6;7489;7542:2;7530:9;7521:7;7517:23;7513:32;7510:52;;;7558:1;7555;7548:12;7510:52;7587:9;7581:16;7571:26;;7640:2;7629:9;7625:18;7619:25;7653:31;7678:5;7653:31;:::i;:::-;7703:5;7693:15;;;7402:312;;;;;:::o;9464:274::-;9593:3;9631:6;9625:13;9647:53;9693:6;9688:3;9681:4;9673:6;9669:17;9647:53;:::i;:::-;9716:16;;;;;9464:274;-1:-1:-1;;9464:274:1:o;9743:219::-;9892:2;9881:9;9874:21;9855:4;9912:44;9952:2;9941:9;9937:18;9929:6;9912:44;:::i
Swarm Source
ipfs://8ebdce31eeaf21e0ea776375f4692ad1169419da3742cc989268723450ea8a0a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.