Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 10 from a total of 10 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 11510753 | 1313 days ago | IN | 0 ETH | 0.00361448 | ||||
Transfer Ownersh... | 11478385 | 1318 days ago | IN | 0 ETH | 0.0030905 | ||||
Set Controller | 11477073 | 1319 days ago | IN | 0 ETH | 0.0563857 | ||||
Set Margin Calcu... | 11476670 | 1319 days ago | IN | 0 ETH | 0.004607 | ||||
Set Margin Pool | 11476663 | 1319 days ago | IN | 0 ETH | 0.0046048 | ||||
Set Oracle | 11476654 | 1319 days ago | IN | 0 ETH | 0.0046049 | ||||
Set Whitelist | 11476650 | 1319 days ago | IN | 0 ETH | 0.0046093 | ||||
Set Otoken Impl | 11476645 | 1319 days ago | IN | 0 ETH | 0.0046038 | ||||
Set Otoken Facto... | 11476641 | 1319 days ago | IN | 0 ETH | 0.0046026 | ||||
0x60806040 | 11476634 | 1319 days ago | IN | 0 ETH | 0.1154851 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
11477073 | 1319 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:
AddressBook
Compiler Version
v0.6.10+commit.00c0fcaf
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** * SPDX-License-Identifier: UNLICENSED */ pragma solidity 0.6.10; import {Ownable} from "./packages/oz/Ownable.sol"; import {OwnedUpgradeabilityProxy} from "./packages/oz/upgradeability/OwnedUpgradeabilityProxy.sol"; /** * @author Opyn Team * @title AddressBook Module */ contract AddressBook is Ownable { /// @dev Otoken implementation key bytes32 private constant OTOKEN_IMPL = keccak256("OTOKEN_IMPL"); /// @dev OtokenFactory key bytes32 private constant OTOKEN_FACTORY = keccak256("OTOKEN_FACTORY"); /// @dev Whitelist key bytes32 private constant WHITELIST = keccak256("WHITELIST"); /// @dev Controller key bytes32 private constant CONTROLLER = keccak256("CONTROLLER"); /// @dev MarginPool key bytes32 private constant MARGIN_POOL = keccak256("MARGIN_POOL"); /// @dev MarginCalculator key bytes32 private constant MARGIN_CALCULATOR = keccak256("MARGIN_CALCULATOR"); /// @dev LiquidationManager key bytes32 private constant LIQUIDATION_MANAGER = keccak256("LIQUIDATION_MANAGER"); /// @dev Oracle key bytes32 private constant ORACLE = keccak256("ORACLE"); /// @dev mapping between key and address mapping(bytes32 => address) private addresses; /// @notice emits an event when a new proxy is created event ProxyCreated(bytes32 indexed id, address indexed proxy); /// @notice emits an event when a new address is added event AddressAdded(bytes32 indexed id, address indexed add); /** * @notice return Otoken implementation address * @return Otoken implementation address */ function getOtokenImpl() external view returns (address) { return getAddress(OTOKEN_IMPL); } /** * @notice return oTokenFactory address * @return OtokenFactory address */ function getOtokenFactory() external view returns (address) { return getAddress(OTOKEN_FACTORY); } /** * @notice return Whitelist address * @return Whitelist address */ function getWhitelist() external view returns (address) { return getAddress(WHITELIST); } /** * @notice return Controller address * @return Controller address */ function getController() external view returns (address) { return getAddress(CONTROLLER); } /** * @notice return MarginPool address * @return MarginPool address */ function getMarginPool() external view returns (address) { return getAddress(MARGIN_POOL); } /** * @notice return MarginCalculator address * @return MarginCalculator address */ function getMarginCalculator() external view returns (address) { return getAddress(MARGIN_CALCULATOR); } /** * @notice return LiquidationManager address * @return LiquidationManager address */ function getLiquidationManager() external view returns (address) { return getAddress(LIQUIDATION_MANAGER); } /** * @notice return Oracle address * @return Oracle address */ function getOracle() external view returns (address) { return getAddress(ORACLE); } /** * @notice set Otoken implementation address * @dev can only be called by the addressbook owner * @param _otokenImpl Otoken implementation address */ function setOtokenImpl(address _otokenImpl) external onlyOwner { setAddress(OTOKEN_IMPL, _otokenImpl); } /** * @notice set OtokenFactory address * @dev can only be called by the addressbook owner * @param _otokenFactory OtokenFactory address */ function setOtokenFactory(address _otokenFactory) external onlyOwner { setAddress(OTOKEN_FACTORY, _otokenFactory); } /** * @notice set Whitelist address * @dev can only be called by the addressbook owner * @param _whitelist Whitelist address */ function setWhitelist(address _whitelist) external onlyOwner { setAddress(WHITELIST, _whitelist); } /** * @notice set Controller address * @dev can only be called by the addressbook owner * @param _controller Controller address */ function setController(address _controller) external onlyOwner { updateImpl(CONTROLLER, _controller); } /** * @notice set MarginPool address * @dev can only be called by the addressbook owner * @param _marginPool MarginPool address */ function setMarginPool(address _marginPool) external onlyOwner { setAddress(MARGIN_POOL, _marginPool); } /** * @notice set MarginCalculator address * @dev can only be called by the addressbook owner * @param _marginCalculator MarginCalculator address */ function setMarginCalculator(address _marginCalculator) external onlyOwner { setAddress(MARGIN_CALCULATOR, _marginCalculator); } /** * @notice set LiquidationManager address * @dev can only be called by the addressbook owner * @param _liquidationManager LiquidationManager address */ function setLiquidationManager(address _liquidationManager) external onlyOwner { setAddress(LIQUIDATION_MANAGER, _liquidationManager); } /** * @notice set Oracle address * @dev can only be called by the addressbook owner * @param _oracle Oracle address */ function setOracle(address _oracle) external onlyOwner { setAddress(ORACLE, _oracle); } /** * @notice return an address for specific key * @param _key key address * @return address */ function getAddress(bytes32 _key) public view returns (address) { return addresses[_key]; } /** * @notice set a specific address for a specific key * @dev can only be called by the addressbook owner * @param _key key * @param _address address */ function setAddress(bytes32 _key, address _address) public onlyOwner { addresses[_key] = _address; emit AddressAdded(_key, _address); } /** * @dev function to update the implementation of a specific component of the protocol * @param _id id of the contract to be updated * @param _newAddress address of the new implementation **/ function updateImpl(bytes32 _id, address _newAddress) public onlyOwner { address payable proxyAddress = address(uint160(getAddress(_id))); if (proxyAddress == address(0)) { bytes memory params = abi.encodeWithSignature("initialize(address,address)", address(this), owner()); OwnedUpgradeabilityProxy proxy = new OwnedUpgradeabilityProxy(); setAddress(_id, address(proxy)); emit ProxyCreated(_id, address(proxy)); proxy.upgradeToAndCall(_newAddress, params); } else { OwnedUpgradeabilityProxy proxy = OwnedUpgradeabilityProxy(proxyAddress); proxy.upgradeTo(_newAddress); } } }
// SPDX-License-Identifier: MIT pragma solidity 0.6.10; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal virtual view returns (address payable) { return msg.sender; } function _msgData() internal virtual view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity 0.6.10; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.6.10; import "./UpgradeabilityProxy.sol"; /** * @title OwnedUpgradeabilityProxy * @dev This contract combines an upgradeability proxy with basic authorization control functionalities */ contract OwnedUpgradeabilityProxy is UpgradeabilityProxy { /** * @dev Event to show ownership has been transferred * @param previousOwner representing the address of the previous owner * @param newOwner representing the address of the new owner */ event ProxyOwnershipTransferred(address previousOwner, address newOwner); /// @dev Storage position of the owner of the contract bytes32 private constant proxyOwnerPosition = keccak256("org.zeppelinos.proxy.owner"); /** * @dev the constructor sets the original owner of the contract to the sender account. */ constructor() public { setUpgradeabilityOwner(msg.sender); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyProxyOwner() { require(msg.sender == proxyOwner()); _; } /** * @dev Tells the address of the owner * @return owner the address of the owner */ function proxyOwner() public view returns (address owner) { bytes32 position = proxyOwnerPosition; assembly { owner := sload(position) } } /** * @dev Sets the address of the owner * @param _newProxyOwner address of new proxy owner */ function setUpgradeabilityOwner(address _newProxyOwner) internal { bytes32 position = proxyOwnerPosition; assembly { sstore(position, _newProxyOwner) } } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function transferProxyOwnership(address _newOwner) public onlyProxyOwner { require(_newOwner != address(0)); emit ProxyOwnershipTransferred(proxyOwner(), _newOwner); setUpgradeabilityOwner(_newOwner); } /** * @dev Allows the proxy owner to upgrade the current version of the proxy. * @param _implementation representing the address of the new implementation to be set. */ function upgradeTo(address _implementation) public onlyProxyOwner { _upgradeTo(_implementation); } /** * @dev Allows the proxy owner to upgrade the current version of the proxy and call the new implementation * to initialize whatever is needed through a low level call. * @param _implementation representing the address of the new implementation to be set. * @param _data represents the msg.data to bet sent in the low level call. This parameter may include the function * signature of the implementation to be called with the needed payload */ function upgradeToAndCall(address _implementation, bytes calldata _data) public payable onlyProxyOwner { upgradeTo(_implementation); (bool success, ) = address(this).call{value: msg.value}(_data); require(success); } }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.6.10; /** * @title Proxy * @dev Gives the possibility to delegate any call to a foreign implementation. */ abstract contract Proxy { /** * @dev Tells the address of the implementation where every call will be delegated. * @return address of the implementation to which it will be delegated */ function implementation() public virtual view returns (address); /** * @dev Fallback function allowing to perform a delegatecall to the given implementation. * This function will return whatever the implementation call returns */ fallback() external payable { address _impl = implementation(); require(_impl != address(0)); assembly { let ptr := mload(0x40) calldatacopy(ptr, 0, calldatasize()) let result := delegatecall(gas(), _impl, ptr, calldatasize(), 0, 0) let size := returndatasize() returndatacopy(ptr, 0, size) switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } } }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.6.10; import "./Proxy.sol"; /** * @title UpgradeabilityProxy * @dev This contract represents a proxy where the implementation address to which it will delegate can be upgraded */ contract UpgradeabilityProxy is Proxy { /** * @dev This event will be emitted every time the implementation gets upgraded * @param implementation representing the address of the upgraded implementation */ event Upgraded(address indexed implementation); /// @dev Storage position of the address of the current implementation bytes32 private constant implementationPosition = keccak256("org.zeppelinos.proxy.implementation"); /** * @dev Tells the address of the current implementation * @return impl address of the current implementation */ function implementation() public override view returns (address impl) { bytes32 position = implementationPosition; assembly { impl := sload(position) } } /** * @dev Sets the address of the current implementation * @param _newImplementation address representing the new implementation to be set */ function setImplementation(address _newImplementation) internal { bytes32 position = implementationPosition; assembly { sstore(position, _newImplementation) } } /** * @dev Upgrades the implementation address * @param _newImplementation representing the address of the new implementation to be set */ function _upgradeTo(address _newImplementation) internal { address currentImplementation = implementation(); require(currentImplementation != _newImplementation); setImplementation(_newImplementation); emit Upgraded(_newImplementation); } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "istanbul", "libraries": { "": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"add","type":"address"}],"name":"AddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"proxy","type":"address"}],"name":"ProxyCreated","type":"event"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"getAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getController","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidationManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarginCalculator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarginPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOtokenFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOtokenImpl","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWhitelist","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"address","name":"_address","type":"address"}],"name":"setAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidationManager","type":"address"}],"name":"setLiquidationManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marginCalculator","type":"address"}],"name":"setMarginCalculator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marginPool","type":"address"}],"name":"setMarginPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oracle","type":"address"}],"name":"setOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_otokenFactory","type":"address"}],"name":"setOtokenFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_otokenImpl","type":"address"}],"name":"setOtokenImpl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_id","type":"bytes32"},{"internalType":"address","name":"_newAddress","type":"address"}],"name":"updateImpl","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060006100246001600160e01b0361007316565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610077565b3390565b611380806100866000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806392eefe9b116100b8578063d01f63f51161007c578063d01f63f5146102d8578063d94f323e146102e0578063e7cf784114610306578063e9f2e8be1461032c578063ee8a463214610352578063f2fde38b1461035a57610142565b806392eefe9b14610250578063a8de41d514610276578063b508ac991461027e578063ca446dd9146102a4578063cf28493f146102d057610142565b8063715018a61161010a578063715018a6146101e457806375486342146101ec5780637adbf973146101f4578063833b1fce1461021a578063854cff2f146102225780638da5cb5b1461024857610142565b80631ffaf0db1461014757806321f8a7211461016b5780632b6bfeaa146101885780633018205f146101b657806338f92fc7146101be575b600080fd5b61014f610380565b604080516001600160a01b039092168252519081900360200190f35b61014f6004803603602081101561018157600080fd5b50356103b4565b6101b46004803603604081101561019e57600080fd5b50803590602001356001600160a01b03166103cf565b005b61014f610646565b6101b4600480360360208110156101d457600080fd5b50356001600160a01b0316610671565b6101b46106fe565b61014f6107a0565b6101b46004803603602081101561020a57600080fd5b50356001600160a01b03166107cc565b61014f610849565b6101b46004803603602081101561023857600080fd5b50356001600160a01b0316610870565b61014f6108f0565b6101b46004803603602081101561026657600080fd5b50356001600160a01b03166108ff565b61014f610980565b6101b46004803603602081101561029457600080fd5b50356001600160a01b03166109ac565b6101b4600480360360408110156102ba57600080fd5b50803590602001356001600160a01b0316610a2a565b61014f610adb565b61014f610b0d565b6101b4600480360360208110156102f657600080fd5b50356001600160a01b0316610b37565b6101b46004803603602081101561031c57600080fd5b50356001600160a01b0316610bbc565b6101b46004803603602081101561034257600080fd5b50356001600160a01b0316610c3e565b61014f610cc6565b6101b46004803603602081101561037057600080fd5b50356001600160a01b0316610cfa565b604080516d4f544f4b454e5f464143544f525960901b8152905190819003600e0190206000906103af906103b4565b905090565b6000908152600160205260409020546001600160a01b031690565b6103d7610df2565b6000546001600160a01b03908116911614610427576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b6000610432836103b4565b90506001600160a01b0381166105dc5760603061044d6108f0565b604080516001600160a01b0393841660248201529190921660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663485cc95560e01b17905290519091506000906104aa90610df6565b604051809103906000f0801580156104c6573d6000803e3d6000fd5b5090506104d38582610a2a565b6040516001600160a01b0382169086907f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e23114243890600090a36040805163278f794360e11b81526001600160a01b03868116600483019081526024830193845285516044840152855191851693634f1ef2869389938893929160640190602085019080838360005b83811015610570578181015183820152602001610558565b50505050905090810190601f16801561059d5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156105bd57600080fd5b505af11580156105d1573d6000803e3d6000fd5b505050505050610641565b60408051631b2ce7f360e11b81526001600160a01b03848116600483015291518392831691633659cfe691602480830192600092919082900301818387803b15801561062757600080fd5b505af115801561063b573d6000803e3d6000fd5b50505050505b505050565b604080516921a7a72a2927a62622a960b11b8152905190819003600a0190206000906103af906103b4565b610679610df2565b6000546001600160a01b039081169116146106c9576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b60408051722624a8aaa4a220aa24a7a72fa6a0a720a3a2a960691b815290519081900360130190206106fb9082610a2a565b50565b610706610df2565b6000546001600160a01b03908116911614610756576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b604080516a13505491d25397d413d3d360aa1b8152905190819003600b0190206000906103af906103b4565b6107d4610df2565b6000546001600160a01b03908116911614610824576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b60408051654f5241434c4560d01b815290519081900360060190206106fb9082610a2a565b60408051654f5241434c4560d01b815290519081900360060190206000906103af906103b4565b610878610df2565b6000546001600160a01b039081169116146108c8576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b604080516815d2125511531254d560ba1b815290519081900360090190206106fb9082610a2a565b6000546001600160a01b031690565b610907610df2565b6000546001600160a01b03908116911614610957576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b604080516921a7a72a2927a62622a960b11b8152905190819003600a0190206106fb90826103cf565b604080516a13d513d2d15397d253541360aa1b8152905190819003600b0190206000906103af906103b4565b6109b4610df2565b6000546001600160a01b03908116911614610a04576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b604080516a13d513d2d15397d253541360aa1b8152905190819003600b0190206106fb90825b610a32610df2565b6000546001600160a01b03908116911614610a82576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b60008281526001602052604080822080546001600160a01b0319166001600160a01b0385169081179091559051909184917f3eb532562a19423f49e2e3b30790b23d00c625f3ee37c7359d03688bf7111f6c9190a35050565b604080517026a0a923a4a72fa1a0a621aaa620aa27a960791b815290519081900360110190206000906103af906103b4565b604080516815d2125511531254d560ba1b815290519081900360090190206000906103af906103b4565b610b3f610df2565b6000546001600160a01b03908116911614610b8f576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b604080516d4f544f4b454e5f464143544f525960901b8152905190819003600e0190206106fb9082610a2a565b610bc4610df2565b6000546001600160a01b03908116911614610c14576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b604080516a13505491d25397d413d3d360aa1b8152905190819003600b0190206106fb9082610a2a565b610c46610df2565b6000546001600160a01b03908116911614610c96576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b604080517026a0a923a4a72fa1a0a621aaa620aa27a960791b815290519081900360110190206106fb9082610a2a565b60408051722624a8aaa4a220aa24a7a72fa6a0a720a3a2a960691b815290519081900360130190206000906103af906103b4565b610d02610df2565b6000546001600160a01b03908116911614610d52576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b6001600160a01b038116610d975760405162461bcd60e51b81526004018080602001828103825260268152602001806113056026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b61050180610e048339019056fe608060405234801561001057600080fd5b50610023336001600160e01b0361002816565b61005d565b604080517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152905190819003601a01902055565b6104958061006c6000396000f3fe60806040526004361061004a5760003560e01c8063025313a21461008e5780633659cfe6146100bf5780634f1ef286146100f45780635c60da1b14610174578063f1739cae14610189575b60006100546101bc565b90506001600160a01b03811661006957600080fd5b60405136600082376000803683855af43d806000843e81801561008a578184f35b8184fd5b34801561009a57600080fd5b506100a36101df565b604080516001600160a01b039092168252519081900360200190f35b3480156100cb57600080fd5b506100f2600480360360208110156100e257600080fd5b50356001600160a01b0316610215565b005b6100f26004803603604081101561010a57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561013557600080fd5b82018360208201111561014757600080fd5b8035906020019184600183028401116401000000008311171561016957600080fd5b509092509050610246565b34801561018057600080fd5b506100a36101bc565b34801561019557600080fd5b506100f2600480360360208110156101ac57600080fd5b50356001600160a01b03166102ed565b600080604051808061043d60239139604051908190036023019020549392505050565b604080517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152905190819003601a0190205490565b61021d6101df565b6001600160a01b0316336001600160a01b03161461023a57600080fd5b61024381610379565b50565b61024e6101df565b6001600160a01b0316336001600160a01b03161461026b57600080fd5b61027483610215565b6000306001600160a01b0316348484604051808383808284376040519201945060009350909150508083038185875af1925050503d80600081146102d4576040519150601f19603f3d011682016040523d82523d6000602084013e6102d9565b606091505b50509050806102e757600080fd5b50505050565b6102f56101df565b6001600160a01b0316336001600160a01b03161461031257600080fd5b6001600160a01b03811661032557600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd961034e6101df565b604080516001600160a01b03928316815291841660208301528051918290030190a1610243816103e5565b60006103836101bc565b9050816001600160a01b0316816001600160a01b031614156103a457600080fd5b6103ad8261041a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b604080517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152905190819003601a01902055565b6000604051808061043d6023913960405190819003602301902092909255505056fe6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e746174696f6ea26469706673582212203320e2b1a7e61c0b568e4bffc4b4c10078ec19de63c542c993554188157d2c4964736f6c634300060a00334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220559fb470c1a15a8bda86c297e738f0d0de28905f6be7421c3660d57564ee5e0164736f6c634300060a0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101425760003560e01c806392eefe9b116100b8578063d01f63f51161007c578063d01f63f5146102d8578063d94f323e146102e0578063e7cf784114610306578063e9f2e8be1461032c578063ee8a463214610352578063f2fde38b1461035a57610142565b806392eefe9b14610250578063a8de41d514610276578063b508ac991461027e578063ca446dd9146102a4578063cf28493f146102d057610142565b8063715018a61161010a578063715018a6146101e457806375486342146101ec5780637adbf973146101f4578063833b1fce1461021a578063854cff2f146102225780638da5cb5b1461024857610142565b80631ffaf0db1461014757806321f8a7211461016b5780632b6bfeaa146101885780633018205f146101b657806338f92fc7146101be575b600080fd5b61014f610380565b604080516001600160a01b039092168252519081900360200190f35b61014f6004803603602081101561018157600080fd5b50356103b4565b6101b46004803603604081101561019e57600080fd5b50803590602001356001600160a01b03166103cf565b005b61014f610646565b6101b4600480360360208110156101d457600080fd5b50356001600160a01b0316610671565b6101b46106fe565b61014f6107a0565b6101b46004803603602081101561020a57600080fd5b50356001600160a01b03166107cc565b61014f610849565b6101b46004803603602081101561023857600080fd5b50356001600160a01b0316610870565b61014f6108f0565b6101b46004803603602081101561026657600080fd5b50356001600160a01b03166108ff565b61014f610980565b6101b46004803603602081101561029457600080fd5b50356001600160a01b03166109ac565b6101b4600480360360408110156102ba57600080fd5b50803590602001356001600160a01b0316610a2a565b61014f610adb565b61014f610b0d565b6101b4600480360360208110156102f657600080fd5b50356001600160a01b0316610b37565b6101b46004803603602081101561031c57600080fd5b50356001600160a01b0316610bbc565b6101b46004803603602081101561034257600080fd5b50356001600160a01b0316610c3e565b61014f610cc6565b6101b46004803603602081101561037057600080fd5b50356001600160a01b0316610cfa565b604080516d4f544f4b454e5f464143544f525960901b8152905190819003600e0190206000906103af906103b4565b905090565b6000908152600160205260409020546001600160a01b031690565b6103d7610df2565b6000546001600160a01b03908116911614610427576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b6000610432836103b4565b90506001600160a01b0381166105dc5760603061044d6108f0565b604080516001600160a01b0393841660248201529190921660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663485cc95560e01b17905290519091506000906104aa90610df6565b604051809103906000f0801580156104c6573d6000803e3d6000fd5b5090506104d38582610a2a565b6040516001600160a01b0382169086907f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e23114243890600090a36040805163278f794360e11b81526001600160a01b03868116600483019081526024830193845285516044840152855191851693634f1ef2869389938893929160640190602085019080838360005b83811015610570578181015183820152602001610558565b50505050905090810190601f16801561059d5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156105bd57600080fd5b505af11580156105d1573d6000803e3d6000fd5b505050505050610641565b60408051631b2ce7f360e11b81526001600160a01b03848116600483015291518392831691633659cfe691602480830192600092919082900301818387803b15801561062757600080fd5b505af115801561063b573d6000803e3d6000fd5b50505050505b505050565b604080516921a7a72a2927a62622a960b11b8152905190819003600a0190206000906103af906103b4565b610679610df2565b6000546001600160a01b039081169116146106c9576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b60408051722624a8aaa4a220aa24a7a72fa6a0a720a3a2a960691b815290519081900360130190206106fb9082610a2a565b50565b610706610df2565b6000546001600160a01b03908116911614610756576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b604080516a13505491d25397d413d3d360aa1b8152905190819003600b0190206000906103af906103b4565b6107d4610df2565b6000546001600160a01b03908116911614610824576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b60408051654f5241434c4560d01b815290519081900360060190206106fb9082610a2a565b60408051654f5241434c4560d01b815290519081900360060190206000906103af906103b4565b610878610df2565b6000546001600160a01b039081169116146108c8576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b604080516815d2125511531254d560ba1b815290519081900360090190206106fb9082610a2a565b6000546001600160a01b031690565b610907610df2565b6000546001600160a01b03908116911614610957576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b604080516921a7a72a2927a62622a960b11b8152905190819003600a0190206106fb90826103cf565b604080516a13d513d2d15397d253541360aa1b8152905190819003600b0190206000906103af906103b4565b6109b4610df2565b6000546001600160a01b03908116911614610a04576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b604080516a13d513d2d15397d253541360aa1b8152905190819003600b0190206106fb90825b610a32610df2565b6000546001600160a01b03908116911614610a82576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b60008281526001602052604080822080546001600160a01b0319166001600160a01b0385169081179091559051909184917f3eb532562a19423f49e2e3b30790b23d00c625f3ee37c7359d03688bf7111f6c9190a35050565b604080517026a0a923a4a72fa1a0a621aaa620aa27a960791b815290519081900360110190206000906103af906103b4565b604080516815d2125511531254d560ba1b815290519081900360090190206000906103af906103b4565b610b3f610df2565b6000546001600160a01b03908116911614610b8f576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b604080516d4f544f4b454e5f464143544f525960901b8152905190819003600e0190206106fb9082610a2a565b610bc4610df2565b6000546001600160a01b03908116911614610c14576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b604080516a13505491d25397d413d3d360aa1b8152905190819003600b0190206106fb9082610a2a565b610c46610df2565b6000546001600160a01b03908116911614610c96576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b604080517026a0a923a4a72fa1a0a621aaa620aa27a960791b815290519081900360110190206106fb9082610a2a565b60408051722624a8aaa4a220aa24a7a72fa6a0a720a3a2a960691b815290519081900360130190206000906103af906103b4565b610d02610df2565b6000546001600160a01b03908116911614610d52576040805162461bcd60e51b8152602060048201819052602482015260008051602061132b833981519152604482015290519081900360640190fd5b6001600160a01b038116610d975760405162461bcd60e51b81526004018080602001828103825260268152602001806113056026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b61050180610e048339019056fe608060405234801561001057600080fd5b50610023336001600160e01b0361002816565b61005d565b604080517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152905190819003601a01902055565b6104958061006c6000396000f3fe60806040526004361061004a5760003560e01c8063025313a21461008e5780633659cfe6146100bf5780634f1ef286146100f45780635c60da1b14610174578063f1739cae14610189575b60006100546101bc565b90506001600160a01b03811661006957600080fd5b60405136600082376000803683855af43d806000843e81801561008a578184f35b8184fd5b34801561009a57600080fd5b506100a36101df565b604080516001600160a01b039092168252519081900360200190f35b3480156100cb57600080fd5b506100f2600480360360208110156100e257600080fd5b50356001600160a01b0316610215565b005b6100f26004803603604081101561010a57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561013557600080fd5b82018360208201111561014757600080fd5b8035906020019184600183028401116401000000008311171561016957600080fd5b509092509050610246565b34801561018057600080fd5b506100a36101bc565b34801561019557600080fd5b506100f2600480360360208110156101ac57600080fd5b50356001600160a01b03166102ed565b600080604051808061043d60239139604051908190036023019020549392505050565b604080517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152905190819003601a0190205490565b61021d6101df565b6001600160a01b0316336001600160a01b03161461023a57600080fd5b61024381610379565b50565b61024e6101df565b6001600160a01b0316336001600160a01b03161461026b57600080fd5b61027483610215565b6000306001600160a01b0316348484604051808383808284376040519201945060009350909150508083038185875af1925050503d80600081146102d4576040519150601f19603f3d011682016040523d82523d6000602084013e6102d9565b606091505b50509050806102e757600080fd5b50505050565b6102f56101df565b6001600160a01b0316336001600160a01b03161461031257600080fd5b6001600160a01b03811661032557600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd961034e6101df565b604080516001600160a01b03928316815291841660208301528051918290030190a1610243816103e5565b60006103836101bc565b9050816001600160a01b0316816001600160a01b031614156103a457600080fd5b6103ad8261041a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b604080517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152905190819003601a01902055565b6000604051808061043d6023913960405190819003602301902092909255505056fe6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e746174696f6ea26469706673582212203320e2b1a7e61c0b568e4bffc4b4c10078ec19de63c542c993554188157d2c4964736f6c634300060a00334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220559fb470c1a15a8bda86c297e738f0d0de28905f6be7421c3660d57564ee5e0164736f6c634300060a0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.