Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
FloorPriceFeedAdapter
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-07-03 */ // SPDX-License-Identifier: BSD-3-Clause pragma solidity 0.8.26; interface AggregatorV3Interface { function decimals() external view returns (uint8); function description() external view returns (string memory); function version() external view returns (uint256); function getRoundData(uint80 _roundId) external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); function latestRoundData() external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); } /** * @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; } } /** * @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. * * The initial owner is set to the address provided by the deployer. 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; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @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 { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @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 { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _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); } } contract FloorPriceFeedAdapter is Ownable { error StalePrice(); error InvalidPriceFeedDecimals(); AggregatorV3Interface public immutable floorPriceFeed; AggregatorV3Interface public immutable ethPriceFeed; uint public floorStalePriceDelay; uint public ethStalePriceDelay; /** * @return uint The scaled floor price in USD */ function latestAnswer() public view returns (int256) { ( , int floorRate, // floor/ETH rate , uint floorUpdatedAt, ) = floorPriceFeed.latestRoundData(); // check if price is stale if (floorStalePriceDelay != 0 && block.timestamp > floorUpdatedAt + floorStalePriceDelay) { revert StalePrice(); } ( , int ethRate, // ETH/USD rate , uint ethUpdatedAt, ) = ethPriceFeed.latestRoundData(); // check if price is stale if (ethStalePriceDelay != 0 && block.timestamp > ethUpdatedAt + ethStalePriceDelay) { revert StalePrice(); } return floorRate * ethRate / 1e18; // scale to 8 decimals places like Chainlink } /** * @return roundId always 0 * answer The scaled floor price in USD * startedAt always 0 * updatedAt always block.timestamp * answeredInRound always 0 */ function latestRoundData() public view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ) { return (0, latestAnswer(), 0, block.timestamp, 0); } constructor(AggregatorV3Interface floorPriceFeed_, AggregatorV3Interface ethPriceFeed_, uint _floorStalePriceDelay, uint _ethStalePriceDelay) public Ownable(msg.sender) { if (floorPriceFeed_.decimals() != 18 || ethPriceFeed_.decimals() != 8) { revert InvalidPriceFeedDecimals(); } floorPriceFeed = floorPriceFeed_; ethPriceFeed = ethPriceFeed_; floorStalePriceDelay = _floorStalePriceDelay; ethStalePriceDelay = _ethStalePriceDelay; } /** * @notice Set the time delay after which the price feed is considered stale. * @param _floorStalePriceDelay the time delay in seconds. */ function setFloorStalePriceDelay(uint _floorStalePriceDelay) external onlyOwner { floorStalePriceDelay = _floorStalePriceDelay; } /** * @notice Set the time delay after which the price feed is considered stale. * @param _ethStalePriceDelay the time delay in seconds. */ function setEthStalePriceDelay(uint _ethStalePriceDelay) external onlyOwner { ethStalePriceDelay = _ethStalePriceDelay; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract AggregatorV3Interface","name":"floorPriceFeed_","type":"address"},{"internalType":"contract AggregatorV3Interface","name":"ethPriceFeed_","type":"address"},{"internalType":"uint256","name":"_floorStalePriceDelay","type":"uint256"},{"internalType":"uint256","name":"_ethStalePriceDelay","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidPriceFeedDecimals","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"StalePrice","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"ethPriceFeed","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethStalePriceDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"floorPriceFeed","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"floorStalePriceDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"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":"uint256","name":"_ethStalePriceDelay","type":"uint256"}],"name":"setEthStalePriceDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_floorStalePriceDelay","type":"uint256"}],"name":"setFloorStalePriceDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c060405234801561000f575f80fd5b5060405161087138038061087183398101604081905261002e916101dd565b338061005357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61005c81610173565b50836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100bd919061021d565b60ff1660121415806101325750826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610106573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061012a919061021d565b60ff16600814155b1561015057604051630ef1f7e760e01b815260040160405180910390fd5b6001600160a01b039384166080529190921660a052600191909155600255610244565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146101d8575f80fd5b919050565b5f805f80608085870312156101f0575f80fd5b6101f9856101c2565b9350610207602086016101c2565b6040860151606090960151949790965092505050565b5f6020828403121561022d575f80fd5b815160ff8116811461023d575f80fd5b9392505050565b60805160a0516105fe6102735f395f818161011d015261029401525f818161015701526101d001526105fe5ff3fe608060405234801561000f575f80fd5b50600436106100a6575f3560e01c80638da5cb5b1161006e5780638da5cb5b146100f4578063af7665ce14610118578063df8a5ad51461013f578063ebdde40a14610152578063f2fde38b14610179578063feaf968c1461018c575f80fd5b80632707e259146100aa57806350d25bcd146100c6578063625d1675146100ce578063715018a6146100d75780637624850d146100e1575b5f80fd5b6100b360015481565b6040519081526020015b60405180910390f35b6100b36101cb565b6100b360025481565b6100df61037a565b005b6100df6100ef366004610484565b61038d565b5f546001600160a01b03165b6040516001600160a01b0390911681526020016100bd565b6101007f000000000000000000000000000000000000000000000000000000000000000081565b6100df61014d366004610484565b61039a565b6101007f000000000000000000000000000000000000000000000000000000000000000081565b6100df61018736600461049b565b6103a7565b6101946103e9565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a0016100bd565b5f805f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561022a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024e91906104e6565b509350509250506001545f14158015610272575060015461026f9082610548565b42115b1561029057604051630cd5fa0760e11b815260040160405180910390fd5b5f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156102ee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031291906104e6565b509350509250506002545f1415801561033657506002546103339082610548565b42115b1561035457604051630cd5fa0760e11b815260040160405180910390fd5b670de0b6b3a76400006103678386610561565b6103719190610590565b94505050505090565b610382610409565b61038b5f610435565b565b610395610409565b600255565b6103a2610409565b600155565b6103af610409565b6001600160a01b0381166103dd57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6103e681610435565b50565b5f805f805f806103f76101cb565b90969095505f94504293508492509050565b5f546001600160a01b0316331461038b5760405163118cdaa760e01b81523360048201526024016103d4565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610494575f80fd5b5035919050565b5f602082840312156104ab575f80fd5b81356001600160a01b03811681146104c1575f80fd5b9392505050565b805169ffffffffffffffffffff811681146104e1575f80fd5b919050565b5f805f805f60a086880312156104fa575f80fd5b610503866104c8565b60208701516040880151606089015192975090955093509150610528608087016104c8565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561055b5761055b610534565b92915050565b8082025f8212600160ff1b8414161561057c5761057c610534565b818105831482151761055b5761055b610534565b5f826105aa57634e487b7160e01b5f52601260045260245ffd5b600160ff1b82145f19841416156105c3576105c3610534565b50059056fea2646970667358221220b3ba9b94bc2f68c3b18db212c4c99b765638b8f93ecc0beda058e4c986e52fbc64736f6c634300081a003300000000000000000000000030b9ed5e324aaf1cc363e9b6f3175b9484a3b43a0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84190000000000000000000000000000000000000000000000000000000000015f900000000000000000000000000000000000000000000000000000000000001c20
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106100a6575f3560e01c80638da5cb5b1161006e5780638da5cb5b146100f4578063af7665ce14610118578063df8a5ad51461013f578063ebdde40a14610152578063f2fde38b14610179578063feaf968c1461018c575f80fd5b80632707e259146100aa57806350d25bcd146100c6578063625d1675146100ce578063715018a6146100d75780637624850d146100e1575b5f80fd5b6100b360015481565b6040519081526020015b60405180910390f35b6100b36101cb565b6100b360025481565b6100df61037a565b005b6100df6100ef366004610484565b61038d565b5f546001600160a01b03165b6040516001600160a01b0390911681526020016100bd565b6101007f0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b841981565b6100df61014d366004610484565b61039a565b6101007f00000000000000000000000030b9ed5e324aaf1cc363e9b6f3175b9484a3b43a81565b6100df61018736600461049b565b6103a7565b6101946103e9565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a0016100bd565b5f805f7f00000000000000000000000030b9ed5e324aaf1cc363e9b6f3175b9484a3b43a6001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561022a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024e91906104e6565b509350509250506001545f14158015610272575060015461026f9082610548565b42115b1561029057604051630cd5fa0760e11b815260040160405180910390fd5b5f807f0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84196001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156102ee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031291906104e6565b509350509250506002545f1415801561033657506002546103339082610548565b42115b1561035457604051630cd5fa0760e11b815260040160405180910390fd5b670de0b6b3a76400006103678386610561565b6103719190610590565b94505050505090565b610382610409565b61038b5f610435565b565b610395610409565b600255565b6103a2610409565b600155565b6103af610409565b6001600160a01b0381166103dd57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6103e681610435565b50565b5f805f805f806103f76101cb565b90969095505f94504293508492509050565b5f546001600160a01b0316331461038b5760405163118cdaa760e01b81523360048201526024016103d4565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610494575f80fd5b5035919050565b5f602082840312156104ab575f80fd5b81356001600160a01b03811681146104c1575f80fd5b9392505050565b805169ffffffffffffffffffff811681146104e1575f80fd5b919050565b5f805f805f60a086880312156104fa575f80fd5b610503866104c8565b60208701516040880151606089015192975090955093509150610528608087016104c8565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561055b5761055b610534565b92915050565b8082025f8212600160ff1b8414161561057c5761057c610534565b818105831482151761055b5761055b610534565b5f826105aa57634e487b7160e01b5f52601260045260245ffd5b600160ff1b82145f19841416156105c3576105c3610534565b50059056fea2646970667358221220b3ba9b94bc2f68c3b18db212c4c99b765638b8f93ecc0beda058e4c986e52fbc64736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000030b9ed5e324aaf1cc363e9b6f3175b9484a3b43a0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84190000000000000000000000000000000000000000000000000000000000015f900000000000000000000000000000000000000000000000000000000000001c20
-----Decoded View---------------
Arg [0] : floorPriceFeed_ (address): 0x30B9ED5E324aaF1cC363e9B6F3175B9484A3B43A
Arg [1] : ethPriceFeed_ (address): 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
Arg [2] : _floorStalePriceDelay (uint256): 90000
Arg [3] : _ethStalePriceDelay (uint256): 7200
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000030b9ed5e324aaf1cc363e9b6f3175b9484a3b43a
Arg [1] : 0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419
Arg [2] : 0000000000000000000000000000000000000000000000000000000000015f90
Arg [3] : 0000000000000000000000000000000000000000000000000000000000001c20
Deployed Bytecode Sourcemap
4594:2957:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4831:32;;;;;;;;;160:25:1;;;148:2;133:18;4831:32:0;;;;;;;;4978:873;;;:::i;4870:30::-;;;;;;3758:103;;;:::i;:::-;;7413:135;;;;;;:::i;:::-;;:::i;3083:87::-;3129:7;3156:6;-1:-1:-1;;;;;3156:6:0;3083:87;;;-1:-1:-1;;;;;725:32:1;;;707:51;;695:2;680:18;3083:87:0;561:203:1;4771:51:0;;;;;7099:143;;;;;;:::i;:::-;;:::i;4711:53::-;;;;;4016:220;;;;;;:::i;:::-;;:::i;6088:312::-;;;:::i;:::-;;;;1579:22:1;1567:35;;;1549:54;;1634:2;1619:18;;1612:34;;;;1662:18;;1655:34;;;;1720:2;1705:18;;1698:34;1769:35;;;1763:3;1748:19;;1741:64;1536:3;1521:19;6088:312:0;1296:515:1;4978:873:0;5050:6;5101:13;5162:19;5198:14;-1:-1:-1;;;;;5198:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5071:159;;;;;;;5281:20;;5305:1;5281:25;;:84;;;;-1:-1:-1;5345:20:0;;5328:37;;:14;:37;:::i;:::-;5310:15;:55;5281:84;5277:136;;;5389:12;;-1:-1:-1;;;5389:12:0;;;;;;;;;;;5277:136;5455:11;5512:17;5546:12;-1:-1:-1;;;;;5546:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5425:151;;;;;;;5627:18;;5649:1;5627:23;;:78;;;;-1:-1:-1;5687:18:0;;5672:33;;:12;:33;:::i;:::-;5654:15;:51;5627:78;5623:130;;;5729:12;;-1:-1:-1;;;5729:12:0;;;;;;;;;;;5623:130;5794:4;5772:19;5784:7;5772:9;:19;:::i;:::-;:26;;;;:::i;:::-;5765:33;;;;;;4978:873;:::o;3758:103::-;2969:13;:11;:13::i;:::-;3823:30:::1;3850:1;3823:18;:30::i;:::-;3758:103::o:0;7413:135::-;2969:13;:11;:13::i;:::-;7500:18:::1;:40:::0;7413:135::o;7099:143::-;2969:13;:11;:13::i;:::-;7190:20:::1;:44:::0;7099:143::o;4016:220::-;2969:13;:11;:13::i;:::-;-1:-1:-1;;;;;4101:22:0;::::1;4097:93;;4147:31;::::0;-1:-1:-1;;;4147:31:0;;4175:1:::1;4147:31;::::0;::::1;707:51:1::0;680:18;;4147:31:0::1;;;;;;;;4097:93;4200:28;4219:8;4200:18;:28::i;:::-;4016:220:::0;:::o;6088:312::-;6177:14;6206:13;6234:17;6266;6298:22;6351:1;6354:14;:12;:14::i;:::-;6343:49;;;;-1:-1:-1;6370:1:0;;-1:-1:-1;6373:15:0;;-1:-1:-1;6370:1:0;;-1:-1:-1;6088:312:0;-1:-1:-1;6088:312:0:o;3248:166::-;3129:7;3156:6;-1:-1:-1;;;;;3156:6:0;1331:10;3308:23;3304:103;;3355:40;;-1:-1:-1;;;3355:40:0;;1331:10;3355:40;;;707:51:1;680:18;;3355:40:0;561:203:1;4396:191:0;4470:16;4489:6;;-1:-1:-1;;;;;4506:17:0;;;-1:-1:-1;;;;;;4506:17:0;;;;;;4539:40;;4489:6;;;;;;;4539:40;;4470:16;4539:40;4459:128;4396:191;:::o;376:180:1:-;435:6;488:2;476:9;467:7;463:23;459:32;456:52;;;504:1;501;494:12;456:52;-1:-1:-1;527:23:1;;376:180;-1:-1:-1;376:180:1:o;1005:286::-;1064:6;1117:2;1105:9;1096:7;1092:23;1088:32;1085:52;;;1133:1;1130;1123:12;1085:52;1159:23;;-1:-1:-1;;;;;1211:31:1;;1201:42;;1191:70;;1257:1;1254;1247:12;1191:70;1280:5;1005:286;-1:-1:-1;;;1005:286:1:o;1816:179::-;1894:13;;1947:22;1936:34;;1926:45;;1916:73;;1985:1;1982;1975:12;1916:73;1816:179;;;:::o;2000:571::-;2103:6;2111;2119;2127;2135;2188:3;2176:9;2167:7;2163:23;2159:33;2156:53;;;2205:1;2202;2195:12;2156:53;2228:39;2257:9;2228:39;:::i;:::-;2307:2;2292:18;;2286:25;2373:2;2358:18;;2352:25;2467:2;2452:18;;2446:25;2218:49;;-1:-1:-1;2286:25:1;;-1:-1:-1;2352:25:1;-1:-1:-1;2446:25:1;-1:-1:-1;2516:49:1;2560:3;2545:19;;2516:49;:::i;:::-;2506:59;;2000:571;;;;;;;;:::o;2576:127::-;2637:10;2632:3;2628:20;2625:1;2618:31;2668:4;2665:1;2658:15;2692:4;2689:1;2682:15;2708:125;2773:9;;;2794:10;;;2791:36;;;2807:18;;:::i;:::-;2708:125;;;;:::o;2838:237::-;2910:9;;;2877:7;2935:9;;-1:-1:-1;;;2946:18:1;;2931:34;2928:60;;;2968:18;;:::i;:::-;3041:1;3032:7;3027:16;3024:1;3021:23;3017:1;3010:9;3007:38;2997:72;;3049:18;;:::i;3080:290::-;3119:1;3145;3135:132;;3189:10;3184:3;3180:20;3177:1;3170:31;3224:4;3221:1;3214:15;3252:4;3249:1;3242:15;3135:132;-1:-1:-1;;;3283:18:1;;-1:-1:-1;;3303:13:1;;3279:38;3276:64;;;3320:18;;:::i;:::-;-1:-1:-1;3354:10:1;;3080:290::o
Swarm Source
ipfs://b3ba9b94bc2f68c3b18db212c4c99b765638b8f93ecc0beda058e4c986e52fbc
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.