Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
OrderBookReader
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 1 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; import "../libraries/math/SafeMath.sol"; import "../core/interfaces/IOrderBookForReader.sol"; 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); IOrderBookForReader orderBook = IOrderBookForReader(_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); IOrderBookForReader orderBook = IOrderBookForReader(_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 getDecreaseOrdersV2( 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); IOrderBookForReader orderBook = IOrderBookForReader(_orderBookAddress); while (vars.i < _indices.length) { vars.index = _indices[vars.i]; (address collateralToken,address receiveToken, uint256 collateralDelta, address indexToken, uint256 sizeDelta, bool isLong, uint256 triggerPrice, bool triggerAboveThreshold, ) = // uint256 executionFee orderBook.getDecreaseOrderV2(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); addressProps[vars.i * vars.addressLength + 2] = (receiveToken); 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); IOrderBookForReader orderBook = IOrderBookForReader(_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); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.12 <0.9.0; interface IOrderBookForReader { 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 getDecreaseOrderV2(address _account, uint256 _orderIndex) external view returns ( address collateralToken, address receiveToken, uint256 collateralDelta, address indexToken, uint256 sizeDelta, bool isLong, uint256 triggerPrice, bool triggerAboveThreshold, uint256 executionFee ); }
// 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; } }
{ "metadata": { "bytecodeHash": "none", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 1 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
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":"getDecreaseOrdersV2","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
608060405234801561001057600080fd5b50611265806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630ce933b9146100515780632e181469146101a4578063c38ccd501461025e578063f0ebc97014610318575b600080fd5b61010b6004803603606081101561006757600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561009a57600080fd5b8201836020820111156100ac57600080fd5b803590602001918460208302840111600160201b831117156100cd57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506103d2945050505050565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561014f578181015183820152602001610137565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561018e578181015183820152602001610176565b5050505090500194505050505060405180910390f35b61010b600480360360608110156101ba57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156101ed57600080fd5b8201836020820111156101ff57600080fd5b803590602001918460208302840111600160201b8311171561022057600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061073a945050505050565b61010b6004803603606081101561027457600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156102a757600080fd5b8201836020820111156102b957600080fd5b803590602001918460208302840111600160201b831117156102da57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610adc945050505050565b61010b6004803603606081101561032e57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561036157600080fd5b82018360208201111561037357600080fd5b803590602001918460208302840111600160201b8311171561039457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610e7e945050505050565b6060806103dd611220565b6040518060a001604052806000815260200160008152602001866001600160a01b031681526020016005815260200160028152509050606084518260600151026001600160401b038111801561043257600080fd5b5060405190808252806020026020018201604052801561045c578160200160208202803683370190505b509050606085518360800151026001600160401b038111801561047e57600080fd5b506040519080825280602002602001820160405280156104a8578160200160208202803683370190505b509050875b86518451101561072c57868460000151815181106104c757fe5b60200260200101518460200181815250506000806000806000806000876001600160a01b031663026032ee8c604001518d602001516040518363ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506101006040518083038186803b15801561054157600080fd5b505afa158015610555573d6000803e3d6000fd5b505050506040513d61010081101561056c57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050509650965096509650965096509650858a8c606001518d6000015102815181106105e957fe5b602002602001018181525050838a8c606001518d60000151026001018151811061060f57fe5b6020026020010181815250508261062757600061062a565b60015b60ff168a8c606001518d60000151026002018151811061064657fe5b602002602001018181525050818a8c606001518d60000151026003018151811061066c57fe5b60200260200101818152505080610684576000610687565b60015b60ff168a8c606001518d6000015102600401815181106106a357fe5b60200260200101818152505086898c608001518d6000015102815181106106c657fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084898c608001518d60000151026001018151811061070057fe5b6001600160a01b0390921660209283029190910190910152505088516001018952506104ad9350505050565b509097909650945050505050565b606080610745611220565b6040518060a001604052806000815260200160008152602001866001600160a01b031681526020016005815260200160038152509050606084518260600151026001600160401b038111801561079a57600080fd5b506040519080825280602002602001820160405280156107c4578160200160208202803683370190505b509050606085518360800151026001600160401b03811180156107e657600080fd5b50604051908082528060200260200182016040528015610810578160200160208202803683370190505b509050875b86518451101561072c578684600001518151811061082f57fe5b6020026020010151846020018181525050600080600080600080600080886001600160a01b031663d0d40cd68d604001518e602001516040518363ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506101206040518083038186803b1580156108aa57600080fd5b505afa1580156108be573d6000803e3d6000fd5b505050506040513d6101208110156108d557600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505097509750975097509750975097509750848b8d606001518e60000151028151811061095e57fe5b602002602001018181525050838b8d606001518e60000151026001018151811061098457fe5b602002602001018181525050828b8d606001518e6000015102600201815181106109aa57fe5b602002602001018181525050816109c25760006109c5565b60015b60ff168b8d606001518e6000015102600301815181106109e157fe5b602002602001018181525050806109f95760006109fc565b60015b60ff168b8d606001518e600001510260040181518110610a1857fe5b602002602001018181525050878a8d608001518e600001510281518110610a3b57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050868a8d608001518e600001510260010181518110610a7557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050858a8d608001518e600001510260020181518110610aaf57fe5b6001600160a01b0390921660209283029190910190910152505089516001018a5250610815945050505050565b606080610ae7611220565b6040518060a001604052806000815260200160008152602001866001600160a01b031681526020016005815260200160038152509050606084518260600151026001600160401b0381118015610b3c57600080fd5b50604051908082528060200260200182016040528015610b66578160200160208202803683370190505b509050606085518360800151026001600160401b0381118015610b8857600080fd5b50604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509050875b86518451101561072c5786846000015181518110610bd157fe5b6020026020010151846020018181525050600080600080600080600080886001600160a01b031663d3bab1d18d604001518e602001516040518363ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506101206040518083038186803b158015610c4c57600080fd5b505afa158015610c60573d6000803e3d6000fd5b505050506040513d610120811015610c7757600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505097509750975097509750975097509750868b8d606001518e600001510281518110610d0057fe5b602002602001018181525050838b8d606001518e600001510260010181518110610d2657fe5b60200260200101818152505082610d3e576000610d41565b60015b60ff168b8d606001518e600001510260020181518110610d5d57fe5b602002602001018181525050818b8d606001518e600001510260030181518110610d8357fe5b60200260200101818152505080610d9b576000610d9e565b60015b60ff168b8d606001518e600001510260040181518110610dba57fe5b602002602001018181525050878a8d608001518e600001510281518110610ddd57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050858a8d608001518e600001510260010181518110610e1757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848a8d608001518e600001510260020181518110610e5157fe5b6001600160a01b0390921660209283029190910190910152505089516001018a5250610bb7945050505050565b606080610e89611220565b6040518060a001604052806000815260200160008152602001866001600160a01b031681526020016005815260200160038152509050606084518260600151026001600160401b0381118015610ede57600080fd5b50604051908082528060200260200182016040528015610f08578160200160208202803683370190505b509050606085518360800151026001600160401b0381118015610f2a57600080fd5b50604051908082528060200260200182016040528015610f54578160200160208202803683370190505b509050875b86518451101561072c5786846000015181518110610f7357fe5b6020026020010151846020018181525050600080600080600080600080886001600160a01b0316632701808c8d604001518e602001516040518363ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506101206040518083038186803b158015610fee57600080fd5b505afa158015611002573d6000803e3d6000fd5b505050506040513d61012081101561101957600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505097509750975097509750975097509750858b8d606001518e6000015102815181106110a257fe5b602002602001018181525050838b8d606001518e6000015102600101815181106110c857fe5b602002602001018181525050826110e05760006110e3565b60015b60ff168b8d606001518e6000015102600201815181106110ff57fe5b602002602001018181525050818b8d606001518e60000151026003018151811061112557fe5b6020026020010181815250508061113d576000611140565b60015b60ff168b8d606001518e60000151026004018151811061115c57fe5b602002602001018181525050878a8d608001518e60000151028151811061117f57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848a8d608001518e6000015102600101815181106111b957fe5b60200260200101906001600160a01b031690816001600160a01b031681525050868a8d608001518e6000015102600201815181106111f357fe5b6001600160a01b0390921660209283029190910190910152505089516001018a5250610f59945050505050565b6040518060a00160405280600081526020016000815260200160006001600160a01b031681526020016000815260200160008152509056fea164736f6c634300060c000a
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80630ce933b9146100515780632e181469146101a4578063c38ccd501461025e578063f0ebc97014610318575b600080fd5b61010b6004803603606081101561006757600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561009a57600080fd5b8201836020820111156100ac57600080fd5b803590602001918460208302840111600160201b831117156100cd57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506103d2945050505050565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561014f578181015183820152602001610137565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561018e578181015183820152602001610176565b5050505090500194505050505060405180910390f35b61010b600480360360608110156101ba57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156101ed57600080fd5b8201836020820111156101ff57600080fd5b803590602001918460208302840111600160201b8311171561022057600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061073a945050505050565b61010b6004803603606081101561027457600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156102a757600080fd5b8201836020820111156102b957600080fd5b803590602001918460208302840111600160201b831117156102da57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610adc945050505050565b61010b6004803603606081101561032e57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561036157600080fd5b82018360208201111561037357600080fd5b803590602001918460208302840111600160201b8311171561039457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610e7e945050505050565b6060806103dd611220565b6040518060a001604052806000815260200160008152602001866001600160a01b031681526020016005815260200160028152509050606084518260600151026001600160401b038111801561043257600080fd5b5060405190808252806020026020018201604052801561045c578160200160208202803683370190505b509050606085518360800151026001600160401b038111801561047e57600080fd5b506040519080825280602002602001820160405280156104a8578160200160208202803683370190505b509050875b86518451101561072c57868460000151815181106104c757fe5b60200260200101518460200181815250506000806000806000806000876001600160a01b031663026032ee8c604001518d602001516040518363ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506101006040518083038186803b15801561054157600080fd5b505afa158015610555573d6000803e3d6000fd5b505050506040513d61010081101561056c57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050509650965096509650965096509650858a8c606001518d6000015102815181106105e957fe5b602002602001018181525050838a8c606001518d60000151026001018151811061060f57fe5b6020026020010181815250508261062757600061062a565b60015b60ff168a8c606001518d60000151026002018151811061064657fe5b602002602001018181525050818a8c606001518d60000151026003018151811061066c57fe5b60200260200101818152505080610684576000610687565b60015b60ff168a8c606001518d6000015102600401815181106106a357fe5b60200260200101818152505086898c608001518d6000015102815181106106c657fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084898c608001518d60000151026001018151811061070057fe5b6001600160a01b0390921660209283029190910190910152505088516001018952506104ad9350505050565b509097909650945050505050565b606080610745611220565b6040518060a001604052806000815260200160008152602001866001600160a01b031681526020016005815260200160038152509050606084518260600151026001600160401b038111801561079a57600080fd5b506040519080825280602002602001820160405280156107c4578160200160208202803683370190505b509050606085518360800151026001600160401b03811180156107e657600080fd5b50604051908082528060200260200182016040528015610810578160200160208202803683370190505b509050875b86518451101561072c578684600001518151811061082f57fe5b6020026020010151846020018181525050600080600080600080600080886001600160a01b031663d0d40cd68d604001518e602001516040518363ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506101206040518083038186803b1580156108aa57600080fd5b505afa1580156108be573d6000803e3d6000fd5b505050506040513d6101208110156108d557600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505097509750975097509750975097509750848b8d606001518e60000151028151811061095e57fe5b602002602001018181525050838b8d606001518e60000151026001018151811061098457fe5b602002602001018181525050828b8d606001518e6000015102600201815181106109aa57fe5b602002602001018181525050816109c25760006109c5565b60015b60ff168b8d606001518e6000015102600301815181106109e157fe5b602002602001018181525050806109f95760006109fc565b60015b60ff168b8d606001518e600001510260040181518110610a1857fe5b602002602001018181525050878a8d608001518e600001510281518110610a3b57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050868a8d608001518e600001510260010181518110610a7557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050858a8d608001518e600001510260020181518110610aaf57fe5b6001600160a01b0390921660209283029190910190910152505089516001018a5250610815945050505050565b606080610ae7611220565b6040518060a001604052806000815260200160008152602001866001600160a01b031681526020016005815260200160038152509050606084518260600151026001600160401b0381118015610b3c57600080fd5b50604051908082528060200260200182016040528015610b66578160200160208202803683370190505b509050606085518360800151026001600160401b0381118015610b8857600080fd5b50604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509050875b86518451101561072c5786846000015181518110610bd157fe5b6020026020010151846020018181525050600080600080600080600080886001600160a01b031663d3bab1d18d604001518e602001516040518363ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506101206040518083038186803b158015610c4c57600080fd5b505afa158015610c60573d6000803e3d6000fd5b505050506040513d610120811015610c7757600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505097509750975097509750975097509750868b8d606001518e600001510281518110610d0057fe5b602002602001018181525050838b8d606001518e600001510260010181518110610d2657fe5b60200260200101818152505082610d3e576000610d41565b60015b60ff168b8d606001518e600001510260020181518110610d5d57fe5b602002602001018181525050818b8d606001518e600001510260030181518110610d8357fe5b60200260200101818152505080610d9b576000610d9e565b60015b60ff168b8d606001518e600001510260040181518110610dba57fe5b602002602001018181525050878a8d608001518e600001510281518110610ddd57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050858a8d608001518e600001510260010181518110610e1757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848a8d608001518e600001510260020181518110610e5157fe5b6001600160a01b0390921660209283029190910190910152505089516001018a5250610bb7945050505050565b606080610e89611220565b6040518060a001604052806000815260200160008152602001866001600160a01b031681526020016005815260200160038152509050606084518260600151026001600160401b0381118015610ede57600080fd5b50604051908082528060200260200182016040528015610f08578160200160208202803683370190505b509050606085518360800151026001600160401b0381118015610f2a57600080fd5b50604051908082528060200260200182016040528015610f54578160200160208202803683370190505b509050875b86518451101561072c5786846000015181518110610f7357fe5b6020026020010151846020018181525050600080600080600080600080886001600160a01b0316632701808c8d604001518e602001516040518363ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506101206040518083038186803b158015610fee57600080fd5b505afa158015611002573d6000803e3d6000fd5b505050506040513d61012081101561101957600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505097509750975097509750975097509750858b8d606001518e6000015102815181106110a257fe5b602002602001018181525050838b8d606001518e6000015102600101815181106110c857fe5b602002602001018181525050826110e05760006110e3565b60015b60ff168b8d606001518e6000015102600201815181106110ff57fe5b602002602001018181525050818b8d606001518e60000151026003018151811061112557fe5b6020026020010181815250508061113d576000611140565b60015b60ff168b8d606001518e60000151026004018151811061115c57fe5b602002602001018181525050878a8d608001518e60000151028151811061117f57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848a8d608001518e6000015102600101815181106111b957fe5b60200260200101906001600160a01b031690816001600160a01b031681525050868a8d608001518e6000015102600201815181106111f357fe5b6001600160a01b0390921660209283029190910190910152505089516001018a5250610f59945050505050565b6040518060a00160405280600081526020016000815260200160006001600160a01b031681526020016000815260200160008152509056fea164736f6c634300060c000a
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.