Source Code
Overview
S Balance
S Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
USDToEthConverter
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 100 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
import "../interfaces/INumaTokenToEthConverter.sol";
import "../libraries/OracleUtils.sol";
contract USDToEthConverter is INumaTokenToEthConverter, OracleUtils {
address public immutable pricefeedETH_USD;
uint128 immutable chainlink_heartbeatETH_USD;
//uint decimals;
constructor(
address _pricefeedETH_USD,
uint128 _chainlink_heartbeatETH_USD,
address _uptimeFeedAddress //,
)
//uint _decimals
OracleUtils(_uptimeFeedAddress)
{
pricefeedETH_USD = _pricefeedETH_USD;
chainlink_heartbeatETH_USD = _chainlink_heartbeatETH_USD;
//decimals = _decimals;
}
/**
* @dev eth to pool token using 2 oracles
*/
function convertEthToToken(
uint256 _ethAmount
) public view checkSequencerActive returns (uint256 tokenAmount) {
(
uint80 roundID2,
int256 price2,
,
uint256 timeStamp2,
uint80 answeredInRound2
) = AggregatorV3Interface(pricefeedETH_USD).latestRoundData();
// heartbeat check
require(
timeStamp2 >= block.timestamp - chainlink_heartbeatETH_USD,
"Stale pricefeed"
);
// minAnswer/maxAnswer check
IChainlinkAggregator aggregator2 = IChainlinkAggregator(
IChainlinkPriceFeed(pricefeedETH_USD).aggregator()
);
require(
((price2 > int256(aggregator2.minAnswer())) &&
(price2 < int256(aggregator2.maxAnswer()))),
"min/max reached"
);
require(answeredInRound2 >= roundID2, "Answer given before round");
// compose oracles
// Chainlink ETH/USD price feed has 8 decimals; ethAmount is in wei (18 decimals)
// To convert:
// (ethAmount in wei) * (ethPriceUsd) / 10^(decimals difference)
// = ethAmount * ethPriceUsd / 10^8
tokenAmount = (_ethAmount * uint256(price2)) / 1e8;
}
/**
* @dev pool token to eth using 2 oracles
*/
function convertTokenToEth(
uint256 _tokenAmount
) public view checkSequencerActive returns (uint256 ethValue) {
(
uint80 roundID2,
int256 price2,
,
uint256 timeStamp2,
uint80 answeredInRound2
) = AggregatorV3Interface(pricefeedETH_USD).latestRoundData();
// heartbeat check
require(
timeStamp2 >= block.timestamp - chainlink_heartbeatETH_USD,
"Stale pricefeed"
);
// minAnswer/maxAnswer check
IChainlinkAggregator aggregator2 = IChainlinkAggregator(
IChainlinkPriceFeed(pricefeedETH_USD).aggregator()
);
require(
((price2 > int256(aggregator2.minAnswer())) &&
(price2 < int256(aggregator2.maxAnswer()))),
"min/max reached"
);
require(answeredInRound2 >= roundID2, "Answer given before round");
// Chainlink ETH/USD price feed has 8 decimals; usdAmount is in 18 decimals
// To convert:
// (usdAmount in 18 decimals) * 10^(decimals difference) / ethPriceUsd
// = usdAmount * 10^8 / ethPriceUsd
ethValue = (_tokenAmount * 1e8) / uint256(price2);
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
interface INumaTokenToEthConverter {
function convertEthToToken(
uint256 _ethAmount
) external view returns (uint256);
function convertTokenToEth(
uint256 _tokenAmount
) external view returns (uint256);
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.20;
import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol";
import {IChainlinkAggregator} from "../interfaces/IChainlinkAggregator.sol";
import {IChainlinkPriceFeed} from "../interfaces/IChainlinkPriceFeed.sol";
import "@uniswap/v3-core/contracts/libraries/FullMath.sol";
contract OracleUtils {
uint256 private constant GRACE_PERIOD_TIME = 3600;
error SequencerDown();
error GracePeriodNotOver();
address internal sequencerUptimeFeed;
constructor(address _uptimeFeedAddress) {
sequencerUptimeFeed = _uptimeFeedAddress;
}
modifier checkSequencerActive() {
if (sequencerUptimeFeed != address(0)) {
(
,
/*uint80 roundID*/ int256 answer,
uint256 startedAt /*uint256 updatedAt*/ /*uint80 answeredInRound*/,
,
) = AggregatorV2V3Interface(sequencerUptimeFeed).latestRoundData();
// Answer == 0: Sequencer is up
// Answer == 1: Sequencer is down
bool isSequencerUp = answer == 0;
if (!isSequencerUp) {
revert SequencerDown();
}
// Make sure the grace period has passed after the
// sequencer is back up.
uint256 timeSinceUp = block.timestamp - startedAt;
if (timeSinceUp <= GRACE_PERIOD_TIME) {
revert GracePeriodNotOver();
}
}
_;
}
/**
* @dev chainlink call to a pricefeed with any amount
*/
function ethToToken(
uint256 _ethAmount,
address _pricefeed,
uint128 _chainlink_heartbeat,
uint256 _decimals
) public view checkSequencerActive returns (uint256 tokenAmount) {
(
uint80 roundID,
int256 price,
,
uint256 timeStamp,
uint80 answeredInRound
) = AggregatorV3Interface(_pricefeed).latestRoundData();
// heartbeat check
require(
timeStamp >= block.timestamp - _chainlink_heartbeat,
"Stale pricefeed"
);
// minAnswer/maxAnswer check
IChainlinkAggregator aggregator = IChainlinkAggregator(
IChainlinkPriceFeed(_pricefeed).aggregator()
);
require(
((price > int256(aggregator.minAnswer())) &&
(price < int256(aggregator.maxAnswer()))),
"min/max reached"
);
require(answeredInRound >= roundID, "Answer given before round");
//if ETH is on the left side of the fraction in the price feed
if (ethLeftSide(_pricefeed)) {
tokenAmount = FullMath.mulDiv(
_ethAmount,
uint256(price),
10 ** AggregatorV3Interface(_pricefeed).decimals()
);
} else {
tokenAmount = FullMath.mulDiv(
_ethAmount,
10 ** AggregatorV3Interface(_pricefeed).decimals(),
uint256(price)
);
}
// audit fix
tokenAmount = tokenAmount * 10 ** (18 - _decimals);
}
/**
* @dev chainlink call to a pricefeed with any amount
*/
function ethToTokenRoundUp(
uint256 _ethAmount,
address _pricefeed,
uint128 _chainlink_heartbeat,
uint256 _decimals
) public view checkSequencerActive returns (uint256 tokenAmount) {
(
uint80 roundID,
int256 price,
,
uint256 timeStamp,
uint80 answeredInRound
) = AggregatorV3Interface(_pricefeed).latestRoundData();
// heartbeat check
require(
timeStamp >= block.timestamp - _chainlink_heartbeat,
"Stale pricefeed"
);
// minAnswer/maxAnswer check
IChainlinkAggregator aggregator = IChainlinkAggregator(
IChainlinkPriceFeed(_pricefeed).aggregator()
);
require(
((price > int256(aggregator.minAnswer())) &&
(price < int256(aggregator.maxAnswer()))),
"min/max reached"
);
require(answeredInRound >= roundID, "Answer given before round");
//if ETH is on the left side of the fraction in the price feed
if (ethLeftSide(_pricefeed)) {
tokenAmount = FullMath.mulDivRoundingUp(
_ethAmount,
uint256(price),
10 ** AggregatorV3Interface(_pricefeed).decimals()
);
} else {
tokenAmount = FullMath.mulDivRoundingUp(
_ethAmount,
10 ** AggregatorV3Interface(_pricefeed).decimals(),
uint256(price)
);
}
// audit fix
tokenAmount = tokenAmount * 10 ** (18 - _decimals);
}
/**
* @dev chainlink call to a pricefeed with any amount
*/
function tokenToEth(
uint256 _amount,
address _pricefeed,
uint128 _chainlink_heartbeat,
uint256 _decimals
) public view checkSequencerActive returns (uint256 EthValue) {
(
uint80 roundID,
int256 price,
,
uint256 timeStamp,
uint80 answeredInRound
) = AggregatorV3Interface(_pricefeed).latestRoundData();
// heartbeat check
require(
timeStamp >= block.timestamp - _chainlink_heartbeat,
"Stale pricefeed"
);
// minAnswer/maxAnswer check
IChainlinkAggregator aggregator = IChainlinkAggregator(
IChainlinkPriceFeed(_pricefeed).aggregator()
);
require(
((price > int256(aggregator.minAnswer())) &&
(price < int256(aggregator.maxAnswer()))),
"min/max reached"
);
require(answeredInRound >= roundID, "Answer given before round");
//if ETH is on the left side of the fraction in the price feed
if (ethLeftSide(_pricefeed)) {
EthValue = FullMath.mulDiv(
_amount,
10 ** AggregatorV3Interface(_pricefeed).decimals(),
uint256(price)
);
} else {
EthValue = FullMath.mulDiv(
_amount,
uint256(price),
10 ** AggregatorV3Interface(_pricefeed).decimals()
);
}
// audit fix
EthValue = EthValue * 10 ** (18 - _decimals);
}
/**
* @dev chainlink call to a pricefeed with any amount
*/
function tokenToEthRoundUp(
uint256 _amount,
address _pricefeed,
uint128 _chainlink_heartbeat,
uint256 _decimals
) public view checkSequencerActive returns (uint256 EthValue) {
(
uint80 roundID,
int256 price,
,
uint256 timeStamp,
uint80 answeredInRound
) = AggregatorV3Interface(_pricefeed).latestRoundData();
// heartbeat check
require(
timeStamp >= block.timestamp - _chainlink_heartbeat,
"Stale pricefeed"
);
// minAnswer/maxAnswer check
IChainlinkAggregator aggregator = IChainlinkAggregator(
IChainlinkPriceFeed(_pricefeed).aggregator()
);
require(
((price > int256(aggregator.minAnswer())) &&
(price < int256(aggregator.maxAnswer()))),
"min/max reached"
);
require(answeredInRound >= roundID, "Answer given before round");
//if ETH is on the left side of the fraction in the price feed
if (ethLeftSide(_pricefeed)) {
EthValue = FullMath.mulDivRoundingUp(
_amount,
10 ** AggregatorV3Interface(_pricefeed).decimals(),
uint256(price)
);
} else {
EthValue = FullMath.mulDivRoundingUp(
_amount,
uint256(price),
10 ** AggregatorV3Interface(_pricefeed).decimals()
);
}
// audit fix
EthValue = EthValue * 10 ** (18 - _decimals);
}
function ethLeftSide(address _chainlinkFeed) internal view returns (bool) {
string memory description = AggregatorV3Interface(_chainlinkFeed)
.description();
bytes memory descriptionBytes = bytes(description);
bytes memory ethBytes = bytes("ETH");
for (uint i = 0; i < 3; i++)
if (descriptionBytes[i] != ethBytes[i]) return false;
return true;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./AggregatorInterface.sol";
import "./AggregatorV3Interface.sol";
interface AggregatorV2V3Interface is AggregatorInterface, AggregatorV3Interface {}// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
interface IChainlinkAggregator {
function minAnswer() external view returns (int192);
function maxAnswer() external view returns (int192);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
interface IChainlinkPriceFeed {
function decimals() external view returns (uint8);
function description() external view returns (string memory);
function version() external view returns (uint256);
function latestAnswer() external view returns (int256);
function latestTimestamp() external view returns (uint256);
function latestRound() external view returns (uint256);
function getAnswer(uint256 roundId) external view returns (int256);
function getTimestamp(uint256 roundId) external view returns (uint256);
function latestRoundData()
external
view
returns (
uint80 roundId,
int256 answer,
uint256 startedAt,
uint256 updatedAt,
uint80 answeredInRound
);
function aggregator() external view returns (address);
event AnswerUpdated(
int256 indexed current,
uint256 indexed roundId,
uint256 timestamp
);
event NewRound(uint256 indexed roundId, address indexed startedBy);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/// @title Contains 512-bit math functions
/// @notice Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision
/// @dev Handles "phantom overflow" i.e., allows multiplication and division where an intermediate value overflows 256 bits
library FullMath {
/// @notice Calculates floor(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
/// @param a The multiplicand
/// @param b The multiplier
/// @param denominator The divisor
/// @return result The 256-bit result
/// @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv
function mulDiv(
uint256 a,
uint256 b,
uint256 denominator
) internal pure returns (uint256 result) {
unchecked {
// 512-bit multiply [prod1 prod0] = a * b
// Compute the product mod 2**256 and mod 2**256 - 1
// then use the Chinese Remainder Theorem to reconstruct
// the 512 bit result. The result is stored in two 256
// variables such that product = prod1 * 2**256 + prod0
uint256 prod0; // Least significant 256 bits of the product
uint256 prod1; // Most significant 256 bits of the product
assembly {
let mm := mulmod(a, b, not(0))
prod0 := mul(a, b)
prod1 := sub(sub(mm, prod0), lt(mm, prod0))
}
// Handle non-overflow cases, 256 by 256 division
if (prod1 == 0) {
require(denominator > 0);
assembly {
result := div(prod0, denominator)
}
return result;
}
// Make sure the result is less than 2**256.
// Also prevents denominator == 0
require(denominator > prod1);
///////////////////////////////////////////////
// 512 by 256 division.
///////////////////////////////////////////////
// Make division exact by subtracting the remainder from [prod1 prod0]
// Compute remainder using mulmod
uint256 remainder;
assembly {
remainder := mulmod(a, b, denominator)
}
// Subtract 256 bit number from 512 bit number
assembly {
prod1 := sub(prod1, gt(remainder, prod0))
prod0 := sub(prod0, remainder)
}
// Factor powers of two out of denominator
// Compute largest power of two divisor of denominator.
// Always >= 1.
uint256 twos = (0 - denominator) & denominator;
// Divide denominator by power of two
assembly {
denominator := div(denominator, twos)
}
// Divide [prod1 prod0] by the factors of two
assembly {
prod0 := div(prod0, twos)
}
// Shift in bits from prod1 into prod0. For this we need
// to flip `twos` such that it is 2**256 / twos.
// If twos is zero, then it becomes one
assembly {
twos := add(div(sub(0, twos), twos), 1)
}
prod0 |= prod1 * twos;
// Invert denominator mod 2**256
// Now that denominator is an odd number, it has an inverse
// modulo 2**256 such that denominator * inv = 1 mod 2**256.
// Compute the inverse by starting with a seed that is correct
// correct for four bits. That is, denominator * inv = 1 mod 2**4
uint256 inv = (3 * denominator) ^ 2;
// Now use Newton-Raphson iteration to improve the precision.
// Thanks to Hensel's lifting lemma, this also works in modular
// arithmetic, doubling the correct bits in each step.
inv *= 2 - denominator * inv; // inverse mod 2**8
inv *= 2 - denominator * inv; // inverse mod 2**16
inv *= 2 - denominator * inv; // inverse mod 2**32
inv *= 2 - denominator * inv; // inverse mod 2**64
inv *= 2 - denominator * inv; // inverse mod 2**128
inv *= 2 - denominator * inv; // inverse mod 2**256
// Because the division is now exact we can divide by multiplying
// with the modular inverse of denominator. This will give us the
// correct result modulo 2**256. Since the precoditions guarantee
// that the outcome is less than 2**256, this is the final result.
// We don't need to compute the high bits of the result and prod1
// is no longer required.
result = prod0 * inv;
return result;
}
}
/// @notice Calculates ceil(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
/// @param a The multiplicand
/// @param b The multiplier
/// @param denominator The divisor
/// @return result The 256-bit result
function mulDivRoundingUp(
uint256 a,
uint256 b,
uint256 denominator
) internal pure returns (uint256 result) {
unchecked {
result = mulDiv(a, b, denominator);
if (mulmod(a, b, denominator) > 0) {
require(result < type(uint256).max);
result++;
}
}
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface AggregatorInterface {
function latestAnswer() external view returns (int256);
function latestTimestamp() external view returns (uint256);
function latestRound() external view returns (uint256);
function getAnswer(uint256 roundId) external view returns (int256);
function getTimestamp(uint256 roundId) external view returns (uint256);
event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 updatedAt);
event NewRound(uint256 indexed roundId, address indexed startedBy, uint256 startedAt);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
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);
}{
"remappings": [
"@chainlink/=node_modules/@chainlink/",
"@eth-optimism/=node_modules/@chainlink/contracts/node_modules/@eth-optimism/",
"@layerzerolabs/=node_modules/@layerzerolabs/",
"@openzeppelin/=node_modules/@openzeppelin/",
"@uniswap/=node_modules/@uniswap/",
"base64-sol/=node_modules/base64-sol/",
"eth-gas-reporter/=node_modules/eth-gas-reporter/",
"forge-std/=lib/forge-std/src/",
"hardhat/=node_modules/hardhat/",
"uniV3periphery/=node_modules/uniV3periphery/",
"uniswap-v3-periphery-0.8/=node_modules/uniswap-v3-periphery-0.8/"
],
"optimizer": {
"enabled": true,
"runs": 100
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "shanghai",
"viaIR": true
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_pricefeedETH_USD","type":"address"},{"internalType":"uint128","name":"_chainlink_heartbeatETH_USD","type":"uint128"},{"internalType":"address","name":"_uptimeFeedAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"GracePeriodNotOver","type":"error"},{"inputs":[],"name":"SequencerDown","type":"error"},{"inputs":[{"internalType":"uint256","name":"_ethAmount","type":"uint256"}],"name":"convertEthToToken","outputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"convertTokenToEth","outputs":[{"internalType":"uint256","name":"ethValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ethAmount","type":"uint256"},{"internalType":"address","name":"_pricefeed","type":"address"},{"internalType":"uint128","name":"_chainlink_heartbeat","type":"uint128"},{"internalType":"uint256","name":"_decimals","type":"uint256"}],"name":"ethToToken","outputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ethAmount","type":"uint256"},{"internalType":"address","name":"_pricefeed","type":"address"},{"internalType":"uint128","name":"_chainlink_heartbeat","type":"uint128"},{"internalType":"uint256","name":"_decimals","type":"uint256"}],"name":"ethToTokenRoundUp","outputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pricefeedETH_USD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_pricefeed","type":"address"},{"internalType":"uint128","name":"_chainlink_heartbeat","type":"uint128"},{"internalType":"uint256","name":"_decimals","type":"uint256"}],"name":"tokenToEth","outputs":[{"internalType":"uint256","name":"EthValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_pricefeed","type":"address"},{"internalType":"uint128","name":"_chainlink_heartbeat","type":"uint128"},{"internalType":"uint256","name":"_decimals","type":"uint256"}],"name":"tokenToEthRoundUp","outputs":[{"internalType":"uint256","name":"EthValue","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60c0346100bd57601f61177d38819003918201601f19168301916001600160401b038311848410176100c1578084926060946040528339810103126100bd57610047816100d5565b6020820151916001600160801b03831683036100bd576001600160a01b0390610072906040016100d5565b1660018060a01b03195f5416175f5560805260a05260405161169390816100ea82396080518181816106ec015281816109970152610f1e015260a0518181816107390152610f6a0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036100bd5756fe60806040818152600480361015610014575f80fd5b5f92833560e01c90816339fc721114610eda575080633ac2ba2614610c515780637375416f146109c65780639b0a897614610982578063e0d380e5146106b1578063e47476411461041a5763f3aee97d1461006d575f80fd5b346104165761007b366111a9565b93929060018060a09894981b0396848885541680610385575b50508651633fabe5a360e21b8152818916919060a0818881865afa90811561037b578690879588918994610336575b506100e391906100dc906001600160801b03164261126d565b111561128e565b89516309169eff60e21b815260209b908c818b81895afa9081156102ff578991610309575b50168a51630455b78f60e31b81528c818b81855afa9081156102ff57918d9593918b9795938b916102e2575b5060170b8813908161025f575b509161016b916101546101709594611304565b69ffffffffffffffffffff80911691161015611342565b6113fa565b1561022057885163313ce56760e01b815292839182905afa908115610216576101ac9392916101a69186916101e9575b506113b6565b9161161d565b925b60120391601283116101d6575050906101c96101cf926113c7565b9061138a565b9051908152f35b634e487b7160e01b825260119052602490fd5b61020991508a3d8c1161020f575b61020181836111eb565b81019061139d565b5f6101a0565b503d6101f7565b87513d86823e3d90fd5b885163313ce56760e01b815293949392839182905afa908115610216576102599392916102539186916101e957506113b6565b9061161d565b926101ae565b90508c969294969591939551928380926370da2f6760e01b82525afa9081156102d857899593610170936101548f979461016b948d916102ab575b5060170b8a12929495505091610141565b6102cb9150893d8b116102d1575b6102c381836111eb565b8101906112eb565b5f61029a565b503d6102b9565b8b513d8a823e3d90fd5b6102f99150873d89116102d1576102c381836111eb565b5f610134565b8c513d8b823e3d90fd5b61032991508d803d1061032f575b61032181836111eb565b8101906112cc565b5f610108565b503d610317565b9093506100dc96506100e39250610364915060a03d8111610374575b61035c81836111eb565b810190611238565b92989295939450929190506100c3565b503d610352565b89513d88823e3d90fd5b60a090895192838092633fabe5a360e21b82525afa90811561040c57859086926103e8575b506103d9576103bc610e10914261126d565b11156103c957845f610094565b865163d15f73b560e01b81528590fd5b875162032b3d60e81b81528690fd5b9050610402915060a03d81116103745761035c81836111eb565b505091505f6103aa565b88513d87823e3d90fd5b8280fd5b503461041657610429366111a9565b86546001600160a01b03979195949193908590891680610649575b50508651633fabe5a360e21b8152818916919060a0818881865afa90811561037b578690879688918994610614575b5061048c91906100dc906001600160801b03164261126d565b89516309169eff60e21b815260209b908c818b81895afa9081156102ff5789916105f7575b50168a51630455b78f60e31b81528c818b81855afa9081156102ff57918d9593918b9795938b916105da575b5060170b89139081610571575b509161016b916101546104fd9594611304565b1561053857885163313ce56760e01b815292839182905afa908115610216576101ac9392916105329186916101e957506113b6565b9061159d565b885163313ce56760e01b815293949392839182905afa9081156102165761025993929161056b9186916101e957506113b6565b9161159d565b90508c969294969591939551928380926370da2f6760e01b82525afa9081156102d8578995936104fd936101548f979461016b948d916105bd575b5060170b8b129294955050916104ea565b6105d49150893d8b116102d1576102c381836111eb565b5f6105ac565b6105f19150873d89116102d1576102c381836111eb565b5f6104dd565b61060e91508d803d1061032f5761032181836111eb565b5f6104b1565b9093506100dc975061048c9250610639915060a03d81116103745761035c81836111eb565b9299929593945092919050610473565b60a090895192838092633fabe5a360e21b82525afa90811561040c578590869261068d575b506103d957610680610e10914261126d565b11156103c957845f610444565b90506106a7915060a03d81116103745761035c81836111eb565b505091505f61066e565b50913461097f576020928360031936011261097b5781546001600160a01b039082908216806108eb575b50508351633fabe5a360e21b8152927f000000000000000000000000000000000000000000000000000000000000000082169060a0858581855afa9283156108df578782938397849085976108a9575b5087929190610767906100dc7f00000000000000000000000000000000000000000000000000000000000000006001600160801b03164261126d565b89516309169eff60e21b815292839182905afa90811561089f578391610882575b5016908651630455b78f60e31b815288818781865afa90811561087857908991839161085b575b5060170b871392836107e4575b50876305f5e1006107dc89896107d68a8a6101548b611304565b3561138a565b049051908152f35b88516370da2f6760e01b81529293508290879082905afa91821561085057926101546107d6936305f5e1009896936107dc989691610833575b5060170b861293508295975089919496506107bc565b61084a91508b3d8d116102d1576102c381836111eb565b5f61081d565b8751903d90823e3d90fd5b6108729150823d84116102d1576102c381836111eb565b5f6107af565b88513d84823e3d90fd5b6108999150893d8b1161032f5761032181836111eb565b5f610788565b88513d85823e3d90fd5b90506108cd91985087929650610767955060a03d81116103745761035c81836111eb565b929a929893979394509192905061072b565b508551903d90823e3d90fd5b60a090865192838092633fabe5a360e21b82525afa908115610971578490859261094d575b5061093e57610922610e10914261126d565b111561092f57815f6106db565b50825163d15f73b560e01b8152fd5b845162032b3d60e81b81528390fd5b9050610967915060a03d81116103745761035c81836111eb565b505091505f610910565b85513d86823e3d90fd5b5080fd5b80fd5b50503461097b578160031936011261097b57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610416576109d5366111a9565b86546001600160a01b03979195949193908590891680610be9575b50508651633fabe5a360e21b8152818916919060a0818881865afa90811561037b578690879688918994610bb4575b50610a3891906100dc906001600160801b03164261126d565b89516309169eff60e21b815260209b908c818b81895afa9081156102ff578991610b97575b50168a51630455b78f60e31b81528c818b81855afa9081156102ff57918d9593918b9795938b91610b7a575b5060170b89139081610b11575b509161016b91610154610aa99594611304565b15610ade57885163313ce56760e01b815292839182905afa908115610216576101ac9392916102539186916101e957506113b6565b885163313ce56760e01b815293949392839182905afa908115610216576102599392916101a69186916101e957506113b6565b90508c969294969591939551928380926370da2f6760e01b82525afa9081156102d857899593610aa9936101548f979461016b948d91610b5d575b5060170b8b12929495505091610a96565b610b749150893d8b116102d1576102c381836111eb565b5f610b4c565b610b919150873d89116102d1576102c381836111eb565b5f610a89565b610bae91508d803d1061032f5761032181836111eb565b5f610a5d565b9093506100dc9750610a389250610bd9915060a03d81116103745761035c81836111eb565b9299929593945092919050610a1f565b60a090895192838092633fabe5a360e21b82525afa90811561040c5785908692610c2d575b506103d957610c20610e10914261126d565b11156103c957845f6109f0565b9050610c47915060a03d81116103745761035c81836111eb565b505091505f610c0e565b503461041657610c60366111a9565b93929060018060a09894981b0396848885541680610e72575b50508651633fabe5a360e21b8152818916919060a0818881865afa90811561037b578690879588918994610e3d575b50610cc191906100dc906001600160801b03164261126d565b89516309169eff60e21b815260209b908c818b81895afa9081156102ff578991610e20575b50168a51630455b78f60e31b81528c818b81855afa9081156102ff57918d9593918b9795938b91610e03575b5060170b88139081610d9a575b509161016b91610154610d329594611304565b15610d6757885163313ce56760e01b815292839182905afa908115610216576101ac93929161056b9186916101e957506113b6565b885163313ce56760e01b815293949392839182905afa908115610216576102599392916105329186916101e957506113b6565b90508c969294969591939551928380926370da2f6760e01b82525afa9081156102d857899593610d32936101548f979461016b948d91610de6575b5060170b8a12929495505091610d1f565b610dfd9150893d8b116102d1576102c381836111eb565b5f610dd5565b610e1a9150873d89116102d1576102c381836111eb565b5f610d12565b610e3791508d803d1061032f5761032181836111eb565b5f610ce6565b9093506100dc9650610cc19250610e62915060a03d81116103745761035c81836111eb565b9298929593945092919050610ca8565b60a090895192838092633fabe5a360e21b82525afa90811561040c5785908692610eb6575b506103d957610ea9610e10914261126d565b11156103c957845f610c79565b9050610ed0915060a03d81116103745761035c81836111eb565b505091505f610e97565b91929050346111a5576020938460031936011261097f5780548435946001600160a01b039490918290861680611118575b50508351633fabe5a360e21b81529490507f0000000000000000000000000000000000000000000000000000000000000000811660a0868481845afa918215610971578885928698879088966110e2575b5086929190610f98906100dc7f00000000000000000000000000000000000000000000000000000000000000006001600160801b03164261126d565b88516309169eff60e21b815292839182905afa9081156110bb5786916110c5575b50168551630455b78f60e31b815289818681855afa9081156110bb5785918b91889161109e575b5060170b89139283611036575b50505090610154610ffe9392611304565b6305f5e100948581029581870414901517156101d65783156110235750505191048152f35b634e487b7160e01b825260129052602490fd5b88516370da2f6760e01b815293509091839182905afa90811561109457610ffe939291610154918791611077575b5060170b8812919293505083895f610fed565b61108e91508b3d8d116102d1576102c381836111eb565b5f611064565b86513d87823e3d90fd5b6110b59150823d84116102d1576102c381836111eb565b5f610fe0565b87513d88823e3d90fd5b6110dc91508a3d8c1161032f5761032181836111eb565b5f610fb9565b905061110691995086929550610f98945060a03d81116103745761035c81836111eb565b929b9297939693945091929050610f5c565b633fabe5a360e21b835260a091839182905afa90811561119b5783908492611177575b506111695761114d610e10914261126d565b111561115b575f8181610f0b565b825163d15f73b560e01b8152fd5b50825162032b3d60e81b8152fd5b9050611191915060a03d81116103745761035c81836111eb565b505091505f61113b565b84513d85823e3d90fd5b8380fd5b60809060031901126111e757600435906024356001600160a01b03811681036111e757906044356001600160801b03811681036111e7579060643590565b5f80fd5b90601f8019910116810190811067ffffffffffffffff82111761120d57604052565b634e487b7160e01b5f52604160045260245ffd5b519069ffffffffffffffffffff821682036111e757565b908160a09103126111e75761124c81611221565b9160208201519160408101519161126a608060608401519301611221565b90565b9190820391821161127a57565b634e487b7160e01b5f52601160045260245ffd5b1561129557565b60405162461bcd60e51b815260206004820152600f60248201526e14dd185b19481c1c9a58d959995959608a1b6044820152606490fd5b908160209103126111e757516001600160a01b03811681036111e75790565b908160209103126111e757518060170b81036111e75790565b1561130b57565b60405162461bcd60e51b815260206004820152600f60248201526e1b5a5b8bdb585e081c995858da1959608a1b6044820152606490fd5b1561134957565b60405162461bcd60e51b8152602060048201526019602482015278105b9cddd95c8819da5d995b881899599bdc99481c9bdd5b99603a1b6044820152606490fd5b8181029291811591840414171561127a57565b908160209103126111e7575160ff811681036111e75790565b60ff16604d811161127a57600a0a90565b604d811161127a57600a0a90565b9081518110156113e6570160200190565b634e487b7160e01b5f52603260045260245ffd5b60408051633942720b60e11b8152915f9160049183908590849082906001600160a01b03165afa9384156115935783946114d8575b508051908082019082821067ffffffffffffffff8311176114c557526003938482526208aa8960eb1b6020830152835b85811061147157505050505050600190565b6001600160f81b03198061148583856113d5565b51169061149283866113d5565b5116036114bc575f1981146114a95760010161145f565b634e487b7160e01b855260118452602485fd5b50505050905090565b634e487b7160e01b855260418452602485fd5b9093503d8084833e6114ea81836111eb565b810190602090818184031261158f57805167ffffffffffffffff9182821161158b570183601f8201121561157457805191821161157857865193611537601f8401601f19168501866111eb565b8285528383830101116115745790859291835b82811061155e57505083010152925f61142f565b818101840151868201850152879450830161154a565b8580fd5b634e487b7160e01b865260418552602486fd5b8680fd5b8480fd5b81513d85823e3d90fd5b915f19828409928281029283808610950394808603951461160f57848311156111e75782910981805f0316809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b5050809250156111e7570490565b92919061162b82828661159d565b938215611649570961163957565b905f198110156111e75760010190565b634e487b7160e01b5f52601260045260245ffdfea2646970667358221220d6c87daf20ce2494d50abd36a9e3b7f4c697071e5ea7cb1fee860f8897e2b86664736f6c63430008140033000000000000000000000000c76dfb89ff298145b417d221b2c747d84952e01d00000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040818152600480361015610014575f80fd5b5f92833560e01c90816339fc721114610eda575080633ac2ba2614610c515780637375416f146109c65780639b0a897614610982578063e0d380e5146106b1578063e47476411461041a5763f3aee97d1461006d575f80fd5b346104165761007b366111a9565b93929060018060a09894981b0396848885541680610385575b50508651633fabe5a360e21b8152818916919060a0818881865afa90811561037b578690879588918994610336575b506100e391906100dc906001600160801b03164261126d565b111561128e565b89516309169eff60e21b815260209b908c818b81895afa9081156102ff578991610309575b50168a51630455b78f60e31b81528c818b81855afa9081156102ff57918d9593918b9795938b916102e2575b5060170b8813908161025f575b509161016b916101546101709594611304565b69ffffffffffffffffffff80911691161015611342565b6113fa565b1561022057885163313ce56760e01b815292839182905afa908115610216576101ac9392916101a69186916101e9575b506113b6565b9161161d565b925b60120391601283116101d6575050906101c96101cf926113c7565b9061138a565b9051908152f35b634e487b7160e01b825260119052602490fd5b61020991508a3d8c1161020f575b61020181836111eb565b81019061139d565b5f6101a0565b503d6101f7565b87513d86823e3d90fd5b885163313ce56760e01b815293949392839182905afa908115610216576102599392916102539186916101e957506113b6565b9061161d565b926101ae565b90508c969294969591939551928380926370da2f6760e01b82525afa9081156102d857899593610170936101548f979461016b948d916102ab575b5060170b8a12929495505091610141565b6102cb9150893d8b116102d1575b6102c381836111eb565b8101906112eb565b5f61029a565b503d6102b9565b8b513d8a823e3d90fd5b6102f99150873d89116102d1576102c381836111eb565b5f610134565b8c513d8b823e3d90fd5b61032991508d803d1061032f575b61032181836111eb565b8101906112cc565b5f610108565b503d610317565b9093506100dc96506100e39250610364915060a03d8111610374575b61035c81836111eb565b810190611238565b92989295939450929190506100c3565b503d610352565b89513d88823e3d90fd5b60a090895192838092633fabe5a360e21b82525afa90811561040c57859086926103e8575b506103d9576103bc610e10914261126d565b11156103c957845f610094565b865163d15f73b560e01b81528590fd5b875162032b3d60e81b81528690fd5b9050610402915060a03d81116103745761035c81836111eb565b505091505f6103aa565b88513d87823e3d90fd5b8280fd5b503461041657610429366111a9565b86546001600160a01b03979195949193908590891680610649575b50508651633fabe5a360e21b8152818916919060a0818881865afa90811561037b578690879688918994610614575b5061048c91906100dc906001600160801b03164261126d565b89516309169eff60e21b815260209b908c818b81895afa9081156102ff5789916105f7575b50168a51630455b78f60e31b81528c818b81855afa9081156102ff57918d9593918b9795938b916105da575b5060170b89139081610571575b509161016b916101546104fd9594611304565b1561053857885163313ce56760e01b815292839182905afa908115610216576101ac9392916105329186916101e957506113b6565b9061159d565b885163313ce56760e01b815293949392839182905afa9081156102165761025993929161056b9186916101e957506113b6565b9161159d565b90508c969294969591939551928380926370da2f6760e01b82525afa9081156102d8578995936104fd936101548f979461016b948d916105bd575b5060170b8b129294955050916104ea565b6105d49150893d8b116102d1576102c381836111eb565b5f6105ac565b6105f19150873d89116102d1576102c381836111eb565b5f6104dd565b61060e91508d803d1061032f5761032181836111eb565b5f6104b1565b9093506100dc975061048c9250610639915060a03d81116103745761035c81836111eb565b9299929593945092919050610473565b60a090895192838092633fabe5a360e21b82525afa90811561040c578590869261068d575b506103d957610680610e10914261126d565b11156103c957845f610444565b90506106a7915060a03d81116103745761035c81836111eb565b505091505f61066e565b50913461097f576020928360031936011261097b5781546001600160a01b039082908216806108eb575b50508351633fabe5a360e21b8152927f000000000000000000000000c76dfb89ff298145b417d221b2c747d84952e01d82169060a0858581855afa9283156108df578782938397849085976108a9575b5087929190610767906100dc7f00000000000000000000000000000000000000000000000000000000000151806001600160801b03164261126d565b89516309169eff60e21b815292839182905afa90811561089f578391610882575b5016908651630455b78f60e31b815288818781865afa90811561087857908991839161085b575b5060170b871392836107e4575b50876305f5e1006107dc89896107d68a8a6101548b611304565b3561138a565b049051908152f35b88516370da2f6760e01b81529293508290879082905afa91821561085057926101546107d6936305f5e1009896936107dc989691610833575b5060170b861293508295975089919496506107bc565b61084a91508b3d8d116102d1576102c381836111eb565b5f61081d565b8751903d90823e3d90fd5b6108729150823d84116102d1576102c381836111eb565b5f6107af565b88513d84823e3d90fd5b6108999150893d8b1161032f5761032181836111eb565b5f610788565b88513d85823e3d90fd5b90506108cd91985087929650610767955060a03d81116103745761035c81836111eb565b929a929893979394509192905061072b565b508551903d90823e3d90fd5b60a090865192838092633fabe5a360e21b82525afa908115610971578490859261094d575b5061093e57610922610e10914261126d565b111561092f57815f6106db565b50825163d15f73b560e01b8152fd5b845162032b3d60e81b81528390fd5b9050610967915060a03d81116103745761035c81836111eb565b505091505f610910565b85513d86823e3d90fd5b5080fd5b80fd5b50503461097b578160031936011261097b57517f000000000000000000000000c76dfb89ff298145b417d221b2c747d84952e01d6001600160a01b03168152602090f35b5034610416576109d5366111a9565b86546001600160a01b03979195949193908590891680610be9575b50508651633fabe5a360e21b8152818916919060a0818881865afa90811561037b578690879688918994610bb4575b50610a3891906100dc906001600160801b03164261126d565b89516309169eff60e21b815260209b908c818b81895afa9081156102ff578991610b97575b50168a51630455b78f60e31b81528c818b81855afa9081156102ff57918d9593918b9795938b91610b7a575b5060170b89139081610b11575b509161016b91610154610aa99594611304565b15610ade57885163313ce56760e01b815292839182905afa908115610216576101ac9392916102539186916101e957506113b6565b885163313ce56760e01b815293949392839182905afa908115610216576102599392916101a69186916101e957506113b6565b90508c969294969591939551928380926370da2f6760e01b82525afa9081156102d857899593610aa9936101548f979461016b948d91610b5d575b5060170b8b12929495505091610a96565b610b749150893d8b116102d1576102c381836111eb565b5f610b4c565b610b919150873d89116102d1576102c381836111eb565b5f610a89565b610bae91508d803d1061032f5761032181836111eb565b5f610a5d565b9093506100dc9750610a389250610bd9915060a03d81116103745761035c81836111eb565b9299929593945092919050610a1f565b60a090895192838092633fabe5a360e21b82525afa90811561040c5785908692610c2d575b506103d957610c20610e10914261126d565b11156103c957845f6109f0565b9050610c47915060a03d81116103745761035c81836111eb565b505091505f610c0e565b503461041657610c60366111a9565b93929060018060a09894981b0396848885541680610e72575b50508651633fabe5a360e21b8152818916919060a0818881865afa90811561037b578690879588918994610e3d575b50610cc191906100dc906001600160801b03164261126d565b89516309169eff60e21b815260209b908c818b81895afa9081156102ff578991610e20575b50168a51630455b78f60e31b81528c818b81855afa9081156102ff57918d9593918b9795938b91610e03575b5060170b88139081610d9a575b509161016b91610154610d329594611304565b15610d6757885163313ce56760e01b815292839182905afa908115610216576101ac93929161056b9186916101e957506113b6565b885163313ce56760e01b815293949392839182905afa908115610216576102599392916105329186916101e957506113b6565b90508c969294969591939551928380926370da2f6760e01b82525afa9081156102d857899593610d32936101548f979461016b948d91610de6575b5060170b8a12929495505091610d1f565b610dfd9150893d8b116102d1576102c381836111eb565b5f610dd5565b610e1a9150873d89116102d1576102c381836111eb565b5f610d12565b610e3791508d803d1061032f5761032181836111eb565b5f610ce6565b9093506100dc9650610cc19250610e62915060a03d81116103745761035c81836111eb565b9298929593945092919050610ca8565b60a090895192838092633fabe5a360e21b82525afa90811561040c5785908692610eb6575b506103d957610ea9610e10914261126d565b11156103c957845f610c79565b9050610ed0915060a03d81116103745761035c81836111eb565b505091505f610e97565b91929050346111a5576020938460031936011261097f5780548435946001600160a01b039490918290861680611118575b50508351633fabe5a360e21b81529490507f000000000000000000000000c76dfb89ff298145b417d221b2c747d84952e01d811660a0868481845afa918215610971578885928698879088966110e2575b5086929190610f98906100dc7f00000000000000000000000000000000000000000000000000000000000151806001600160801b03164261126d565b88516309169eff60e21b815292839182905afa9081156110bb5786916110c5575b50168551630455b78f60e31b815289818681855afa9081156110bb5785918b91889161109e575b5060170b89139283611036575b50505090610154610ffe9392611304565b6305f5e100948581029581870414901517156101d65783156110235750505191048152f35b634e487b7160e01b825260129052602490fd5b88516370da2f6760e01b815293509091839182905afa90811561109457610ffe939291610154918791611077575b5060170b8812919293505083895f610fed565b61108e91508b3d8d116102d1576102c381836111eb565b5f611064565b86513d87823e3d90fd5b6110b59150823d84116102d1576102c381836111eb565b5f610fe0565b87513d88823e3d90fd5b6110dc91508a3d8c1161032f5761032181836111eb565b5f610fb9565b905061110691995086929550610f98945060a03d81116103745761035c81836111eb565b929b9297939693945091929050610f5c565b633fabe5a360e21b835260a091839182905afa90811561119b5783908492611177575b506111695761114d610e10914261126d565b111561115b575f8181610f0b565b825163d15f73b560e01b8152fd5b50825162032b3d60e81b8152fd5b9050611191915060a03d81116103745761035c81836111eb565b505091505f61113b565b84513d85823e3d90fd5b8380fd5b60809060031901126111e757600435906024356001600160a01b03811681036111e757906044356001600160801b03811681036111e7579060643590565b5f80fd5b90601f8019910116810190811067ffffffffffffffff82111761120d57604052565b634e487b7160e01b5f52604160045260245ffd5b519069ffffffffffffffffffff821682036111e757565b908160a09103126111e75761124c81611221565b9160208201519160408101519161126a608060608401519301611221565b90565b9190820391821161127a57565b634e487b7160e01b5f52601160045260245ffd5b1561129557565b60405162461bcd60e51b815260206004820152600f60248201526e14dd185b19481c1c9a58d959995959608a1b6044820152606490fd5b908160209103126111e757516001600160a01b03811681036111e75790565b908160209103126111e757518060170b81036111e75790565b1561130b57565b60405162461bcd60e51b815260206004820152600f60248201526e1b5a5b8bdb585e081c995858da1959608a1b6044820152606490fd5b1561134957565b60405162461bcd60e51b8152602060048201526019602482015278105b9cddd95c8819da5d995b881899599bdc99481c9bdd5b99603a1b6044820152606490fd5b8181029291811591840414171561127a57565b908160209103126111e7575160ff811681036111e75790565b60ff16604d811161127a57600a0a90565b604d811161127a57600a0a90565b9081518110156113e6570160200190565b634e487b7160e01b5f52603260045260245ffd5b60408051633942720b60e11b8152915f9160049183908590849082906001600160a01b03165afa9384156115935783946114d8575b508051908082019082821067ffffffffffffffff8311176114c557526003938482526208aa8960eb1b6020830152835b85811061147157505050505050600190565b6001600160f81b03198061148583856113d5565b51169061149283866113d5565b5116036114bc575f1981146114a95760010161145f565b634e487b7160e01b855260118452602485fd5b50505050905090565b634e487b7160e01b855260418452602485fd5b9093503d8084833e6114ea81836111eb565b810190602090818184031261158f57805167ffffffffffffffff9182821161158b570183601f8201121561157457805191821161157857865193611537601f8401601f19168501866111eb565b8285528383830101116115745790859291835b82811061155e57505083010152925f61142f565b818101840151868201850152879450830161154a565b8580fd5b634e487b7160e01b865260418552602486fd5b8680fd5b8480fd5b81513d85823e3d90fd5b915f19828409928281029283808610950394808603951461160f57848311156111e75782910981805f0316809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b5050809250156111e7570490565b92919061162b82828661159d565b938215611649570961163957565b905f198110156111e75760010190565b634e487b7160e01b5f52601260045260245ffdfea2646970667358221220d6c87daf20ce2494d50abd36a9e3b7f4c697071e5ea7cb1fee860f8897e2b86664736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c76dfb89ff298145b417d221b2c747d84952e01d00000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _pricefeedETH_USD (address): 0xc76dFb89fF298145b417d221B2c747d84952e01d
Arg [1] : _chainlink_heartbeatETH_USD (uint128): 86400
Arg [2] : _uptimeFeedAddress (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000c76dfb89ff298145b417d221b2c747d84952e01d
Arg [1] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in S
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.