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
|
|||
---|---|---|---|---|---|---|---|
0x60806040 | 16493643 | 791 days ago | Contract Creation | 0 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
OwnedUpgradable
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: MIT pragma solidity 0.8.17; import {Ownable} from "@synthetixio/core-contracts/contracts/ownership/Ownable.sol"; import {UUPSImplementation} from "@synthetixio/core-contracts/contracts/proxy/UUPSImplementation.sol"; contract OwnedUpgradable is Ownable, UUPSImplementation { function upgradeTo(address _newImplementation) public override onlyOwner { _upgradeTo(_newImplementation); } }
//SPDX-License-Identifier: MIT pragma solidity >=0.8.11 <0.9.0; /** * @title Library for access related errors. */ library AccessError { /** * @dev Thrown when an address tries to perform an unauthorized action. * @param addr The address that attempts the action. */ error Unauthorized(address addr); }
//SPDX-License-Identifier: MIT pragma solidity >=0.8.11 <0.9.0; /** * @title Library for address related errors. */ library AddressError { /** * @dev Thrown when a zero address was passed as a function parameter (0x0000000000000000000000000000000000000000). */ error ZeroAddress(); /** * @dev Thrown when an address representing a contract is expected, but no code is found at the address. * @param contr The address that was expected to be a contract. */ error NotAContract(address contr); }
//SPDX-License-Identifier: MIT pragma solidity >=0.8.11 <0.9.0; /** * @title Library for change related errors. */ library ChangeError { /** * @dev Thrown when a change is expected but none is detected. */ error NoChange(); }
//SPDX-License-Identifier: MIT pragma solidity >=0.8.11 <0.9.0; /** * @title Contract for facilitating ownership by a single address. */ interface IOwnable { /** * @notice Thrown when an address tries to accept ownership but has not been nominated. * @param addr The address that is trying to accept ownership. */ error NotNominated(address addr); /** * @notice Emitted when an address has been nominated. * @param newOwner The address that has been nominated. */ event OwnerNominated(address newOwner); /** * @notice Emitted when the owner of the contract has changed. * @param oldOwner The previous owner of the contract. * @param newOwner The new owner of the contract. */ event OwnerChanged(address oldOwner, address newOwner); /** * @notice Allows a nominated address to accept ownership of the contract. * @dev Reverts if the caller is not nominated. */ function acceptOwnership() external; /** * @notice Allows the current owner to nominate a new owner. * @dev The nominated owner will have to call `acceptOwnership` in a separate transaction in order to finalize the action and become the new contract owner. * @param newNominatedOwner The address that is to become nominated. */ function nominateNewOwner(address newNominatedOwner) external; /** * @notice Allows a nominated owner to reject the nomination. */ function renounceNomination() external; /** * @notice Returns the current owner of the contract. */ function owner() external view returns (address); /** * @notice Returns the current nominated owner of the contract. * @dev Only one address can be nominated at a time. */ function nominatedOwner() external view returns (address); }
//SPDX-License-Identifier: MIT pragma solidity >=0.8.11 <0.9.0; /** * @title Contract to be used as the implementation of a Universal Upgradeable Proxy Standard (UUPS) proxy. * * Important: A UUPS proxy requires its upgradeability functions to be in the implementation as opposed to the proxy. This means that if the proxy is upgraded to an implementation that does not support this interface, it will no longer be upgradeable. */ interface IUUPSImplementation { /** * @notice Thrown when an incoming implementation will not be able to receive future upgrades. */ error ImplementationIsSterile(address implementation); /** * @notice Thrown intentionally when testing future upgradeability of an implementation. */ error UpgradeSimulationFailed(); /** * @notice Emitted when the implementation of the proxy has been upgraded. * @param self The address of the proxy whose implementation was upgraded. * @param implementation The address of the proxy's new implementation. */ event Upgraded(address indexed self, address implementation); /** * @notice Allows the proxy to be upgraded to a new implementation. * @param newImplementation The address of the proxy's new implementation. * @dev Will revert if `newImplementation` is not upgradeable. * @dev The implementation of this function needs to be protected by some sort of access control such as `onlyOwner`. */ function upgradeTo(address newImplementation) external; /** * @notice Function used to determine if a new implementation will be able to receive future upgrades in `upgradeTo`. * @param newImplementation The address of the new implementation being tested for future upgradeability. * @dev This function will always revert, but will revert with different error messages. The function `upgradeTo` uses this error to determine the future upgradeability of the implementation in question. */ function simulateUpgradeTo(address newImplementation) external; /** * @notice Retrieves the current implementation of the proxy. * @return The address of the current implementation. */ function getImplementation() external view returns (address); }
//SPDX-License-Identifier: MIT pragma solidity >=0.8.11 <0.9.0; import "./OwnableStorage.sol"; import "../interfaces/IOwnable.sol"; import "../errors/AddressError.sol"; import "../errors/ChangeError.sol"; /** * @title Contract for facilitating ownership by a single address. * See IOwnable. */ contract Ownable is IOwnable { /** * @inheritdoc IOwnable */ function acceptOwnership() public override { OwnableStorage.Data storage store = OwnableStorage.load(); address currentNominatedOwner = store.nominatedOwner; if (msg.sender != currentNominatedOwner) { revert NotNominated(msg.sender); } emit OwnerChanged(store.owner, currentNominatedOwner); store.owner = currentNominatedOwner; store.nominatedOwner = address(0); } /** * @inheritdoc IOwnable */ function nominateNewOwner(address newNominatedOwner) public override onlyOwnerIfSet { OwnableStorage.Data storage store = OwnableStorage.load(); if (newNominatedOwner == address(0)) { revert AddressError.ZeroAddress(); } if (newNominatedOwner == store.nominatedOwner) { revert ChangeError.NoChange(); } store.nominatedOwner = newNominatedOwner; emit OwnerNominated(newNominatedOwner); } /** * @inheritdoc IOwnable */ function renounceNomination() external override { OwnableStorage.Data storage store = OwnableStorage.load(); if (store.nominatedOwner != msg.sender) { revert NotNominated(msg.sender); } store.nominatedOwner = address(0); } /** * @inheritdoc IOwnable */ function owner() external view override returns (address) { return OwnableStorage.load().owner; } /** * @inheritdoc IOwnable */ function nominatedOwner() external view override returns (address) { return OwnableStorage.load().nominatedOwner; } /** * @dev Reverts if the caller is not the owner. */ modifier onlyOwner() { OwnableStorage.onlyOwner(); _; } /** * @dev Reverts if the caller is not the owner, except if it is not set yet. */ modifier onlyOwnerIfSet() { address theOwner = OwnableStorage.getOwner(); // if owner is set then check if msg.sender is the owner if (theOwner != address(0)) { OwnableStorage.onlyOwner(); } _; } }
//SPDX-License-Identifier: MIT pragma solidity >=0.8.11 <0.9.0; import "../errors/AccessError.sol"; library OwnableStorage { bytes32 private constant _SLOT_OWNABLE_STORAGE = keccak256(abi.encode("io.synthetix.core-contracts.Ownable")); struct Data { bool initialized; address owner; address nominatedOwner; } function load() internal pure returns (Data storage store) { bytes32 s = _SLOT_OWNABLE_STORAGE; assembly { store.slot := s } } function onlyOwner() internal view { if (msg.sender != getOwner()) { revert AccessError.Unauthorized(msg.sender); } } function getOwner() internal view returns (address) { return OwnableStorage.load().owner; } }
//SPDX-License-Identifier: MIT pragma solidity >=0.8.11 <0.9.0; contract ProxyStorage { bytes32 private constant _SLOT_PROXY_STORAGE = keccak256(abi.encode("io.synthetix.core-contracts.Proxy")); struct ProxyStore { address implementation; bool simulatingUpgrade; } function _proxyStore() internal pure returns (ProxyStore storage store) { bytes32 s = _SLOT_PROXY_STORAGE; assembly { store.slot := s } } }
//SPDX-License-Identifier: MIT pragma solidity >=0.8.11 <0.9.0; import "../interfaces/IUUPSImplementation.sol"; import "../errors/AddressError.sol"; import "../errors/ChangeError.sol"; import "../utils/AddressUtil.sol"; import "./ProxyStorage.sol"; abstract contract UUPSImplementation is IUUPSImplementation, ProxyStorage { /** * @inheritdoc IUUPSImplementation */ function simulateUpgradeTo(address newImplementation) public override { ProxyStore storage store = _proxyStore(); store.simulatingUpgrade = true; address currentImplementation = store.implementation; store.implementation = newImplementation; (bool rollbackSuccessful, ) = newImplementation.delegatecall( abi.encodeCall(this.upgradeTo, (currentImplementation)) ); if (!rollbackSuccessful || _proxyStore().implementation != currentImplementation) { revert UpgradeSimulationFailed(); } store.simulatingUpgrade = false; // solhint-disable-next-line reason-string revert(); } /** * @inheritdoc IUUPSImplementation */ function getImplementation() external view override returns (address) { return _proxyStore().implementation; } function _upgradeTo(address newImplementation) internal virtual { if (newImplementation == address(0)) { revert AddressError.ZeroAddress(); } if (!AddressUtil.isContract(newImplementation)) { revert AddressError.NotAContract(newImplementation); } ProxyStore storage store = _proxyStore(); if (newImplementation == store.implementation) { revert ChangeError.NoChange(); } if (!store.simulatingUpgrade && _implementationIsSterile(newImplementation)) { revert ImplementationIsSterile(newImplementation); } store.implementation = newImplementation; emit Upgraded(address(this), newImplementation); } function _implementationIsSterile( address candidateImplementation ) internal virtual returns (bool) { (bool simulationReverted, bytes memory simulationResponse) = address(this).delegatecall( abi.encodeCall(this.simulateUpgradeTo, (candidateImplementation)) ); return !simulationReverted && keccak256(abi.encodePacked(simulationResponse)) == keccak256(abi.encodePacked(UpgradeSimulationFailed.selector)); } }
//SPDX-License-Identifier: MIT pragma solidity >=0.8.11 <0.9.0; library AddressUtil { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ImplementationIsSterile","type":"error"},{"inputs":[],"name":"NoChange","type":"error"},{"inputs":[{"internalType":"address","name":"contr","type":"address"}],"name":"NotAContract","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"NotNominated","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"UpgradeSimulationFailed","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"self","type":"address"},{"indexed":false,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newNominatedOwner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceNomination","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"simulateUpgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50611042806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806379ba50971161005b57806379ba5097146100ed5780638da5cb5b146100f7578063aaf10f4214610115578063c7f62cda1461013357610088565b80631627540c1461008d5780633659cfe6146100a957806353a47bb7146100c5578063718fe928146100e3575b600080fd5b6100a760048036038101906100a29190610d67565b61014f565b005b6100c360048036038101906100be9190610d67565b610312565b005b6100cd610326565b6040516100da9190610da3565b60405180910390f35b6100eb610359565b005b6100f5610440565b005b6100ff6105cd565b60405161010c9190610da3565b60405180910390f35b61011d610600565b60405161012a9190610da3565b60405180910390f35b61014d60048036038101906101489190610d67565b610633565b005b600061015961085d565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461019857610197610890565b5b60006101a2610909565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361020a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610293576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22836040516103059190610da3565b60405180910390a1505050565b61031a610890565b6103238161093a565b50565b6000610330610909565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610363610909565b90503373ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146103f957336040517fa0e5a0d70000000000000000000000000000000000000000000000000000000081526004016103f09190610da3565b60405180910390fd5b60008160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061044a610909565b905060008160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104e557336040517fa0e5a0d70000000000000000000000000000000000000000000000000000000081526004016104dc9190610da3565b60405180910390fd5b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c8260000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260405161053a929190610dbe565b60405180910390a1808260000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60006105d7610909565b60000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061060a610b7a565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061063d610b7a565b905060018160000160146101000a81548160ff02191690831515021790555060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16633659cfe68460405160240161070e9190610da3565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161075d9190610e58565b600060405180830381855af49150503d8060008114610798576040519150601f19603f3d011682016040523d82523d6000602084013e61079d565b606091505b5050905080158061080557508173ffffffffffffffffffffffffffffffffffffffff166107c8610b7a565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561083c576040517fa1cfa5a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008360000160146101000a81548160ff0219169083151502179055600080fd5b6000610867610909565b60000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61089861085d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461090757336040517f8e4a23d60000000000000000000000000000000000000000000000000000000081526004016108fe9190610da3565b60405180910390fd5b565b60008060405160200161091b90610ef2565b6040516020818303038152906040528051906020012090508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109a0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109a981610bab565b6109ea57806040517f8a8b41ec0000000000000000000000000000000000000000000000000000000081526004016109e19190610da3565b60405180910390fd5b60006109f4610b7a565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a7f576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060000160149054906101000a900460ff16158015610aa35750610aa282610bbe565b5b15610ae557816040517f15504301000000000000000000000000000000000000000000000000000000008152600401610adc9190610da3565b60405180910390fd5b818160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff167f5d611f318680d00598bb735d61bacf0c514c6b50e1e5ad30040a4df2b12791c783604051610b6e9190610da3565b60405180910390a25050565b600080604051602001610b8c90610f84565b6040516020818303038152906040528051906020012090508091505090565b600080823b905060008111915050919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1663c7f62cda86604051602401610c079190610da3565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c569190610e58565b600060405180830381855af49150503d8060008114610c91576040519150601f19603f3d011682016040523d82523d6000602084013e610c96565b606091505b509150915081158015610cfb575063a1cfa5a860e01b604051602001610cbc9190610ff1565b6040516020818303038152906040528051906020012081604051602001610ce39190610e58565b60405160208183030381529060405280519060200120145b92505050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d3482610d09565b9050919050565b610d4481610d29565b8114610d4f57600080fd5b50565b600081359050610d6181610d3b565b92915050565b600060208284031215610d7d57610d7c610d04565b5b6000610d8b84828501610d52565b91505092915050565b610d9d81610d29565b82525050565b6000602082019050610db86000830184610d94565b92915050565b6000604082019050610dd36000830185610d94565b610de06020830184610d94565b9392505050565b600081519050919050565b600081905092915050565b60005b83811015610e1b578082015181840152602081019050610e00565b60008484015250505050565b6000610e3282610de7565b610e3c8185610df2565b9350610e4c818560208601610dfd565b80840191505092915050565b6000610e648284610e27565b915081905092915050565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b6000610edc602383610e6f565b9150610ee782610e80565b604082019050919050565b60006020820190508181036000830152610f0b81610ecf565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b6000610f6e602183610e6f565b9150610f7982610f12565b604082019050919050565b60006020820190508181036000830152610f9d81610f61565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b610feb610fe682610fa4565b610fd0565b82525050565b6000610ffd8284610fda565b6004820191508190509291505056fea26469706673582212202841649d06d75b4b1a32a142dcb8bb265ead7f951a3a8f1a9807a24c9447e9c164736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100885760003560e01c806379ba50971161005b57806379ba5097146100ed5780638da5cb5b146100f7578063aaf10f4214610115578063c7f62cda1461013357610088565b80631627540c1461008d5780633659cfe6146100a957806353a47bb7146100c5578063718fe928146100e3575b600080fd5b6100a760048036038101906100a29190610d67565b61014f565b005b6100c360048036038101906100be9190610d67565b610312565b005b6100cd610326565b6040516100da9190610da3565b60405180910390f35b6100eb610359565b005b6100f5610440565b005b6100ff6105cd565b60405161010c9190610da3565b60405180910390f35b61011d610600565b60405161012a9190610da3565b60405180910390f35b61014d60048036038101906101489190610d67565b610633565b005b600061015961085d565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461019857610197610890565b5b60006101a2610909565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361020a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610293576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22836040516103059190610da3565b60405180910390a1505050565b61031a610890565b6103238161093a565b50565b6000610330610909565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610363610909565b90503373ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146103f957336040517fa0e5a0d70000000000000000000000000000000000000000000000000000000081526004016103f09190610da3565b60405180910390fd5b60008160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061044a610909565b905060008160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104e557336040517fa0e5a0d70000000000000000000000000000000000000000000000000000000081526004016104dc9190610da3565b60405180910390fd5b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c8260000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260405161053a929190610dbe565b60405180910390a1808260000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60006105d7610909565b60000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061060a610b7a565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061063d610b7a565b905060018160000160146101000a81548160ff02191690831515021790555060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16633659cfe68460405160240161070e9190610da3565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161075d9190610e58565b600060405180830381855af49150503d8060008114610798576040519150601f19603f3d011682016040523d82523d6000602084013e61079d565b606091505b5050905080158061080557508173ffffffffffffffffffffffffffffffffffffffff166107c8610b7a565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561083c576040517fa1cfa5a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008360000160146101000a81548160ff0219169083151502179055600080fd5b6000610867610909565b60000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61089861085d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461090757336040517f8e4a23d60000000000000000000000000000000000000000000000000000000081526004016108fe9190610da3565b60405180910390fd5b565b60008060405160200161091b90610ef2565b6040516020818303038152906040528051906020012090508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109a0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109a981610bab565b6109ea57806040517f8a8b41ec0000000000000000000000000000000000000000000000000000000081526004016109e19190610da3565b60405180910390fd5b60006109f4610b7a565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a7f576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060000160149054906101000a900460ff16158015610aa35750610aa282610bbe565b5b15610ae557816040517f15504301000000000000000000000000000000000000000000000000000000008152600401610adc9190610da3565b60405180910390fd5b818160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff167f5d611f318680d00598bb735d61bacf0c514c6b50e1e5ad30040a4df2b12791c783604051610b6e9190610da3565b60405180910390a25050565b600080604051602001610b8c90610f84565b6040516020818303038152906040528051906020012090508091505090565b600080823b905060008111915050919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1663c7f62cda86604051602401610c079190610da3565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c569190610e58565b600060405180830381855af49150503d8060008114610c91576040519150601f19603f3d011682016040523d82523d6000602084013e610c96565b606091505b509150915081158015610cfb575063a1cfa5a860e01b604051602001610cbc9190610ff1565b6040516020818303038152906040528051906020012081604051602001610ce39190610e58565b60405160208183030381529060405280519060200120145b92505050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d3482610d09565b9050919050565b610d4481610d29565b8114610d4f57600080fd5b50565b600081359050610d6181610d3b565b92915050565b600060208284031215610d7d57610d7c610d04565b5b6000610d8b84828501610d52565b91505092915050565b610d9d81610d29565b82525050565b6000602082019050610db86000830184610d94565b92915050565b6000604082019050610dd36000830185610d94565b610de06020830184610d94565b9392505050565b600081519050919050565b600081905092915050565b60005b83811015610e1b578082015181840152602081019050610e00565b60008484015250505050565b6000610e3282610de7565b610e3c8185610df2565b9350610e4c818560208601610dfd565b80840191505092915050565b6000610e648284610e27565b915081905092915050565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b6000610edc602383610e6f565b9150610ee782610e80565b604082019050919050565b60006020820190508181036000830152610f0b81610ecf565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b6000610f6e602183610e6f565b9150610f7982610f12565b604082019050919050565b60006020820190508181036000830152610f9d81610f61565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b610feb610fe682610fa4565b610fd0565b82525050565b6000610ffd8284610fda565b6004820191508190509291505056fea26469706673582212202841649d06d75b4b1a32a142dcb8bb265ead7f951a3a8f1a9807a24c9447e9c164736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 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.