Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
UserProxy
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity ^0.6.5; import "./UserProxyStorage.sol"; /** * @dev UserProxy contract */ contract UserProxy { // Below are the variables which consume storage slots. address public operator; string public version; // Current version of the contract receive() external payable {} /************************************************************ * Access control and ownership management * *************************************************************/ modifier onlyOperator() { require(operator == msg.sender, "UserProxy: not the operator"); _; } function transferOwnership(address _newOperator) external onlyOperator { require(_newOperator != address(0), "UserProxy: operator can not be zero address"); operator = _newOperator; } /************************************************************ * Constructor and init functions * *************************************************************/ /// @dev Replacing constructor and initialize the contract. This function should only be called once. function initialize(address _operator) external { require(_operator != address(0), "UserProxy: _operator should not be 0"); require( keccak256(abi.encodePacked(version)) == keccak256(abi.encodePacked("")), "UserProxy: not upgrading from default version" ); // Set operator operator = _operator; // Upgrade version version = "5.0.0"; } /************************************************************ * Getter functions * *************************************************************/ function ammWrapperAddr() public view returns (address) { return AMMWrapperStorage.getStorage().ammWrapperAddr; } function isAMMEnabled() public view returns (bool) { return AMMWrapperStorage.getStorage().isEnabled; } function pmmAddr() public view returns (address) { return PMMStorage.getStorage().pmmAddr; } function isPMMEnabled() public view returns (bool) { return PMMStorage.getStorage().isEnabled; } /************************************************************ * Management functions for Operator * *************************************************************/ function setAMMStatus(bool _enable) public onlyOperator { AMMWrapperStorage.getStorage().isEnabled = _enable; } /** * @dev Update AMMWrapper contract address. Used only when ABI of AMMWrapeer remain unchanged. * Otherwise, UserProxy contract should be upgraded altogether. */ function upgradeAMMWrapper(address _newAMMWrapperAddr, bool _enable) external onlyOperator { AMMWrapperStorage.getStorage().ammWrapperAddr = _newAMMWrapperAddr; AMMWrapperStorage.getStorage().isEnabled = _enable; } function setPMMStatus(bool _enable) public onlyOperator { PMMStorage.getStorage().isEnabled = _enable; } /** * @dev Update PMM contract address. Used only when ABI of PMM remain unchanged. * Otherwise, UserProxy contract should be upgraded altogether. */ function upgradePMM(address _newPMMAddr, bool _enable) external onlyOperator { PMMStorage.getStorage().pmmAddr = _newPMMAddr; PMMStorage.getStorage().isEnabled = _enable; } /************************************************************ * External functions * *************************************************************/ /** * @dev proxy the call to AMM */ function toAMM(bytes calldata _payload) external payable { require(isAMMEnabled(), "UserProxy: AMM is disabled"); (bool callSucceed,) = ammWrapperAddr().call{value: msg.value}(_payload); if (callSucceed == false) { // Get the error message returned assembly { let ptr := mload(0x40) let size := returndatasize() returndatacopy(ptr, 0, size) revert(ptr, size) } } } /** * @dev proxy the call to PMM */ function toPMM(bytes calldata _payload) external payable { require(isPMMEnabled(), "UserProxy: PMM is disabled"); (bool callSucceed,) = pmmAddr().call{value: msg.value}(_payload); if (callSucceed == false) { // Get the error message returned assembly { let ptr := mload(0x40) let size := returndatasize() returndatacopy(ptr, 0, size) revert(ptr, size) } } } }
pragma solidity ^0.6.5; pragma experimental ABIEncoderV2; library AMMWrapperStorage { bytes32 private constant STORAGE_SLOT = 0xbf49677e3150252dfa801a673d2d5ec21eaa360a4674864e55e79041e3f65a6b; /// @dev Storage bucket for proxy contract. struct Storage { // The address of the AMMWrapper contract. address ammWrapperAddr; // Is AMM enabled bool isEnabled; } /// @dev Get the storage bucket for this contract. function getStorage() internal pure returns (Storage storage stor) { assert(STORAGE_SLOT == bytes32(uint256(keccak256("userproxy.ammwrapper.storage")) - 1)); bytes32 slot = STORAGE_SLOT; // Dip into assembly to change the slot pointed to by the local // variable `stor`. // See https://solidity.readthedocs.io/en/v0.6.8/assembly.html?highlight=slot#access-to-external-variables-functions-and-libraries assembly { stor_slot := slot } } } library PMMStorage { bytes32 private constant STORAGE_SLOT = 0x8f135983375ba6442123d61647e7325c1753eabc2e038e44d3b888a970def89a; /// @dev Storage bucket for proxy contract. struct Storage { // The address of the PMM contract. address pmmAddr; // Is PMM enabled bool isEnabled; } /// @dev Get the storage bucket for this contract. function getStorage() internal pure returns (Storage storage stor) { assert(STORAGE_SLOT == bytes32(uint256(keccak256("userproxy.pmm.storage")) - 1)); bytes32 slot = STORAGE_SLOT; // Dip into assembly to change the slot pointed to by the local // variable `stor`. // See https://solidity.readthedocs.io/en/v0.6.8/assembly.html?highlight=slot#access-to-external-variables-functions-and-libraries assembly { stor_slot := slot } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"name":"ammWrapperAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isAMMEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPMMEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pmmAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setAMMStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setPMMStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"toAMM","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"toPMM","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOperator","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAMMWrapperAddr","type":"address"},{"internalType":"bool","name":"_enable","type":"bool"}],"name":"upgradeAMMWrapper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newPMMAddr","type":"address"},{"internalType":"bool","name":"_enable","type":"bool"}],"name":"upgradePMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b50610c72806100206000396000f3fe6080604052600436106100e15760003560e01c8063a32fe0a11161007f578063c3e9207511610059578063c3e9207514610315578063c4d66de814610350578063e47d166c14610383578063f2fde38b146103f3576100e8565b8063a32fe0a11461027b578063b6f732ae146102eb578063bbd3f63814610300576100e8565b806354fd4d50116100bb57806354fd4d5014610182578063570ca7351461020c5780637f54479a1461023d5780638014bd9714610266576100e8565b806341fc048d146100ed57806346f041701461011b5780634daadf1214610156576100e8565b366100e857005b600080fd5b3480156100f957600080fd5b506101196004803603602081101561011057600080fd5b50351515610426565b005b34801561012757600080fd5b506101196004803603604081101561013e57600080fd5b506001600160a01b03813516906020013515156104ab565b34801561016257600080fd5b506101196004803603602081101561017957600080fd5b50351515610565565b34801561018e57600080fd5b506101976105cd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d15781810151838201526020016101b9565b50505050905090810190601f1680156101fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021857600080fd5b5061022161065a565b604080516001600160a01b039092168252519081900360200190f35b34801561024957600080fd5b50610252610669565b604080519115158252519081900360200190f35b34801561027257600080fd5b50610221610683565b6101196004803603602081101561029157600080fd5b8101906020810181356401000000008111156102ac57600080fd5b8201836020820111156102be57600080fd5b803590602001918460018302840111640100000000831117156102e057600080fd5b50909250905061069c565b3480156102f757600080fd5b5061022161077d565b34801561030c57600080fd5b50610252610787565b34801561032157600080fd5b506101196004803603604081101561033857600080fd5b506001600160a01b0381351690602001351515610791565b34801561035c57600080fd5b506101196004803603602081101561037357600080fd5b50356001600160a01b031661082d565b6101196004803603602081101561039957600080fd5b8101906020810181356401000000008111156103b457600080fd5b8201836020820111156103c657600080fd5b803590602001918460018302840111640100000000831117156103e857600080fd5b5090925090506109af565b3480156103ff57600080fd5b506101196004803603602081101561041657600080fd5b50356001600160a01b0316610a12565b6000546001600160a01b03163314610485576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b8061048e610ae5565b8054911515600160a01b0260ff60a01b1990921691909117905550565b6000546001600160a01b0316331461050a576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b81610513610b09565b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905580610547610b09565b8054911515600160a01b0260ff60a01b199092169190911790555050565b6000546001600160a01b031633146105c4576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b8061048e610b09565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106525780601f1061062757610100808354040283529160200191610652565b820191906000526020600020905b81548152906001019060200180831161063557829003601f168201915b505050505081565b6000546001600160a01b031681565b6000610673610b09565b54600160a01b900460ff16919050565b600061068d610b09565b546001600160a01b0316905090565b6106a4610669565b6106f5576040805162461bcd60e51b815260206004820152601a60248201527f5573657250726f78793a20504d4d2069732064697361626c6564000000000000604482015290519081900360640190fd5b60006106ff610683565b6001600160a01b0316348484604051808383808284376040519201945060009350909150508083038185875af1925050503d806000811461075c576040519150601f19603f3d011682016040523d82523d6000602084013e610761565b606091505b509091505080610778576040513d806000833e8082fd5b505050565b600061068d610ae5565b6000610673610ae5565b6000546001600160a01b031633146107f0576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b816107f9610ae5565b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905580610547610ae5565b6001600160a01b0381166108725760405162461bcd60e51b8152600401808060200182810382526024815260200180610bec6024913960400191505060405180910390fd5b60408051600081526020810180835281519020600180549193909201908190839060026000196101008385161502019091160480156108e85780601f106108c65761010080835404028352918201916108e8565b820191906000526020600020905b8154815290600101906020018083116108d4575b5050915050604051602081830303815290604052805190602001201461093f5760405162461bcd60e51b815260040180806020018281038252602d815260200180610c10602d913960400191505060405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556040805180820190915260058082527f352e302e3000000000000000000000000000000000000000000000000000000060209092019182526109ab91600191610b2d565b5050565b6109b7610787565b610a08576040805162461bcd60e51b815260206004820152601a60248201527f5573657250726f78793a20414d4d2069732064697361626c6564000000000000604482015290519081900360640190fd5b60006106ff61077d565b6000546001600160a01b03163314610a71576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b6001600160a01b038116610ab65760405162461bcd60e51b815260040180806020018281038252602b815260200180610bc1602b913960400191505060405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b7fbf49677e3150252dfa801a673d2d5ec21eaa360a4674864e55e79041e3f65a6b90565b7f8f135983375ba6442123d61647e7325c1753eabc2e038e44d3b888a970def89a90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610b6e57805160ff1916838001178555610b9b565b82800160010185558215610b9b579182015b82811115610b9b578251825591602001919060010190610b80565b50610ba7929150610bab565b5090565b5b80821115610ba75760008155600101610bac56fe5573657250726f78793a206f70657261746f722063616e206e6f74206265207a65726f20616464726573735573657250726f78793a205f6f70657261746f722073686f756c64206e6f7420626520305573657250726f78793a206e6f7420757067726164696e672066726f6d2064656661756c742076657273696f6ea2646970667358221220d4e114e9b035618b38334d1c69aebe0df73785ba4cc08466cc7c7bc9cc4b5df664736f6c634300060c0033
Deployed Bytecode
0x6080604052600436106100e15760003560e01c8063a32fe0a11161007f578063c3e9207511610059578063c3e9207514610315578063c4d66de814610350578063e47d166c14610383578063f2fde38b146103f3576100e8565b8063a32fe0a11461027b578063b6f732ae146102eb578063bbd3f63814610300576100e8565b806354fd4d50116100bb57806354fd4d5014610182578063570ca7351461020c5780637f54479a1461023d5780638014bd9714610266576100e8565b806341fc048d146100ed57806346f041701461011b5780634daadf1214610156576100e8565b366100e857005b600080fd5b3480156100f957600080fd5b506101196004803603602081101561011057600080fd5b50351515610426565b005b34801561012757600080fd5b506101196004803603604081101561013e57600080fd5b506001600160a01b03813516906020013515156104ab565b34801561016257600080fd5b506101196004803603602081101561017957600080fd5b50351515610565565b34801561018e57600080fd5b506101976105cd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d15781810151838201526020016101b9565b50505050905090810190601f1680156101fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021857600080fd5b5061022161065a565b604080516001600160a01b039092168252519081900360200190f35b34801561024957600080fd5b50610252610669565b604080519115158252519081900360200190f35b34801561027257600080fd5b50610221610683565b6101196004803603602081101561029157600080fd5b8101906020810181356401000000008111156102ac57600080fd5b8201836020820111156102be57600080fd5b803590602001918460018302840111640100000000831117156102e057600080fd5b50909250905061069c565b3480156102f757600080fd5b5061022161077d565b34801561030c57600080fd5b50610252610787565b34801561032157600080fd5b506101196004803603604081101561033857600080fd5b506001600160a01b0381351690602001351515610791565b34801561035c57600080fd5b506101196004803603602081101561037357600080fd5b50356001600160a01b031661082d565b6101196004803603602081101561039957600080fd5b8101906020810181356401000000008111156103b457600080fd5b8201836020820111156103c657600080fd5b803590602001918460018302840111640100000000831117156103e857600080fd5b5090925090506109af565b3480156103ff57600080fd5b506101196004803603602081101561041657600080fd5b50356001600160a01b0316610a12565b6000546001600160a01b03163314610485576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b8061048e610ae5565b8054911515600160a01b0260ff60a01b1990921691909117905550565b6000546001600160a01b0316331461050a576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b81610513610b09565b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905580610547610b09565b8054911515600160a01b0260ff60a01b199092169190911790555050565b6000546001600160a01b031633146105c4576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b8061048e610b09565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106525780601f1061062757610100808354040283529160200191610652565b820191906000526020600020905b81548152906001019060200180831161063557829003601f168201915b505050505081565b6000546001600160a01b031681565b6000610673610b09565b54600160a01b900460ff16919050565b600061068d610b09565b546001600160a01b0316905090565b6106a4610669565b6106f5576040805162461bcd60e51b815260206004820152601a60248201527f5573657250726f78793a20504d4d2069732064697361626c6564000000000000604482015290519081900360640190fd5b60006106ff610683565b6001600160a01b0316348484604051808383808284376040519201945060009350909150508083038185875af1925050503d806000811461075c576040519150601f19603f3d011682016040523d82523d6000602084013e610761565b606091505b509091505080610778576040513d806000833e8082fd5b505050565b600061068d610ae5565b6000610673610ae5565b6000546001600160a01b031633146107f0576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b816107f9610ae5565b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905580610547610ae5565b6001600160a01b0381166108725760405162461bcd60e51b8152600401808060200182810382526024815260200180610bec6024913960400191505060405180910390fd5b60408051600081526020810180835281519020600180549193909201908190839060026000196101008385161502019091160480156108e85780601f106108c65761010080835404028352918201916108e8565b820191906000526020600020905b8154815290600101906020018083116108d4575b5050915050604051602081830303815290604052805190602001201461093f5760405162461bcd60e51b815260040180806020018281038252602d815260200180610c10602d913960400191505060405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556040805180820190915260058082527f352e302e3000000000000000000000000000000000000000000000000000000060209092019182526109ab91600191610b2d565b5050565b6109b7610787565b610a08576040805162461bcd60e51b815260206004820152601a60248201527f5573657250726f78793a20414d4d2069732064697361626c6564000000000000604482015290519081900360640190fd5b60006106ff61077d565b6000546001600160a01b03163314610a71576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b6001600160a01b038116610ab65760405162461bcd60e51b815260040180806020018281038252602b815260200180610bc1602b913960400191505060405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b7fbf49677e3150252dfa801a673d2d5ec21eaa360a4674864e55e79041e3f65a6b90565b7f8f135983375ba6442123d61647e7325c1753eabc2e038e44d3b888a970def89a90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610b6e57805160ff1916838001178555610b9b565b82800160010185558215610b9b579182015b82811115610b9b578251825591602001919060010190610b80565b50610ba7929150610bab565b5090565b5b80821115610ba75760008155600101610bac56fe5573657250726f78793a206f70657261746f722063616e206e6f74206265207a65726f20616464726573735573657250726f78793a205f6f70657261746f722073686f756c64206e6f7420626520305573657250726f78793a206e6f7420757067726164696e672066726f6d2064656661756c742076657273696f6ea2646970667358221220d4e114e9b035618b38334d1c69aebe0df73785ba4cc08466cc7c7bc9cc4b5df664736f6c634300060c0033
Deployed Bytecode Sourcemap
127:4693:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2476:123;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2476:123:0;;;;:::i;:::-;;3319:192;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3319:192:0;;;;;;;;;;:::i;3028:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3028:116:0;;;;:::i;241:21::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;212:23;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;212:23:0;;;;;;;;;;;;;;2162:108;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2052:104;;;;;;;;;;;;;:::i;4324:494::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4324:494:0;;-1:-1:-1;4324:494:0;-1:-1:-1;4324:494:0;:::i;1800:125::-;;;;;;;;;;;;;:::i;1931:115::-;;;;;;;;;;;;;:::i;2788:234::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2788:234:0;;;;;;;;;;:::i;1175:419::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1175:419:0;-1:-1:-1;;;;;1175:419:0;;:::i;3767:501::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3767:501:0;;-1:-1:-1;3767:501:0;-1:-1:-1;3767:501:0;:::i;660:203::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;660:203:0;-1:-1:-1;;;;;660:203:0;;:::i;2476:123::-;582:8;;-1:-1:-1;;;;;582:8:0;594:10;582:22;574:62;;;;;-1:-1:-1;;;574:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2585:7:::1;2542:30;:28;:30::i;:::-;:50:::0;;;::::1;;-1:-1:-1::0;;;2542:50:0::1;-1:-1:-1::0;;;;2542:50:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;2476:123:0:o;3319:192::-;582:8;;-1:-1:-1;;;;;582:8:0;594:10;582:22;574:62;;;;;-1:-1:-1;;;574:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3440:11:::1;3406:23;:21;:23::i;:::-;:45:::0;;-1:-1:-1;;3406:45:0::1;-1:-1:-1::0;;;;;3406:45:0;;;::::1;::::0;;;::::1;::::0;;3497:7;3461:23:::1;:21;:23::i;:::-;:43:::0;;;::::1;;-1:-1:-1::0;;;3461:43:0::1;-1:-1:-1::0;;;;3461:43:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;3319:192:0:o;3028:116::-;582:8;;-1:-1:-1;;;;;582:8:0;594:10;582:22;574:62;;;;;-1:-1:-1;;;574:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3130:7:::1;3094:23;:21;:23::i;241:21::-:0;;;;;;;;;;;;;;;-1:-1:-1;;241:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;212:23::-;;;-1:-1:-1;;;;;212:23:0;;:::o;2162:108::-;2207:4;2230:23;:21;:23::i;:::-;:33;-1:-1:-1;;;2230:33:0;;;;;2162:108;-1:-1:-1;2162:108:0:o;2052:104::-;2092:7;2118:23;:21;:23::i;:::-;:31;-1:-1:-1;;;;;2118:31:0;;-1:-1:-1;2052:104:0;:::o;4324:494::-;4399:14;:12;:14::i;:::-;4391:53;;;;;-1:-1:-1;;;4391:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4456:16;4477:9;:7;:9::i;:::-;-1:-1:-1;;;;;4477:14:0;4499:9;4510:8;;4477:42;;;;;;;;;;;;;;-1:-1:-1;4477:42:0;;-1:-1:-1;4477:42:0;;-1:-1:-1;;4477:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4455:64:0;;-1:-1:-1;;4533:20:0;4529:283;;4659:4;4653:11;4693:16;4749:4;4746:1;4741:3;4726:28;4783:4;4778:3;4771:17;4624:178;4324:494;;;:::o;1800:125::-;1847:7;1873:30;:28;:30::i;1931:115::-;1976:4;1999:30;:28;:30::i;2788:234::-;582:8;;-1:-1:-1;;;;;582:8:0;594:10;582:22;574:62;;;;;-1:-1:-1;;;574:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2937:18:::1;2889:30;:28;:30::i;:::-;:66:::0;;-1:-1:-1;;2889:66:0::1;-1:-1:-1::0;;;;;2889:66:0;;;::::1;::::0;;;::::1;::::0;;3008:7;2965:30:::1;:28;:30::i;1175:419::-:0;-1:-1:-1;;;;;1241:23:0;;1233:72;;;;-1:-1:-1;;;1233:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:20;;;;;;;;;;;;1376:31;;;;1363:7;1346:25;;1376:31;;1363:7;;1346:25;;;;1363:7;;1346:25;-1:-1:-1;;1346:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:36;;;;;;:71;1315:163;;;;-1:-1:-1;;;1315:163:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1513:8;:20;;-1:-1:-1;;1513:20:0;-1:-1:-1;;;;;1513:20:0;;;;;1570:17;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1570:17:0;:::i;:::-;;1175:419;:::o;3767:501::-;3842:14;:12;:14::i;:::-;3834:53;;;;;-1:-1:-1;;;3834:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3899:16;3920;:14;:16::i;660:203::-;582:8;;-1:-1:-1;;;;;582:8:0;594:10;582:22;574:62;;;;;-1:-1:-1;;;574:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;749:26:0;::::1;741:82;;;;-1:-1:-1::0;;;741:82:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;833:8;:23:::0;;-1:-1:-1;;833:23:0::1;-1:-1:-1::0;;;;;833:23:0;;;::::1;::::0;;;::::1;::::0;;660:203::o;469:487:1:-;131:66;;929:21::o;1349:480::-;1025:66;;1802:21::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;
Swarm Source
ipfs://d4e114e9b035618b38334d1c69aebe0df73785ba4cc08466cc7c7bc9cc4b5df6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.