Overview
S Balance
S Value
-More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
OrderBookReader
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2024-12-19 */ // SPDX-License-Identifier: MIT pragma solidity 0.6.12; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } pragma solidity 0.6.12; interface IOrderBook { function getSwapOrder(address _account, uint256 _orderIndex) external view returns ( address path0, address path1, address path2, uint256 amountIn, uint256 minOut, uint256 triggerRatio, bool triggerAboveThreshold, bool shouldUnwrap, uint256 executionFee ); function getIncreaseOrder(address _account, uint256 _orderIndex) external view returns ( address purchaseToken, uint256 purchaseTokenAmount, address collateralToken, address indexToken, uint256 sizeDelta, bool isLong, uint256 triggerPrice, bool triggerAboveThreshold, uint256 executionFee ); function getDecreaseOrder(address _account, uint256 _orderIndex) external view returns ( address collateralToken, uint256 collateralDelta, address indexToken, uint256 sizeDelta, bool isLong, uint256 triggerPrice, bool triggerAboveThreshold, uint256 executionFee ); function executeSwapOrder(address, uint256, address payable) external; function executeDecreaseOrder(address, uint256, address payable) external; function executeIncreaseOrder(address, uint256, address payable) external; } pragma solidity 0.6.12; contract OrderBookReader { using SafeMath for uint256; struct Vars { uint256 i; uint256 index; address account; uint256 uintLength; uint256 addressLength; } function getIncreaseOrders( address payable _orderBookAddress, address _account, uint256[] memory _indices ) external view returns (uint256[] memory, address[] memory) { Vars memory vars = Vars(0, 0, _account, 5, 3); uint256[] memory uintProps = new uint256[](vars.uintLength * _indices.length); address[] memory addressProps = new address[](vars.addressLength * _indices.length); IOrderBook orderBook = IOrderBook(_orderBookAddress); while (vars.i < _indices.length) { vars.index = _indices[vars.i]; ( address purchaseToken, uint256 purchaseTokenAmount, address collateralToken, address indexToken, uint256 sizeDelta, bool isLong, uint256 triggerPrice, bool triggerAboveThreshold, // uint256 executionFee ) = orderBook.getIncreaseOrder(vars.account, vars.index); uintProps[vars.i * vars.uintLength] = uint256(purchaseTokenAmount); uintProps[vars.i * vars.uintLength + 1] = uint256(sizeDelta); uintProps[vars.i * vars.uintLength + 2] = uint256(isLong ? 1 : 0); uintProps[vars.i * vars.uintLength + 3] = uint256(triggerPrice); uintProps[vars.i * vars.uintLength + 4] = uint256(triggerAboveThreshold ? 1 : 0); addressProps[vars.i * vars.addressLength] = (purchaseToken); addressProps[vars.i * vars.addressLength + 1] = (collateralToken); addressProps[vars.i * vars.addressLength + 2] = (indexToken); vars.i++; } return (uintProps, addressProps); } function getDecreaseOrders( address payable _orderBookAddress, address _account, uint256[] memory _indices ) external view returns (uint256[] memory, address[] memory) { Vars memory vars = Vars(0, 0, _account, 5, 2); uint256[] memory uintProps = new uint256[](vars.uintLength * _indices.length); address[] memory addressProps = new address[](vars.addressLength * _indices.length); IOrderBook orderBook = IOrderBook(_orderBookAddress); while (vars.i < _indices.length) { vars.index = _indices[vars.i]; ( address collateralToken, uint256 collateralDelta, address indexToken, uint256 sizeDelta, bool isLong, uint256 triggerPrice, bool triggerAboveThreshold, // uint256 executionFee ) = orderBook.getDecreaseOrder(vars.account, vars.index); uintProps[vars.i * vars.uintLength] = uint256(collateralDelta); uintProps[vars.i * vars.uintLength + 1] = uint256(sizeDelta); uintProps[vars.i * vars.uintLength + 2] = uint256(isLong ? 1 : 0); uintProps[vars.i * vars.uintLength + 3] = uint256(triggerPrice); uintProps[vars.i * vars.uintLength + 4] = uint256(triggerAboveThreshold ? 1 : 0); addressProps[vars.i * vars.addressLength] = (collateralToken); addressProps[vars.i * vars.addressLength + 1] = (indexToken); vars.i++; } return (uintProps, addressProps); } function getSwapOrders( address payable _orderBookAddress, address _account, uint256[] memory _indices ) external view returns (uint256[] memory, address[] memory) { Vars memory vars = Vars(0, 0, _account, 5, 3); uint256[] memory uintProps = new uint256[](vars.uintLength * _indices.length); address[] memory addressProps = new address[](vars.addressLength * _indices.length); IOrderBook orderBook = IOrderBook(_orderBookAddress); while (vars.i < _indices.length) { vars.index = _indices[vars.i]; ( address path0, address path1, address path2, uint256 amountIn, uint256 minOut, uint256 triggerRatio, bool triggerAboveThreshold, bool shouldUnwrap, // uint256 executionFee ) = orderBook.getSwapOrder(vars.account, vars.index); uintProps[vars.i * vars.uintLength] = uint256(amountIn); uintProps[vars.i * vars.uintLength + 1] = uint256(minOut); uintProps[vars.i * vars.uintLength + 2] = uint256(triggerRatio); uintProps[vars.i * vars.uintLength + 3] = uint256(triggerAboveThreshold ? 1 : 0); uintProps[vars.i * vars.uintLength + 4] = uint256(shouldUnwrap ? 1 : 0); addressProps[vars.i * vars.addressLength] = (path0); addressProps[vars.i * vars.addressLength + 1] = (path1); addressProps[vars.i * vars.addressLength + 2] = (path2); vars.i++; } return (uintProps, addressProps); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"_orderBookAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256[]","name":"_indices","type":"uint256[]"}],"name":"getDecreaseOrders","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_orderBookAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256[]","name":"_indices","type":"uint256[]"}],"name":"getIncreaseOrders","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_orderBookAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256[]","name":"_indices","type":"uint256[]"}],"name":"getSwapOrders","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50610e27806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630ce933b9146100465780632e18146914610199578063c38ccd5014610253575b600080fd5b6101006004803603606081101561005c57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561008f57600080fd5b8201836020820111156100a157600080fd5b803590602001918460208302840111600160201b831117156100c257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061030d945050505050565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561014457818101518382015260200161012c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561018357818101518382015260200161016b565b5050505090500194505050505060405180910390f35b610100600480360360608110156101af57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156101e257600080fd5b8201836020820111156101f457600080fd5b803590602001918460208302840111600160201b8311171561021557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610675945050505050565b6101006004803603606081101561026957600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561029c57600080fd5b8201836020820111156102ae57600080fd5b803590602001918460208302840111600160201b831117156102cf57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a17945050505050565b606080610318610db9565b6040518060a001604052806000815260200160008152602001866001600160a01b031681526020016005815260200160028152509050606084518260600151026001600160401b038111801561036d57600080fd5b50604051908082528060200260200182016040528015610397578160200160208202803683370190505b509050606085518360800151026001600160401b03811180156103b957600080fd5b506040519080825280602002602001820160405280156103e3578160200160208202803683370190505b509050875b865184511015610667578684600001518151811061040257fe5b60200260200101518460200181815250506000806000806000806000876001600160a01b031663026032ee8c604001518d602001516040518363ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506101006040518083038186803b15801561047c57600080fd5b505afa158015610490573d6000803e3d6000fd5b505050506040513d6101008110156104a757600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050509650965096509650965096509650858a8c606001518d60000151028151811061052457fe5b602002602001018181525050838a8c606001518d60000151026001018151811061054a57fe5b60200260200101818152505082610562576000610565565b60015b60ff168a8c606001518d60000151026002018151811061058157fe5b602002602001018181525050818a8c606001518d6000015102600301815181106105a757fe5b602002602001018181525050806105bf5760006105c2565b60015b60ff168a8c606001518d6000015102600401815181106105de57fe5b60200260200101818152505086898c608001518d60000151028151811061060157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084898c608001518d60000151026001018151811061063b57fe5b6001600160a01b0390921660209283029190910190910152505088516001018952506103e89350505050565b509097909650945050505050565b606080610680610db9565b6040518060a001604052806000815260200160008152602001866001600160a01b031681526020016005815260200160038152509050606084518260600151026001600160401b03811180156106d557600080fd5b506040519080825280602002602001820160405280156106ff578160200160208202803683370190505b509050606085518360800151026001600160401b038111801561072157600080fd5b5060405190808252806020026020018201604052801561074b578160200160208202803683370190505b509050875b865184511015610667578684600001518151811061076a57fe5b6020026020010151846020018181525050600080600080600080600080886001600160a01b031663d0d40cd68d604001518e602001516040518363ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506101206040518083038186803b1580156107e557600080fd5b505afa1580156107f9573d6000803e3d6000fd5b505050506040513d61012081101561081057600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505097509750975097509750975097509750848b8d606001518e60000151028151811061089957fe5b602002602001018181525050838b8d606001518e6000015102600101815181106108bf57fe5b602002602001018181525050828b8d606001518e6000015102600201815181106108e557fe5b602002602001018181525050816108fd576000610900565b60015b60ff168b8d606001518e60000151026003018151811061091c57fe5b60200260200101818152505080610934576000610937565b60015b60ff168b8d606001518e60000151026004018151811061095357fe5b602002602001018181525050878a8d608001518e60000151028151811061097657fe5b60200260200101906001600160a01b031690816001600160a01b031681525050868a8d608001518e6000015102600101815181106109b057fe5b60200260200101906001600160a01b031690816001600160a01b031681525050858a8d608001518e6000015102600201815181106109ea57fe5b6001600160a01b0390921660209283029190910190910152505089516001018a5250610750945050505050565b606080610a22610db9565b6040518060a001604052806000815260200160008152602001866001600160a01b031681526020016005815260200160038152509050606084518260600151026001600160401b0381118015610a7757600080fd5b50604051908082528060200260200182016040528015610aa1578160200160208202803683370190505b509050606085518360800151026001600160401b0381118015610ac357600080fd5b50604051908082528060200260200182016040528015610aed578160200160208202803683370190505b509050875b8651845110156106675786846000015181518110610b0c57fe5b6020026020010151846020018181525050600080600080600080600080886001600160a01b031663d3bab1d18d604001518e602001516040518363ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506101206040518083038186803b158015610b8757600080fd5b505afa158015610b9b573d6000803e3d6000fd5b505050506040513d610120811015610bb257600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505097509750975097509750975097509750868b8d606001518e600001510281518110610c3b57fe5b602002602001018181525050838b8d606001518e600001510260010181518110610c6157fe5b60200260200101818152505082610c79576000610c7c565b60015b60ff168b8d606001518e600001510260020181518110610c9857fe5b602002602001018181525050818b8d606001518e600001510260030181518110610cbe57fe5b60200260200101818152505080610cd6576000610cd9565b60015b60ff168b8d606001518e600001510260040181518110610cf557fe5b602002602001018181525050878a8d608001518e600001510281518110610d1857fe5b60200260200101906001600160a01b031690816001600160a01b031681525050858a8d608001518e600001510260010181518110610d5257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848a8d608001518e600001510260020181518110610d8c57fe5b6001600160a01b0390921660209283029190910190910152505089516001018a5250610af2945050505050565b6040518060a00160405280600081526020016000815260200160006001600160a01b031681526020016000815260200160008152509056fea2646970667358221220e0c78eb10384a92514f889693dd26b03021d3a393af25635c1d9fb1b2c52fad064736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630ce933b9146100465780632e18146914610199578063c38ccd5014610253575b600080fd5b6101006004803603606081101561005c57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561008f57600080fd5b8201836020820111156100a157600080fd5b803590602001918460208302840111600160201b831117156100c257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061030d945050505050565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561014457818101518382015260200161012c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561018357818101518382015260200161016b565b5050505090500194505050505060405180910390f35b610100600480360360608110156101af57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156101e257600080fd5b8201836020820111156101f457600080fd5b803590602001918460208302840111600160201b8311171561021557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610675945050505050565b6101006004803603606081101561026957600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561029c57600080fd5b8201836020820111156102ae57600080fd5b803590602001918460208302840111600160201b831117156102cf57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a17945050505050565b606080610318610db9565b6040518060a001604052806000815260200160008152602001866001600160a01b031681526020016005815260200160028152509050606084518260600151026001600160401b038111801561036d57600080fd5b50604051908082528060200260200182016040528015610397578160200160208202803683370190505b509050606085518360800151026001600160401b03811180156103b957600080fd5b506040519080825280602002602001820160405280156103e3578160200160208202803683370190505b509050875b865184511015610667578684600001518151811061040257fe5b60200260200101518460200181815250506000806000806000806000876001600160a01b031663026032ee8c604001518d602001516040518363ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506101006040518083038186803b15801561047c57600080fd5b505afa158015610490573d6000803e3d6000fd5b505050506040513d6101008110156104a757600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050509650965096509650965096509650858a8c606001518d60000151028151811061052457fe5b602002602001018181525050838a8c606001518d60000151026001018151811061054a57fe5b60200260200101818152505082610562576000610565565b60015b60ff168a8c606001518d60000151026002018151811061058157fe5b602002602001018181525050818a8c606001518d6000015102600301815181106105a757fe5b602002602001018181525050806105bf5760006105c2565b60015b60ff168a8c606001518d6000015102600401815181106105de57fe5b60200260200101818152505086898c608001518d60000151028151811061060157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084898c608001518d60000151026001018151811061063b57fe5b6001600160a01b0390921660209283029190910190910152505088516001018952506103e89350505050565b509097909650945050505050565b606080610680610db9565b6040518060a001604052806000815260200160008152602001866001600160a01b031681526020016005815260200160038152509050606084518260600151026001600160401b03811180156106d557600080fd5b506040519080825280602002602001820160405280156106ff578160200160208202803683370190505b509050606085518360800151026001600160401b038111801561072157600080fd5b5060405190808252806020026020018201604052801561074b578160200160208202803683370190505b509050875b865184511015610667578684600001518151811061076a57fe5b6020026020010151846020018181525050600080600080600080600080886001600160a01b031663d0d40cd68d604001518e602001516040518363ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506101206040518083038186803b1580156107e557600080fd5b505afa1580156107f9573d6000803e3d6000fd5b505050506040513d61012081101561081057600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505097509750975097509750975097509750848b8d606001518e60000151028151811061089957fe5b602002602001018181525050838b8d606001518e6000015102600101815181106108bf57fe5b602002602001018181525050828b8d606001518e6000015102600201815181106108e557fe5b602002602001018181525050816108fd576000610900565b60015b60ff168b8d606001518e60000151026003018151811061091c57fe5b60200260200101818152505080610934576000610937565b60015b60ff168b8d606001518e60000151026004018151811061095357fe5b602002602001018181525050878a8d608001518e60000151028151811061097657fe5b60200260200101906001600160a01b031690816001600160a01b031681525050868a8d608001518e6000015102600101815181106109b057fe5b60200260200101906001600160a01b031690816001600160a01b031681525050858a8d608001518e6000015102600201815181106109ea57fe5b6001600160a01b0390921660209283029190910190910152505089516001018a5250610750945050505050565b606080610a22610db9565b6040518060a001604052806000815260200160008152602001866001600160a01b031681526020016005815260200160038152509050606084518260600151026001600160401b0381118015610a7757600080fd5b50604051908082528060200260200182016040528015610aa1578160200160208202803683370190505b509050606085518360800151026001600160401b0381118015610ac357600080fd5b50604051908082528060200260200182016040528015610aed578160200160208202803683370190505b509050875b8651845110156106675786846000015181518110610b0c57fe5b6020026020010151846020018181525050600080600080600080600080886001600160a01b031663d3bab1d18d604001518e602001516040518363ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506101206040518083038186803b158015610b8757600080fd5b505afa158015610b9b573d6000803e3d6000fd5b505050506040513d610120811015610bb257600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505097509750975097509750975097509750868b8d606001518e600001510281518110610c3b57fe5b602002602001018181525050838b8d606001518e600001510260010181518110610c6157fe5b60200260200101818152505082610c79576000610c7c565b60015b60ff168b8d606001518e600001510260020181518110610c9857fe5b602002602001018181525050818b8d606001518e600001510260030181518110610cbe57fe5b60200260200101818152505080610cd6576000610cd9565b60015b60ff168b8d606001518e600001510260040181518110610cf557fe5b602002602001018181525050878a8d608001518e600001510281518110610d1857fe5b60200260200101906001600160a01b031690816001600160a01b031681525050858a8d608001518e600001510260010181518110610d5257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848a8d608001518e600001510260020181518110610d8c57fe5b6001600160a01b0390921660209283029190910190910152505089516001018a5250610af2945050505050565b6040518060a00160405280600081526020016000815260200160006001600160a01b031681526020016000815260200160008152509056fea2646970667358221220e0c78eb10384a92514f889693dd26b03021d3a393af25635c1d9fb1b2c52fad064736f6c634300060c0033
Deployed Bytecode Sourcemap
6760:5359:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8763:1643;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8763:1643:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8763:1643:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8763:1643:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8763:1643:0;;-1:-1:-1;8763:1643:0;;-1:-1:-1;;;;;8763:1643:0:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10414:1702;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10414:1702:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10414:1702:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10414:1702:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10414:1702:0;;-1:-1:-1;10414:1702:0;;-1:-1:-1;;;;;10414:1702:0:i;6986:1769::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6986:1769:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6986:1769:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6986:1769:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6986:1769:0;;-1:-1:-1;6986:1769:0;;-1:-1:-1;;;;;6986:1769:0:i;8763:1643::-;8928:16;8946;8975;;:::i;:::-;8994:26;;;;;;;;8999:1;8994:26;;;;9002:1;8994:26;;;;9005:8;-1:-1:-1;;;;;8994:26:0;;;;;9015:1;8994:26;;;;9018:1;8994:26;;;8975:45;;9033:26;9094:8;:15;9076:4;:15;;;:33;-1:-1:-1;;;;;9062:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9062:48:0;;9033:77;;9121:29;9188:8;:15;9167:4;:18;;;:36;-1:-1:-1;;;;;9153:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9153:51:0;-1:-1:-1;9121:83:0;-1:-1:-1;9251:17:0;9282:1072;9298:15;;9289:6;;:24;9282:1072;;;9343:8;9352:4;:6;;;9343:16;;;;;;;;;;;;;;9330:4;:10;;:29;;;;;9393:23;9435;9477:18;9514:17;9550:11;9580:20;9619:26;9705:9;-1:-1:-1;;;;;9705:26:0;;9732:4;:12;;;9746:4;:10;;;9705:52;;;;;;;;;;;;;-1:-1:-1;;;;;9705:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9374:383;;;;;;;;;;;;;;;9820:15;9774:9;9793:4;:15;;;9784:4;:6;;;:24;9774:35;;;;;;;;;;;;;:62;;;;;9901:9;9851;9870:4;:15;;;9861:4;:6;;;:24;9888:1;9861:28;9851:39;;;;;;;;;;;;;:60;;;;;9976:6;:14;;9989:1;9976:14;;;9985:1;9976:14;9968:23;;9926:9;9945:4;:15;;;9936:4;:6;;;:24;9963:1;9936:28;9926:39;;;;;;;;;;;;;:65;;;;;10056:12;10006:9;10025:4;:15;;;10016:4;:6;;;:24;10043:1;10016:28;10006:39;;;;;;;;;;;;;:63;;;;;10134:21;:29;;10162:1;10134:29;;;10158:1;10134:29;10126:38;;10084:9;10103:4;:15;;;10094:4;:6;;;:24;10121:1;10094:28;10084:39;;;;;;;;;;;;;:80;;;;;10226:15;10181:12;10203:4;:18;;;10194:4;:6;;;:27;10181:41;;;;;;;;;;;;;:61;-1:-1:-1;;;;;10181:61:0;;;-1:-1:-1;;;;;10181:61:0;;;;;10306:10;10257:12;10279:4;:18;;;10270:4;:6;;;:27;10300:1;10270:31;10257:45;;;;;;;;-1:-1:-1;;;;;10257:60:0;;;:45;;;;;;;;;;;:60;-1:-1:-1;;10334:8:0;;;;;;-1:-1:-1;9282:1072:0;;-1:-1:-1;;;;9282:1072:0;;-1:-1:-1;10374:9:0;;;;-1:-1:-1;8763:1643:0;-1:-1:-1;;;;;8763:1643:0:o;10414:1702::-;10575:16;10593;10622;;:::i;:::-;10641:26;;;;;;;;10646:1;10641:26;;;;10649:1;10641:26;;;;10652:8;-1:-1:-1;;;;;10641:26:0;;;;;10662:1;10641:26;;;;10665:1;10641:26;;;10622:45;;10680:26;10741:8;:15;10723:4;:15;;;:33;-1:-1:-1;;;;;10709:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10709:48:0;;10680:77;;10768:29;10835:8;:15;10814:4;:18;;;:36;-1:-1:-1;;;;;10800:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10800:51:0;-1:-1:-1;10768:83:0;-1:-1:-1;10898:17:0;10929:1135;10945:15;;10936:6;;:24;10929:1135;;;10990:8;10999:4;:6;;;10990:16;;;;;;;;;;;;;;10977:4;:10;;:29;;;;;11040:13;11072;11104;11136:16;11172:14;11206:20;11246:26;11291:17;11368:9;-1:-1:-1;;;;;11368:22:0;;11391:4;:12;;;11405:4;:10;;;11368:48;;;;;;;;;;;;;-1:-1:-1;;;;;11368:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11021:395;;;;;;;;;;;;;;;;;11479:8;11433:9;11452:4;:15;;;11443:4;:6;;;:24;11433:35;;;;;;;;;;;;;:55;;;;;11553:6;11503:9;11522:4;:15;;;11513:4;:6;;;:24;11540:1;11513:28;11503:39;;;;;;;;;;;;;:57;;;;;11625:12;11575:9;11594:4;:15;;;11585:4;:6;;;:24;11612:1;11585:28;11575:39;;;;;;;;;;;;;:63;;;;;11703:21;:29;;11731:1;11703:29;;;11727:1;11703:29;11695:38;;11653:9;11672:4;:15;;;11663:4;:6;;;:24;11690:1;11663:28;11653:39;;;;;;;;;;;;;:80;;;;;11798:12;:20;;11817:1;11798:20;;;11813:1;11798:20;11790:29;;11748:9;11767:4;:15;;;11758:4;:6;;;:24;11785:1;11758:28;11748:39;;;;;;;;;;;;;:71;;;;;11881:5;11836:12;11858:4;:18;;;11849:4;:6;;;:27;11836:41;;;;;;;;;;;;;:51;-1:-1:-1;;;;;11836:51:0;;;-1:-1:-1;;;;;11836:51:0;;;;;11951:5;11902:12;11924:4;:18;;;11915:4;:6;;;:27;11945:1;11915:31;11902:45;;;;;;;;;;;;;:55;-1:-1:-1;;;;;11902:55:0;;;-1:-1:-1;;;;;11902:55:0;;;;;12021:5;11972:12;11994:4;:18;;;11985:4;:6;;;:27;12015:1;11985:31;11972:45;;;;;;;;-1:-1:-1;;;;;11972:55:0;;;:45;;;;;;;;;;;:55;-1:-1:-1;;12044:8:0;;;;;;-1:-1:-1;10929:1135:0;;-1:-1:-1;;;;;10929:1135:0;6986:1769;7151:16;7169;7198;;:::i;:::-;7217:26;;;;;;;;7222:1;7217:26;;;;7225:1;7217:26;;;;7228:8;-1:-1:-1;;;;;7217:26:0;;;;;7238:1;7217:26;;;;7241:1;7217:26;;;7198:45;;7256:26;7317:8;:15;7299:4;:15;;;:33;-1:-1:-1;;;;;7285:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7285:48:0;;7256:77;;7344:29;7411:8;:15;7390:4;:18;;;:36;-1:-1:-1;;;;;7376:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7376:51:0;-1:-1:-1;7344:83:0;-1:-1:-1;7474:17:0;7505:1198;7521:15;;7512:6;;:24;7505:1198;;;7566:8;7575:4;:6;;;7566:16;;;;;;;;;;;;;;7553:4;:10;;:29;;;;;7616:21;7656:27;7702:23;7744:18;7781:17;7817:11;7847:20;7886:26;7972:9;-1:-1:-1;;;;;7972:26:0;;7999:4;:12;;;8013:4;:10;;;7972:52;;;;;;;;;;;;;-1:-1:-1;;;;;7972:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7597:427;;;;;;;;;;;;;;;;;8087:19;8041:9;8060:4;:15;;;8051:4;:6;;;:24;8041:35;;;;;;;;;;;;;:66;;;;;8172:9;8122;8141:4;:15;;;8132:4;:6;;;:24;8159:1;8132:28;8122:39;;;;;;;;;;;;;:60;;;;;8247:6;:14;;8260:1;8247:14;;;8256:1;8247:14;8239:23;;8197:9;8216:4;:15;;;8207:4;:6;;;:24;8234:1;8207:28;8197:39;;;;;;;;;;;;;:65;;;;;8327:12;8277:9;8296:4;:15;;;8287:4;:6;;;:24;8314:1;8287:28;8277:39;;;;;;;;;;;;;:63;;;;;8405:21;:29;;8433:1;8405:29;;;8429:1;8405:29;8397:38;;8355:9;8374:4;:15;;;8365:4;:6;;;:24;8392:1;8365:28;8355:39;;;;;;;;;;;;;:80;;;;;8497:13;8452:12;8474:4;:18;;;8465:4;:6;;;:27;8452:41;;;;;;;;;;;;;:59;-1:-1:-1;;;;;8452:59:0;;;-1:-1:-1;;;;;8452:59:0;;;;;8575:15;8526:12;8548:4;:18;;;8539:4;:6;;;:27;8569:1;8539:31;8526:45;;;;;;;;;;;;;:65;-1:-1:-1;;;;;8526:65:0;;;-1:-1:-1;;;;;8526:65:0;;;;;8655:10;8606:12;8628:4;:18;;;8619:4;:6;;;:27;8649:1;8619:31;8606:45;;;;;;;;-1:-1:-1;;;;;8606:60:0;;;:45;;;;;;;;;;;:60;-1:-1:-1;;8683:8:0;;;;;;-1:-1:-1;7505:1198:0;;-1:-1:-1;;;;;7505:1198:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://e0c78eb10384a92514f889693dd26b03021d3a393af25635c1d9fb1b2c52fad0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.