Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 14 from a total of 14 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Router | 20080164 | 87 days ago | IN | 0 ETH | 0.00248341 | ||||
Set Synthesis | 20080163 | 87 days ago | IN | 0 ETH | 0.0028898 | ||||
Set Portal | 20080162 | 87 days ago | IN | 0 ETH | 0.002885 | ||||
Set Router | 20067708 | 89 days ago | IN | 0 ETH | 0.00061624 | ||||
Set Synthesis | 20067707 | 89 days ago | IN | 0 ETH | 0.00061525 | ||||
Set Portal | 20067706 | 89 days ago | IN | 0 ETH | 0.00061407 | ||||
Set Router | 20032258 | 94 days ago | IN | 0 ETH | 0.00112909 | ||||
Set Whitelist | 18740421 | 275 days ago | IN | 0 ETH | 0.00159732 | ||||
Set Gate Keeper | 18740420 | 275 days ago | IN | 0 ETH | 0.0015963 | ||||
Set Treasury | 18740419 | 275 days ago | IN | 0 ETH | 0.00159899 | ||||
Set Router | 18740416 | 275 days ago | IN | 0 ETH | 0.00692552 | ||||
Set Synthesis | 18740414 | 275 days ago | IN | 0 ETH | 0.00719439 | ||||
Set Portal | 18740287 | 275 days ago | IN | 0 ETH | 0.00811835 | ||||
0x60806040 | 18727801 | 277 days ago | IN | 0 ETH | 0.03799118 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
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; 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); 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 _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 v4.4.1 (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; } }
// SPDX-License-Identifier: UNLICENSED // Copyright (c) Eywa.Fi, 2021-2023 - 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); }
// 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":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":"whitelist","type":"address"}],"name":"WhitelistSet","type":"event"},{"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":"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":[{"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":"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
608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610aaf8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806393e59dc111610097578063f0f4426011610066578063f0f442601461021b578063f2fde38b1461022e578063f4887f1514610241578063f5427af01461025457600080fd5b806393e59dc1146101ae578063d0fe96ae146101c1578063d4f0cceb146101ea578063e78cea921461021357600080fd5b806361d027b3116100d357806361d027b31461016f578063715018a614610182578063854cff2f1461018a5780638da5cb5b1461019d57600080fd5b80630fdcb5c314610105578063252f175e1461011a57806345d61ded1461012d5780634ea0b1c01461015c575b600080fd5b6101186101133660046108ec565b61027d565b005b6101186101283660046108ec565b610295565b600654610140906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b61011861016a3660046108ec565b6102aa565b600454610140906001600160a01b031681565b6101186102bf565b6101186101983660046109ca565b6102d3565b6000546001600160a01b0316610140565b600554610140906001600160a01b031681565b6101406101cf3660046109ee565b6003602052600090815260409020546001600160a01b031681565b6101406101f83660046109ee565b6002602052600090815260409020546001600160a01b031681565b610140610339565b6101186102293660046109ca565b6103ca565b61011861023c3660046109ca565b610429565b61011861024f3660046109ca565b6104a4565b6101406102623660046109ee565b6001602052600090815260409020546001600160a01b031681565b610285610503565b610292600182600061055d565b50565b61029d610503565b610292600282600161055d565b6102b2610503565b610292600382600261055d565b6102c7610503565b6102d1600061066f565b565b6102db610503565b6102e4816106bf565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f29d77446d0fb0dcebabf25ce79ea69ba1382a4525d4acf615a38c89c798aef71906020015b60405180910390a150565b6006546000906001600160a01b0316156103c757600660009054906101000a90046001600160a01b03166001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c49190610a09565b90505b90565b6103d2610503565b6103db816106bf565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f9060200161032e565b610431610503565b6001600160a01b03811661049b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6102928161066f565b6104ac610503565b6104b5816106bf565b600680546001600160a01b0319166001600160a01b0383169081179091556040519081527f5bbdab227f09862389aad197176a8cc81e4d162e2953ef9293725ca3ed54728a9060200161032e565b6000546001600160a01b031633146102d15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610492565b60005b82518110156106695761058f83828151811061057e5761057e610a26565b6020026020010151602001516106bf565b8281815181106105a1576105a1610a26565b6020026020010151602001518460008584815181106105c2576105c2610a26565b60200260200101516000015167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061065983828151811061062957610629610a26565b60200260200101516020015184838151811061064757610647610a26565b60200260200101516000015184610715565b61066281610a3c565b9050610560565b50505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166102925760405162461bcd60e51b815260206004820152601960248201527f41646472657373426f6f6b3a207a65726f2061646472657373000000000000006044820152606401610492565b600081600381111561072957610729610a63565b0361077f57604080516001600160a01b038516815267ffffffffffffffff841660208201527f9bf3f0ed7d4bd7669c88d421527321fc61d8abbd60ff31236405eeed8e3d2e2091015b60405180910390a1505050565b600181600381111561079357610793610a63565b036107e057604080516001600160a01b038516815267ffffffffffffffff841660208201527fd0ab2db9a462415280780a7d18fe1b39f8c2633ad2f45fe766699bb56e06065f9101610772565b60028160038111156107f4576107f4610a63565b0361084557604080516001600160a01b038516815267ffffffffffffffff841660208201527fb1e39240f01f0c544719c9c959ac8748ed08763d1cccca6d9593c5e5a232e250910160405180910390a15b505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156108835761088361084a565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108b2576108b261084a565b604052919050565b803567ffffffffffffffff811681146108d257600080fd5b919050565b6001600160a01b038116811461029257600080fd5b600060208083850312156108ff57600080fd5b823567ffffffffffffffff8082111561091757600080fd5b818501915085601f83011261092b57600080fd5b81358181111561093d5761093d61084a565b61094b848260051b01610889565b818152848101925060069190911b83018401908782111561096b57600080fd5b928401925b818410156109bf57604084890312156109895760008081fd5b610991610860565b61099a856108ba565b8152858501356109a9816108d7565b8187015283526040939093019291840191610970565b979650505050505050565b6000602082840312156109dc57600080fd5b81356109e7816108d7565b9392505050565b600060208284031215610a0057600080fd5b6109e7826108ba565b600060208284031215610a1b57600080fd5b81516109e7816108d7565b634e487b7160e01b600052603260045260246000fd5b600060018201610a5c57634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220c0d8e5d7a1e09f15f085834528b4166bfed2636505b90c883ac38f71ecb4986c64736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c806393e59dc111610097578063f0f4426011610066578063f0f442601461021b578063f2fde38b1461022e578063f4887f1514610241578063f5427af01461025457600080fd5b806393e59dc1146101ae578063d0fe96ae146101c1578063d4f0cceb146101ea578063e78cea921461021357600080fd5b806361d027b3116100d357806361d027b31461016f578063715018a614610182578063854cff2f1461018a5780638da5cb5b1461019d57600080fd5b80630fdcb5c314610105578063252f175e1461011a57806345d61ded1461012d5780634ea0b1c01461015c575b600080fd5b6101186101133660046108ec565b61027d565b005b6101186101283660046108ec565b610295565b600654610140906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b61011861016a3660046108ec565b6102aa565b600454610140906001600160a01b031681565b6101186102bf565b6101186101983660046109ca565b6102d3565b6000546001600160a01b0316610140565b600554610140906001600160a01b031681565b6101406101cf3660046109ee565b6003602052600090815260409020546001600160a01b031681565b6101406101f83660046109ee565b6002602052600090815260409020546001600160a01b031681565b610140610339565b6101186102293660046109ca565b6103ca565b61011861023c3660046109ca565b610429565b61011861024f3660046109ca565b6104a4565b6101406102623660046109ee565b6001602052600090815260409020546001600160a01b031681565b610285610503565b610292600182600061055d565b50565b61029d610503565b610292600282600161055d565b6102b2610503565b610292600382600261055d565b6102c7610503565b6102d1600061066f565b565b6102db610503565b6102e4816106bf565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f29d77446d0fb0dcebabf25ce79ea69ba1382a4525d4acf615a38c89c798aef71906020015b60405180910390a150565b6006546000906001600160a01b0316156103c757600660009054906101000a90046001600160a01b03166001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c49190610a09565b90505b90565b6103d2610503565b6103db816106bf565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f9060200161032e565b610431610503565b6001600160a01b03811661049b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6102928161066f565b6104ac610503565b6104b5816106bf565b600680546001600160a01b0319166001600160a01b0383169081179091556040519081527f5bbdab227f09862389aad197176a8cc81e4d162e2953ef9293725ca3ed54728a9060200161032e565b6000546001600160a01b031633146102d15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610492565b60005b82518110156106695761058f83828151811061057e5761057e610a26565b6020026020010151602001516106bf565b8281815181106105a1576105a1610a26565b6020026020010151602001518460008584815181106105c2576105c2610a26565b60200260200101516000015167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061065983828151811061062957610629610a26565b60200260200101516020015184838151811061064757610647610a26565b60200260200101516000015184610715565b61066281610a3c565b9050610560565b50505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166102925760405162461bcd60e51b815260206004820152601960248201527f41646472657373426f6f6b3a207a65726f2061646472657373000000000000006044820152606401610492565b600081600381111561072957610729610a63565b0361077f57604080516001600160a01b038516815267ffffffffffffffff841660208201527f9bf3f0ed7d4bd7669c88d421527321fc61d8abbd60ff31236405eeed8e3d2e2091015b60405180910390a1505050565b600181600381111561079357610793610a63565b036107e057604080516001600160a01b038516815267ffffffffffffffff841660208201527fd0ab2db9a462415280780a7d18fe1b39f8c2633ad2f45fe766699bb56e06065f9101610772565b60028160038111156107f4576107f4610a63565b0361084557604080516001600160a01b038516815267ffffffffffffffff841660208201527fb1e39240f01f0c544719c9c959ac8748ed08763d1cccca6d9593c5e5a232e250910160405180910390a15b505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156108835761088361084a565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108b2576108b261084a565b604052919050565b803567ffffffffffffffff811681146108d257600080fd5b919050565b6001600160a01b038116811461029257600080fd5b600060208083850312156108ff57600080fd5b823567ffffffffffffffff8082111561091757600080fd5b818501915085601f83011261092b57600080fd5b81358181111561093d5761093d61084a565b61094b848260051b01610889565b818152848101925060069190911b83018401908782111561096b57600080fd5b928401925b818410156109bf57604084890312156109895760008081fd5b610991610860565b61099a856108ba565b8152858501356109a9816108d7565b8187015283526040939093019291840191610970565b979650505050505050565b6000602082840312156109dc57600080fd5b81356109e7816108d7565b9392505050565b600060208284031215610a0057600080fd5b6109e7826108ba565b600060208284031215610a1b57600080fd5b81516109e7816108d7565b634e487b7160e01b600052603260045260246000fd5b600060018201610a5c57634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220c0d8e5d7a1e09f15f085834528b4166bfed2636505b90c883ac38f71ecb4986c64736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.