Overview
S Balance
0 S
S Value
-More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set WETH | 2692321 | 4 days ago | IN | 0 S | 0.00005193 |
Loading...
Loading
Contract Name:
AddressBook
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED // Copyright (c) Eywa.Fi, 2021-2023 - all rights reserved pragma solidity 0.8.17; import "@openzeppelin/contracts/access/Ownable.sol"; import "./interfaces/IAddressBook.sol"; import "./interfaces/IGateKeeper.sol"; /** * @title Address book with portals, synthesis etc. * * @notice Controlled by DAO and\or multisig (3 out of 5, Gnosis Safe). */ contract AddressBook is IAddressBook, Ownable { enum RecordTypes { Portal, Synthesis, Router, PoolAdapter } struct Record { /// @dev chainId chain id uint64 chainId; /// @dev portal/sinthesis address in chainId chain address clpEndPoint; } /// @dev chainId -> portal address mapping(uint64 => address) public portal; /// @dev chainId -> synthesis address mapping(uint64 => address) public synthesis; /// @dev chainId -> router address mapping(uint64 => address) public router; /// @dev treasury address address public treasury; /// @dev whitelist address address public whitelist; /// @dev gate keeper address address public gateKeeper; /// @dev ops registrar address address public opsRegistrar; /// @dev wrapped native asset address public WETH; event PortalSet(address portal, uint64 chainId); event SynthesisSet(address synthesis, uint64 chainId); event RouterSet(address router, uint64 chainId); event TreasurySet(address treasury); event WhitelistSet(address whitelist); event GateKeeperSet(address gateKeeper); event OpsRegistrarSet(address opsRegistrar); event WETHSet(address opsRegistrar); function bridge() public view returns (address bridge_) { if (gateKeeper != address(0)) { bridge_ = IGateKeeper(gateKeeper).bridge(); } } function setPortal(Record[] memory records) external onlyOwner { _setRecords(portal, records, RecordTypes.Portal); } function setSynthesis(Record[] memory records) external onlyOwner { _setRecords(synthesis, records, RecordTypes.Synthesis); } function setRouter(Record[] memory records) external onlyOwner { _setRecords(router, records, RecordTypes.Router); } function setTreasury(address treasury_) external onlyOwner { _checkAddress(treasury_); treasury = treasury_; emit TreasurySet(treasury); } function setGateKeeper(address gateKeeper_) external onlyOwner { _checkAddress(gateKeeper_); gateKeeper = gateKeeper_; emit GateKeeperSet(gateKeeper); } function setWhitelist(address whitelist_) external onlyOwner { _checkAddress(whitelist_); whitelist = whitelist_; emit WhitelistSet(whitelist); } function setOpsRegistrar(address opsRegistrar_) external onlyOwner { _checkAddress(opsRegistrar_); opsRegistrar = opsRegistrar_; emit OpsRegistrarSet(opsRegistrar); } function setWETH(address WETH_) external onlyOwner { _checkAddress(WETH_); WETH = WETH_; emit WETHSet(WETH); } function _setRecords(mapping(uint64 => address) storage map_, Record[] memory records, RecordTypes rtype) private { for (uint256 i = 0; i < records.length; ++i) { _checkAddress(records[i].clpEndPoint); map_[records[i].chainId] = records[i].clpEndPoint; _emitEvent(records[i].clpEndPoint, records[i].chainId, rtype); } } function _emitEvent(address endPoint, uint64 chainId, RecordTypes rtype) private { if (rtype == RecordTypes.Portal) { emit PortalSet(endPoint, chainId); } else if (rtype == RecordTypes.Synthesis) { emit SynthesisSet(endPoint, chainId); } else if (rtype == RecordTypes.Router) { emit RouterSet(endPoint, chainId); } } function _checkAddress(address checkingAddress) private pure { require(checkingAddress != address(0), "AddressBook: zero address"); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/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. */ abstract 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() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol) pragma solidity ^0.8.0; /** * @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 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 view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
// SPDX-License-Identifier: UNLICENSED // Copyright (c) Eywa.Fi, 2021-2024 - all rights reserved pragma solidity 0.8.17; interface IAddressBook { /// @dev returns portal by given chainId function portal(uint64 chainId) external view returns (address); /// @dev returns synthesis by given chainId function synthesis(uint64 chainId) external view returns (address); /// @dev returns router by given chainId function router(uint64 chainId) external view returns (address); /// @dev returns whitelist function whitelist() external view returns (address); /// @dev returns treasury function treasury() external view returns (address); /// @dev returns gateKeeper function gateKeeper() external view returns (address); /// @dev returns bridge function bridge() external view returns (address); /// @dev returns opsRegistrar function opsRegistrar() external view returns (address); /// @dev returns wrapped native asset (WETH) function WETH() external view returns (address); }
// SPDX-License-Identifier: UNLICENSED // Copyright (c) Eywa.Fi, 2021-2023 - all rights reserved pragma solidity 0.8.17; interface IGateKeeper { function calculateCost( address payToken, uint256 dataLength, uint64 chainIdTo, address sender ) external returns (uint256 amountToPay); function sendData( bytes calldata data, address to, uint64 chainIdTo, address payToken ) external payable; function getNonce() external view returns (uint256); function bridge() external view returns (address); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"gateKeeper","type":"address"}],"name":"GateKeeperSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"opsRegistrar","type":"address"}],"name":"OpsRegistrarSet","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":false,"internalType":"address","name":"portal","type":"address"},{"indexed":false,"internalType":"uint64","name":"chainId","type":"uint64"}],"name":"PortalSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"router","type":"address"},{"indexed":false,"internalType":"uint64","name":"chainId","type":"uint64"}],"name":"RouterSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"synthesis","type":"address"},{"indexed":false,"internalType":"uint64","name":"chainId","type":"uint64"}],"name":"SynthesisSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"treasury","type":"address"}],"name":"TreasurySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"opsRegistrar","type":"address"}],"name":"WETHSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"whitelist","type":"address"}],"name":"WhitelistSet","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bridge","outputs":[{"internalType":"address","name":"bridge_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gateKeeper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"opsRegistrar","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"portal","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gateKeeper_","type":"address"}],"name":"setGateKeeper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"opsRegistrar_","type":"address"}],"name":"setOpsRegistrar","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"chainId","type":"uint64"},{"internalType":"address","name":"clpEndPoint","type":"address"}],"internalType":"struct AddressBook.Record[]","name":"records","type":"tuple[]"}],"name":"setPortal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"chainId","type":"uint64"},{"internalType":"address","name":"clpEndPoint","type":"address"}],"internalType":"struct AddressBook.Record[]","name":"records","type":"tuple[]"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"chainId","type":"uint64"},{"internalType":"address","name":"clpEndPoint","type":"address"}],"internalType":"struct AddressBook.Record[]","name":"records","type":"tuple[]"}],"name":"setSynthesis","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"treasury_","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"WETH_","type":"address"}],"name":"setWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"whitelist_","type":"address"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"synthesis","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610be58061007e6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063e78cea9211610071578063e78cea921461028b578063f0f4426014610293578063f2fde38b146102a6578063f4887f15146102b9578063f5427af0146102cc57600080fd5b80638da5cb5b1461020257806393e59dc114610213578063ad5c464814610226578063d0fe96ae14610239578063d4f0cceb1461026257600080fd5b80635b769f3c116100f45780635b769f3c146101ae57806361d027b3146101c15780636fd7a80f146101d4578063715018a6146101e7578063854cff2f146101ef57600080fd5b80630fdcb5c314610131578063252f175e1461014657806332a91f511461015957806345d61ded1461016c5780634ea0b1c01461019b575b600080fd5b61014461013f366004610a22565b6102f5565b005b610144610154366004610a22565b61030d565b610144610167366004610b00565b610322565b60065461017f906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6101446101a9366004610a22565b610388565b6101446101bc366004610b00565b61039d565b60045461017f906001600160a01b031681565b60075461017f906001600160a01b031681565b6101446103fc565b6101446101fd366004610b00565b610410565b6000546001600160a01b031661017f565b60055461017f906001600160a01b031681565b60085461017f906001600160a01b031681565b61017f610247366004610b24565b6003602052600090815260409020546001600160a01b031681565b61017f610270366004610b24565b6002602052600090815260409020546001600160a01b031681565b61017f61046f565b6101446102a1366004610b00565b610500565b6101446102b4366004610b00565b61055f565b6101446102c7366004610b00565b6105da565b61017f6102da366004610b24565b6001602052600090815260409020546001600160a01b031681565b6102fd610639565b61030a6001826000610693565b50565b610315610639565b61030a6002826001610693565b61032a610639565b610333816107a5565b600780546001600160a01b0319166001600160a01b0383169081179091556040519081527fa6451a6cf126bf071e67fc9158378df9f068038ce6d67f1e15ed1d9761c20c7a906020015b60405180910390a150565b610390610639565b61030a6003826002610693565b6103a5610639565b6103ae816107a5565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f41408be49f75701fe4bb8484ce88d68f1d82e03cb4eb44263b6682ce2dbd32f09060200161037d565b610404610639565b61040e60006107fb565b565b610418610639565b610421816107a5565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f29d77446d0fb0dcebabf25ce79ea69ba1382a4525d4acf615a38c89c798aef719060200161037d565b6006546000906001600160a01b0316156104fd57600660009054906101000a90046001600160a01b03166001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190610b3f565b90505b90565b610508610639565b610511816107a5565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f9060200161037d565b610567610639565b6001600160a01b0381166105d15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61030a816107fb565b6105e2610639565b6105eb816107a5565b600680546001600160a01b0319166001600160a01b0383169081179091556040519081527f5bbdab227f09862389aad197176a8cc81e4d162e2953ef9293725ca3ed54728a9060200161037d565b6000546001600160a01b0316331461040e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105c8565b60005b825181101561079f576106c58382815181106106b4576106b4610b5c565b6020026020010151602001516107a5565b8281815181106106d7576106d7610b5c565b6020026020010151602001518460008584815181106106f8576106f8610b5c565b60200260200101516000015167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061078f83828151811061075f5761075f610b5c565b60200260200101516020015184838151811061077d5761077d610b5c565b6020026020010151600001518461084b565b61079881610b72565b9050610696565b50505050565b6001600160a01b03811661030a5760405162461bcd60e51b815260206004820152601960248201527f41646472657373426f6f6b3a207a65726f20616464726573730000000000000060448201526064016105c8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081600381111561085f5761085f610b99565b036108b557604080516001600160a01b038516815267ffffffffffffffff841660208201527f9bf3f0ed7d4bd7669c88d421527321fc61d8abbd60ff31236405eeed8e3d2e2091015b60405180910390a1505050565b60018160038111156108c9576108c9610b99565b0361091657604080516001600160a01b038516815267ffffffffffffffff841660208201527fd0ab2db9a462415280780a7d18fe1b39f8c2633ad2f45fe766699bb56e06065f91016108a8565b600281600381111561092a5761092a610b99565b0361097b57604080516001600160a01b038516815267ffffffffffffffff841660208201527fb1e39240f01f0c544719c9c959ac8748ed08763d1cccca6d9593c5e5a232e250910160405180910390a15b505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156109b9576109b9610980565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156109e8576109e8610980565b604052919050565b803567ffffffffffffffff81168114610a0857600080fd5b919050565b6001600160a01b038116811461030a57600080fd5b60006020808385031215610a3557600080fd5b823567ffffffffffffffff80821115610a4d57600080fd5b818501915085601f830112610a6157600080fd5b813581811115610a7357610a73610980565b610a81848260051b016109bf565b818152848101925060069190911b830184019087821115610aa157600080fd5b928401925b81841015610af55760408489031215610abf5760008081fd5b610ac7610996565b610ad0856109f0565b815285850135610adf81610a0d565b8187015283526040939093019291840191610aa6565b979650505050505050565b600060208284031215610b1257600080fd5b8135610b1d81610a0d565b9392505050565b600060208284031215610b3657600080fd5b610b1d826109f0565b600060208284031215610b5157600080fd5b8151610b1d81610a0d565b634e487b7160e01b600052603260045260246000fd5b600060018201610b9257634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052602160045260246000fdfea26469706673582212207e09fd5fcef9b6f115508d98b7f59efcbc35a934a7f9b283cce71da9dc82624f64736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063e78cea9211610071578063e78cea921461028b578063f0f4426014610293578063f2fde38b146102a6578063f4887f15146102b9578063f5427af0146102cc57600080fd5b80638da5cb5b1461020257806393e59dc114610213578063ad5c464814610226578063d0fe96ae14610239578063d4f0cceb1461026257600080fd5b80635b769f3c116100f45780635b769f3c146101ae57806361d027b3146101c15780636fd7a80f146101d4578063715018a6146101e7578063854cff2f146101ef57600080fd5b80630fdcb5c314610131578063252f175e1461014657806332a91f511461015957806345d61ded1461016c5780634ea0b1c01461019b575b600080fd5b61014461013f366004610a22565b6102f5565b005b610144610154366004610a22565b61030d565b610144610167366004610b00565b610322565b60065461017f906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6101446101a9366004610a22565b610388565b6101446101bc366004610b00565b61039d565b60045461017f906001600160a01b031681565b60075461017f906001600160a01b031681565b6101446103fc565b6101446101fd366004610b00565b610410565b6000546001600160a01b031661017f565b60055461017f906001600160a01b031681565b60085461017f906001600160a01b031681565b61017f610247366004610b24565b6003602052600090815260409020546001600160a01b031681565b61017f610270366004610b24565b6002602052600090815260409020546001600160a01b031681565b61017f61046f565b6101446102a1366004610b00565b610500565b6101446102b4366004610b00565b61055f565b6101446102c7366004610b00565b6105da565b61017f6102da366004610b24565b6001602052600090815260409020546001600160a01b031681565b6102fd610639565b61030a6001826000610693565b50565b610315610639565b61030a6002826001610693565b61032a610639565b610333816107a5565b600780546001600160a01b0319166001600160a01b0383169081179091556040519081527fa6451a6cf126bf071e67fc9158378df9f068038ce6d67f1e15ed1d9761c20c7a906020015b60405180910390a150565b610390610639565b61030a6003826002610693565b6103a5610639565b6103ae816107a5565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f41408be49f75701fe4bb8484ce88d68f1d82e03cb4eb44263b6682ce2dbd32f09060200161037d565b610404610639565b61040e60006107fb565b565b610418610639565b610421816107a5565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f29d77446d0fb0dcebabf25ce79ea69ba1382a4525d4acf615a38c89c798aef719060200161037d565b6006546000906001600160a01b0316156104fd57600660009054906101000a90046001600160a01b03166001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190610b3f565b90505b90565b610508610639565b610511816107a5565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f9060200161037d565b610567610639565b6001600160a01b0381166105d15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61030a816107fb565b6105e2610639565b6105eb816107a5565b600680546001600160a01b0319166001600160a01b0383169081179091556040519081527f5bbdab227f09862389aad197176a8cc81e4d162e2953ef9293725ca3ed54728a9060200161037d565b6000546001600160a01b0316331461040e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105c8565b60005b825181101561079f576106c58382815181106106b4576106b4610b5c565b6020026020010151602001516107a5565b8281815181106106d7576106d7610b5c565b6020026020010151602001518460008584815181106106f8576106f8610b5c565b60200260200101516000015167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061078f83828151811061075f5761075f610b5c565b60200260200101516020015184838151811061077d5761077d610b5c565b6020026020010151600001518461084b565b61079881610b72565b9050610696565b50505050565b6001600160a01b03811661030a5760405162461bcd60e51b815260206004820152601960248201527f41646472657373426f6f6b3a207a65726f20616464726573730000000000000060448201526064016105c8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081600381111561085f5761085f610b99565b036108b557604080516001600160a01b038516815267ffffffffffffffff841660208201527f9bf3f0ed7d4bd7669c88d421527321fc61d8abbd60ff31236405eeed8e3d2e2091015b60405180910390a1505050565b60018160038111156108c9576108c9610b99565b0361091657604080516001600160a01b038516815267ffffffffffffffff841660208201527fd0ab2db9a462415280780a7d18fe1b39f8c2633ad2f45fe766699bb56e06065f91016108a8565b600281600381111561092a5761092a610b99565b0361097b57604080516001600160a01b038516815267ffffffffffffffff841660208201527fb1e39240f01f0c544719c9c959ac8748ed08763d1cccca6d9593c5e5a232e250910160405180910390a15b505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156109b9576109b9610980565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156109e8576109e8610980565b604052919050565b803567ffffffffffffffff81168114610a0857600080fd5b919050565b6001600160a01b038116811461030a57600080fd5b60006020808385031215610a3557600080fd5b823567ffffffffffffffff80821115610a4d57600080fd5b818501915085601f830112610a6157600080fd5b813581811115610a7357610a73610980565b610a81848260051b016109bf565b818152848101925060069190911b830184019087821115610aa157600080fd5b928401925b81841015610af55760408489031215610abf5760008081fd5b610ac7610996565b610ad0856109f0565b815285850135610adf81610a0d565b8187015283526040939093019291840191610aa6565b979650505050505050565b600060208284031215610b1257600080fd5b8135610b1d81610a0d565b9392505050565b600060208284031215610b3657600080fd5b610b1d826109f0565b600060208284031215610b5157600080fd5b8151610b1d81610a0d565b634e487b7160e01b600052603260045260246000fd5b600060018201610b9257634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052602160045260246000fdfea26469706673582212207e09fd5fcef9b6f115508d98b7f59efcbc35a934a7f9b283cce71da9dc82624f64736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.