Source Code
Latest 9 from a total of 9 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Set Receiver | 29925154 | 31 days ago | IN | 0 FRAX | 0.00000254 | ||||
| Set WETH | 29925151 | 31 days ago | IN | 0 FRAX | 0.00000255 | ||||
| Set Gate Keeper | 29925147 | 31 days ago | IN | 0 FRAX | 0.00000255 | ||||
| Set Whitelist | 29925144 | 31 days ago | IN | 0 FRAX | 0.00000261 | ||||
| Set Treasury | 29925141 | 31 days ago | IN | 0 FRAX | 0.00000261 | ||||
| Set Synthesis | 29925135 | 31 days ago | IN | 0 FRAX | 0.00001065 | ||||
| Set Portal | 29925125 | 31 days ago | IN | 0 FRAX | 0.00001083 | ||||
| Set Router | 29925115 | 31 days ago | IN | 0 FRAX | 0.00000942 | ||||
| Transfer Ownersh... | 29922487 | 31 days ago | IN | 0 FRAX | 0.00000224 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
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-2025 - all rights reserved
pragma solidity 0.8.17;
import "@openzeppelin/contracts/access/Ownable.sol";
import "./interfaces/IAddressBook.sol";
import "./utils/TypecastLib.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
bytes32 clpEndPoint;
}
/// @dev chainId -> portal address
mapping(uint64 => bytes32) public portalV3;
/// @dev chainId -> synthesis address
mapping(uint64 => bytes32) public synthesisV3;
/// @dev chainId -> router address
mapping(uint64 => bytes32) public routerV3;
/// @dev treasury address
address public treasury;
/// @dev whitelist address
address public whitelist;
/// @dev gate keeper address
address public gateKeeper;
/// @dev wrapped native asset
address public WETH;
/// @dev receiver address
address public receiver;
event PortalSet(bytes32 portal, uint64 chainId);
event SynthesisSet(bytes32 synthesis, uint64 chainId);
event RouterSet(bytes32 router, uint64 chainId);
event TreasurySet(address treasury);
event WhitelistSet(address whitelist);
event GateKeeperSet(address gateKeeper);
event WETHSet(address opsRegistrar);
event ReceiverSet(address receiver);
function setPortal(Record[] calldata records) external onlyOwner {
_setRecords(portalV3, records, RecordTypes.Portal);
}
function setSynthesis(Record[] calldata records) external onlyOwner {
_setRecords(synthesisV3, records, RecordTypes.Synthesis);
}
function setRouter(Record[] calldata records) external onlyOwner {
_setRecords(routerV3, 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 setReceiver(address receiver_) external onlyOwner {
_checkAddress(receiver_);
receiver = receiver_;
emit ReceiverSet(receiver_);
}
function setWhitelist(address whitelist_) external onlyOwner {
_checkAddress(whitelist_);
whitelist = whitelist_;
emit WhitelistSet(whitelist);
}
function setWETH(address WETH_) external onlyOwner {
// can be set to ZERO address
WETH = WETH_;
emit WETHSet(WETH);
}
function portal(uint64 chainId) external view returns(address) {
return TypecastLib.castToAddress(portalV3[chainId]);
}
function synthesis(uint64 chainId) external view returns(address) {
return TypecastLib.castToAddress(synthesisV3[chainId]);
}
function router(uint64 chainId) external view returns(address) {
return TypecastLib.castToAddress(routerV3[chainId]);
}
function _setRecords(mapping(uint64 => bytes32) storage map_, Record[] calldata 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(bytes32 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");
}
function _checkAddress(bytes32 checkingAddress) private pure {
require(checkingAddress != 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-2025 - 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 portal by given chainId
function portalV3(uint64 chainId) external view returns (bytes32);
/// @dev returns synthesis by given chainId
function synthesisV3(uint64 chainId) external view returns (bytes32);
/// @dev returns router by given chainId
function routerV3(uint64 chainId) external view returns (bytes32);
/// @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 receiver
function receiver() 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-2025 - all rights reserved
pragma solidity ^0.8.17;
library TypecastLib {
function castToAddress(bytes32 x) internal pure returns (address) {
return address(uint160(uint256(x)));
}
function castToBytes32(address a) internal pure returns (bytes32) {
return bytes32(uint256(uint160(a)));
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":"bytes32","name":"portal","type":"bytes32"},{"indexed":false,"internalType":"uint64","name":"chainId","type":"uint64"}],"name":"PortalSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"}],"name":"ReceiverSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"router","type":"bytes32"},{"indexed":false,"internalType":"uint64","name":"chainId","type":"uint64"}],"name":"RouterSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"synthesis","type":"bytes32"},{"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":"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":"chainId","type":"uint64"}],"name":"portal","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"portalV3","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainId","type":"uint64"}],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"routerV3","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"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":"bytes32","name":"clpEndPoint","type":"bytes32"}],"internalType":"struct AddressBook.Record[]","name":"records","type":"tuple[]"}],"name":"setPortal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver_","type":"address"}],"name":"setReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"chainId","type":"uint64"},{"internalType":"bytes32","name":"clpEndPoint","type":"bytes32"}],"internalType":"struct AddressBook.Record[]","name":"records","type":"tuple[]"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"chainId","type":"uint64"},{"internalType":"bytes32","name":"clpEndPoint","type":"bytes32"}],"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":"chainId","type":"uint64"}],"name":"synthesis","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"synthesisV3","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"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
608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610af08061007e6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063ad5c4648116100b8578063f0f442601161007c578063f0f44260146102be578063f2fde38b146102d1578063f4887f15146102e4578063f5427af0146102f7578063f6cf09ee1461030a578063f7260d3e1461031d57600080fd5b8063ad5c464814610252578063d0fe96ae14610265578063d4f0cceb14610278578063dd8841551461028b578063e94e91fe1461029e57600080fd5b8063854cff2f1161010a578063854cff2f146101ba5780638da5cb5b146101cd5780638fe795c4146101de57806393e59dc1146101f157806397c2cd9114610204578063a6b9f76e1461023257600080fd5b806345d61ded146101475780635b769f3c1461017757806361d027b31461018c578063715018a61461019f578063718da7ee146101a7575b600080fd5b60065461015a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61018a610185366004610998565b610330565b005b60045461015a906001600160a01b031681565b61018a61038d565b61018a6101b5366004610998565b6103a1565b61018a6101c8366004610998565b610400565b6000546001600160a01b031661015a565b61018a6101ec3660046109c8565b61045f565b60055461015a906001600160a01b031681565b610224610212366004610a3d565b60036020526000908152604090205481565b60405190815260200161016e565b610224610240366004610a3d565b60016020526000908152604090205481565b60075461015a906001600160a01b031681565b61015a610273366004610a3d565b610479565b61015a610286366004610a3d565b61049a565b61018a6102993660046109c8565b6104b9565b6102246102ac366004610a3d565b60026020526000908152604090205481565b61018a6102cc366004610998565b6104cf565b61018a6102df366004610998565b61052e565b61018a6102f2366004610998565b6105ac565b61015a610305366004610a3d565b61060b565b61018a6103183660046109c8565b61062a565b60085461015a906001600160a01b031681565b610338610640565b600780546001600160a01b0319166001600160a01b0383169081179091556040519081527f41408be49f75701fe4bb8484ce88d68f1d82e03cb4eb44263b6682ce2dbd32f0906020015b60405180910390a150565b610395610640565b61039f600061069a565b565b6103a9610640565b6103b2816106ea565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527fb68fd1a788a85f8f18de7976d851969ff9ff2216de81169c17a6f4ac94c23def90602001610382565b610408610640565b610411816106ea565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f29d77446d0fb0dcebabf25ce79ea69ba1382a4525d4acf615a38c89c798aef7190602001610382565b610467610640565b61047560028383600161073c565b5050565b67ffffffffffffffff81166000908152600360205260408120545b92915050565b67ffffffffffffffff8116600090815260026020526040812054610494565b6104c1610640565b61047560038383600261073c565b6104d7610640565b6104e0816106ea565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f90602001610382565b610536610640565b6001600160a01b0381166105a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6105a98161069a565b50565b6105b4610640565b6105bd816106ea565b600680546001600160a01b0319166001600160a01b0383169081179091556040519081527f5bbdab227f09862389aad197176a8cc81e4d162e2953ef9293725ca3ed54728a90602001610382565b67ffffffffffffffff8116600090815260016020526040812054610494565b610632610640565b61047560018383600061073c565b6000546001600160a01b0316331461039f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610597565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166105a95760405162461bcd60e51b815260206004820152601960248201527841646472657373426f6f6b3a207a65726f206164647265737360381b6044820152606401610597565b60005b8281101561082a5761076b84848381811061075c5761075c610a67565b90506040020160200135610831565b83838281811061077d5761077d610a67565b9050604002016020013585600086868581811061079c5761079c610a67565b6107b29260206040909202019081019150610a3d565b67ffffffffffffffff16815260208101919091526040016000205561081a8484838181106107e2576107e2610a67565b905060400201602001358585848181106107fe576107fe610a67565b6108149260206040909202019081019150610a3d565b8461087e565b61082381610a7d565b905061073f565b5050505050565b60008190036105a95760405162461bcd60e51b815260206004820152601960248201527841646472657373426f6f6b3a207a65726f206164647265737360381b6044820152606401610597565b600081600381111561089257610892610aa4565b036108df576040805184815267ffffffffffffffff841660208201527ffac289a93eaeb79d4ae1e7bf36c40e12301eefa8b1f27a6d624786ad25c2ad3f91015b60405180910390a1505050565b60018160038111156108f3576108f3610aa4565b03610937576040805184815267ffffffffffffffff841660208201527f3fab4ea98fb1b7e156c476e3a0f47c42c0731e981186c61cd1beaa4e13cb50d891016108d2565b600281600381111561094b5761094b610aa4565b03610993576040805184815267ffffffffffffffff841660208201527f9e3051830211d62c3023f606a489255f654bea30e3dcf6d24f6882e647a74e3d910160405180910390a15b505050565b6000602082840312156109aa57600080fd5b81356001600160a01b03811681146109c157600080fd5b9392505050565b600080602083850312156109db57600080fd5b823567ffffffffffffffff808211156109f357600080fd5b818501915085601f830112610a0757600080fd5b813581811115610a1657600080fd5b8660208260061b8501011115610a2b57600080fd5b60209290920196919550909350505050565b600060208284031215610a4f57600080fd5b813567ffffffffffffffff811681146109c157600080fd5b634e487b7160e01b600052603260045260246000fd5b600060018201610a9d57634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220633fb6c7f859ece0cb3216e112a0c8cd811103eacc19d8371f9ef61910797d8264736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101425760003560e01c8063ad5c4648116100b8578063f0f442601161007c578063f0f44260146102be578063f2fde38b146102d1578063f4887f15146102e4578063f5427af0146102f7578063f6cf09ee1461030a578063f7260d3e1461031d57600080fd5b8063ad5c464814610252578063d0fe96ae14610265578063d4f0cceb14610278578063dd8841551461028b578063e94e91fe1461029e57600080fd5b8063854cff2f1161010a578063854cff2f146101ba5780638da5cb5b146101cd5780638fe795c4146101de57806393e59dc1146101f157806397c2cd9114610204578063a6b9f76e1461023257600080fd5b806345d61ded146101475780635b769f3c1461017757806361d027b31461018c578063715018a61461019f578063718da7ee146101a7575b600080fd5b60065461015a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61018a610185366004610998565b610330565b005b60045461015a906001600160a01b031681565b61018a61038d565b61018a6101b5366004610998565b6103a1565b61018a6101c8366004610998565b610400565b6000546001600160a01b031661015a565b61018a6101ec3660046109c8565b61045f565b60055461015a906001600160a01b031681565b610224610212366004610a3d565b60036020526000908152604090205481565b60405190815260200161016e565b610224610240366004610a3d565b60016020526000908152604090205481565b60075461015a906001600160a01b031681565b61015a610273366004610a3d565b610479565b61015a610286366004610a3d565b61049a565b61018a6102993660046109c8565b6104b9565b6102246102ac366004610a3d565b60026020526000908152604090205481565b61018a6102cc366004610998565b6104cf565b61018a6102df366004610998565b61052e565b61018a6102f2366004610998565b6105ac565b61015a610305366004610a3d565b61060b565b61018a6103183660046109c8565b61062a565b60085461015a906001600160a01b031681565b610338610640565b600780546001600160a01b0319166001600160a01b0383169081179091556040519081527f41408be49f75701fe4bb8484ce88d68f1d82e03cb4eb44263b6682ce2dbd32f0906020015b60405180910390a150565b610395610640565b61039f600061069a565b565b6103a9610640565b6103b2816106ea565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527fb68fd1a788a85f8f18de7976d851969ff9ff2216de81169c17a6f4ac94c23def90602001610382565b610408610640565b610411816106ea565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f29d77446d0fb0dcebabf25ce79ea69ba1382a4525d4acf615a38c89c798aef7190602001610382565b610467610640565b61047560028383600161073c565b5050565b67ffffffffffffffff81166000908152600360205260408120545b92915050565b67ffffffffffffffff8116600090815260026020526040812054610494565b6104c1610640565b61047560038383600261073c565b6104d7610640565b6104e0816106ea565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f90602001610382565b610536610640565b6001600160a01b0381166105a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6105a98161069a565b50565b6105b4610640565b6105bd816106ea565b600680546001600160a01b0319166001600160a01b0383169081179091556040519081527f5bbdab227f09862389aad197176a8cc81e4d162e2953ef9293725ca3ed54728a90602001610382565b67ffffffffffffffff8116600090815260016020526040812054610494565b610632610640565b61047560018383600061073c565b6000546001600160a01b0316331461039f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610597565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166105a95760405162461bcd60e51b815260206004820152601960248201527841646472657373426f6f6b3a207a65726f206164647265737360381b6044820152606401610597565b60005b8281101561082a5761076b84848381811061075c5761075c610a67565b90506040020160200135610831565b83838281811061077d5761077d610a67565b9050604002016020013585600086868581811061079c5761079c610a67565b6107b29260206040909202019081019150610a3d565b67ffffffffffffffff16815260208101919091526040016000205561081a8484838181106107e2576107e2610a67565b905060400201602001358585848181106107fe576107fe610a67565b6108149260206040909202019081019150610a3d565b8461087e565b61082381610a7d565b905061073f565b5050505050565b60008190036105a95760405162461bcd60e51b815260206004820152601960248201527841646472657373426f6f6b3a207a65726f206164647265737360381b6044820152606401610597565b600081600381111561089257610892610aa4565b036108df576040805184815267ffffffffffffffff841660208201527ffac289a93eaeb79d4ae1e7bf36c40e12301eefa8b1f27a6d624786ad25c2ad3f91015b60405180910390a1505050565b60018160038111156108f3576108f3610aa4565b03610937576040805184815267ffffffffffffffff841660208201527f3fab4ea98fb1b7e156c476e3a0f47c42c0731e981186c61cd1beaa4e13cb50d891016108d2565b600281600381111561094b5761094b610aa4565b03610993576040805184815267ffffffffffffffff841660208201527f9e3051830211d62c3023f606a489255f654bea30e3dcf6d24f6882e647a74e3d910160405180910390a15b505050565b6000602082840312156109aa57600080fd5b81356001600160a01b03811681146109c157600080fd5b9392505050565b600080602083850312156109db57600080fd5b823567ffffffffffffffff808211156109f357600080fd5b818501915085601f830112610a0757600080fd5b813581811115610a1657600080fd5b8660208260061b8501011115610a2b57600080fd5b60209290920196919550909350505050565b600060208284031215610a4f57600080fd5b813567ffffffffffffffff811681146109c157600080fd5b634e487b7160e01b600052603260045260246000fd5b600060018201610a9d57634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220633fb6c7f859ece0cb3216e112a0c8cd811103eacc19d8371f9ef61910797d8264736f6c63430008110033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in FRAX
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.