Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ChainLinkFeedsRegistry
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 50 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.7.6;
pragma abicoder v2;
import "@openzeppelin/contracts/math/SafeMath.sol";
import "@chainlink/contracts/src/v0.7/interfaces/AggregatorInterface.sol";
import "@chainlink/contracts/src/v0.7/Denominations.sol";
import "../interfaces/yang/IChainLinkFeedsRegistry.sol";
import "../libraries/BinaryExp.sol";
contract ChainLinkFeedsRegistry is IChainLinkFeedsRegistry {
using SafeMath for uint256;
using SafeMath for uint256;
mapping(address => Registry) public assets2USD;
mapping(address => Registry) public assets2ETH;
address public nextgov;
address public governance;
address public immutable USD;
address public immutable WETH;
modifier onlyGov() {
require(msg.sender == governance, "gov");
_;
}
function transferGovernance(address _nextgov) external onlyGov {
nextgov = _nextgov;
}
function acceptGovrnance() external {
require(msg.sender == nextgov, "nextgov");
governance = nextgov;
nextgov = address(0);
}
constructor(
address _governance,
address _weth,
InputInitParam[] memory params
) {
governance = _governance;
WETH = _weth;
USD = Denominations.USD;
for (uint256 i = 0; i < params.length; i++) {
if (params[i].isUSD) {
assets2USD[params[i].asset] = Registry({
index: params[i].registry,
decimals: params[i].decimals
});
} else {
assets2ETH[params[i].asset] = Registry({
index: params[i].registry,
decimals: params[i].decimals
});
}
}
}
// VIEW
// All USD registry decimals is 8, all ETH registry decimals is 18
// Return 1e8
function getUSDPrice(address asset)
external
view
override
returns (uint256)
{
uint256 price = 0;
if (assets2USD[asset].index != address(0)) {
price = uint256(
AggregatorInterface(assets2USD[asset].index).latestAnswer()
);
} else if (
assets2ETH[asset].index != address(0) &&
assets2USD[WETH].index != address(0)
) {
uint256 tokenETHPrice = uint256(
AggregatorInterface(assets2ETH[asset].index).latestAnswer()
);
uint256 ethUSDPrice = uint256(
AggregatorInterface(assets2USD[WETH].index).latestAnswer()
);
price = tokenETHPrice.mul(ethUSDPrice).div(
BinaryExp.pow(10, assets2ETH[asset].decimals)
);
}
return price;
}
// Returns 1e18
function getETHPrice(address asset)
external
view
override
returns (uint256)
{
uint256 price = 0;
if (assets2ETH[asset].index != address(0)) {
price = uint256(
AggregatorInterface(assets2ETH[asset].index).latestAnswer()
);
}
return price;
}
function addUSDFeed(
address asset,
address index,
uint256 decimals
) external override onlyGov {
assets2USD[asset] = Registry({index: index, decimals: decimals});
}
function addETHFeed(
address asset,
address index,
uint256 decimals
) external override onlyGov {
assets2ETH[asset] = Registry({index: index, decimals: decimals});
}
function removeUSDFeed(address asset) external override onlyGov {
delete assets2USD[asset];
}
function removeETHFeed(address asset) external override onlyGov {
delete assets2ETH[asset];
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b > a) return (false, 0);
return (true, a - b);
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a / b);
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a % b);
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow");
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) return 0;
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: division by zero");
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: modulo by zero");
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
return a - b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryDiv}.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a % b;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.7.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.7.0;
library Denominations {
address public constant ETH = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
address public constant BTC = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;
// Fiat currencies follow https://en.wikipedia.org/wiki/ISO_4217
address public constant USD = address(840);
address public constant GBP = address(826);
address public constant EUR = address(978);
address public constant JPY = address(392);
address public constant KRW = address(410);
address public constant CNY = address(156);
address public constant AUD = address(36);
address public constant CAD = address(124);
address public constant CHF = address(756);
address public constant ARS = address(32);
}// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.7.6;
pragma abicoder v2;
interface IChainLinkFeedsRegistry {
struct Registry {
address index;
uint256 decimals;
}
struct InputInitParam {
address asset;
bool isUSD;
address registry;
uint256 decimals;
}
function getUSDPrice(address asset) external view returns (uint256);
function getETHPrice(address asset) external view returns (uint256);
function addUSDFeed(
address asset,
address index,
uint256 decimals
) external;
function addETHFeed(
address asset,
address index,
uint256 decimals
) external;
function removeUSDFeed(address asset) external;
function removeETHFeed(address asset) external;
}// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.7.6;
import "@openzeppelin/contracts/math/SafeMath.sol";
library BinaryExp {
using SafeMath for uint256;
function pow(uint256 a, uint256 b) internal pure returns (uint256) {
if (b == 0) {
return 1;
} else if (b == 1) {
return a;
} else {
uint256 ret = 1;
for (; b > 0; ) {
if (b.mod(2) == 1) {
ret = ret.mul(a);
}
a = a.mul(a);
b = b.div(2);
}
return ret;
}
}
}{
"optimizer": {
"enabled": true,
"runs": 50
},
"metadata": {
"bytecodeHash": "none"
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_governance","type":"address"},{"internalType":"address","name":"_weth","type":"address"},{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"bool","name":"isUSD","type":"bool"},{"internalType":"address","name":"registry","type":"address"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"internalType":"struct IChainLinkFeedsRegistry.InputInitParam[]","name":"params","type":"tuple[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"USD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptGovrnance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"index","type":"address"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"name":"addETHFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"index","type":"address"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"name":"addUSDFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"assets2ETH","outputs":[{"internalType":"address","name":"index","type":"address"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"assets2USD","outputs":[{"internalType":"address","name":"index","type":"address"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getETHPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getUSDPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextgov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"removeETHFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"removeUSDFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nextgov","type":"address"}],"name":"transferGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60c06040523480156200001157600080fd5b5060405162000e6a38038062000e6a83398101604081905262000034916200021d565b600380546001600160a01b0319166001600160a01b038516179055606082901b6001600160601b03191660a052606960631b60805260005b8151811015620001f6578181815181106200008357fe5b6020026020010151602001511562000143576040518060400160405280838381518110620000ad57fe5b6020026020010151604001516001600160a01b03168152602001838381518110620000d457fe5b602002602001015160600151815250600080848481518110620000f357fe5b602090810291909101810151516001600160a01b039081168352828201939093526040909101600020835181546001600160a01b03191693169290921782559190910151600190910155620001ed565b60405180604001604052808383815181106200015b57fe5b6020026020010151604001516001600160a01b031681526020018383815181106200018257fe5b60200260200101516060015181525060016000848481518110620001a257fe5b602090810291909101810151516001600160a01b039081168352828201939093526040909101600020835181546001600160a01b031916931692909217825591909101516001909101555b6001016200006c565b505050506200037a565b80516001600160a01b03811681146200021857600080fd5b919050565b60008060006060848603121562000232578283fd5b6200023d8462000200565b925060206200024e81860162000200565b604086810151919450906001600160401b03808211156200026d578485fd5b818801915088601f83011262000281578485fd5b8151818111156200028e57fe5b6200029d858683020162000356565b818152858101908487016080808502870189018e1015620002bc57898afd5b8996505b84871015620003435780828f031215620002d857898afd5b87518181018181108882111715620002ec57fe5b8952620002f98362000200565b81528983015180151581146200030d578b8cfd5b818b01526200031e838a0162000200565b818a0152606083810151908201528452600196909601959288019290810190620002c0565b5050809750505050505050509250925092565b6040518181016001600160401b03811182821017156200037257fe5b604052919050565b60805160601c60a05160601c610abc620003ae600039806103875280610454528061067b5250806101c75250610abc6000f3fe608060405234801561001057600080fd5b50600436106100ba5760003560e01c80631bf6c21b146100bf5780633c05824d146100dd5780634c7ec914146100e75780635aa6e675146100fa5780638b2f0f4f14610102578063946187061461012257806397cecb25146101355780639b87c82314610148578063ad5c464814610169578063add9f06414610171578063b6377a7d14610184578063d38bfff414610197578063f7fbfa0b146101aa578063f94e4e80146101bd575b600080fd5b6100c76101c5565b6040516100d49190610a1a565b60405180910390f35b6100e56101e9565b005b6100e56100f53660046109ad565b610243565b6100c7610298565b6101156101103660046109ad565b6102a7565b6040516100d49190610a85565b6100e56101303660046109ad565b61054b565b6101156101433660046109ad565b6105a0565b61015b6101563660046109ad565b610654565b6040516100d4929190610a2e565b6100c7610679565b6100e561017f3660046109c7565b61069d565b61015b6101923660046109ad565b610712565b6100e56101a53660046109ad565b610737565b6100e56101b83660046109c7565b610783565b6100c76107f9565b7f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b0316331461021c5760405162461bcd60e51b815260040161021390610a64565b60405180910390fd5b60028054600380546001600160a01b03199081166001600160a01b03841617909155169055565b6003546001600160a01b0316331461026d5760405162461bcd60e51b815260040161021390610a47565b6001600160a01b03166000908152600160208190526040822080546001600160a01b03191681550155565b6003546001600160a01b031681565b6001600160a01b03818116600090815260208190526040812054909182911615610359576001600160a01b03808416600090815260208181526040918290205482516350d25bcd60e01b815292519316926350d25bcd926004808201939291829003018186803b15801561031a57600080fd5b505afa15801561032e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103529190610a02565b9050610543565b6001600160a01b0383811660009081526001602052604090205416158015906103bb57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166000908152602081905260409020541615155b15610543576001600160a01b0380841660009081526001602090815260408083205481516350d25bcd60e01b81529151939416926350d25bcd92600480840193919291829003018186803b15801561041257600080fd5b505afa158015610426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044a9190610a02565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166000908152602081815260408083205481516350d25bcd60e01b81529151959650929492909316926350d25bcd9260048083019392829003018186803b1580156104be57600080fd5b505afa1580156104d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f69190610a02565b905061053e61052e600a60016000896001600160a01b03166001600160a01b0316815260200190815260200160002060010154610808565b6105388484610877565b906108d0565b925050505b90505b919050565b6003546001600160a01b031633146105755760405162461bcd60e51b815260040161021390610a47565b6001600160a01b0316600090815260208190526040812080546001600160a01b031916815560010155565b6001600160a01b03818116600090815260016020526040812054909182911615610543576001600160a01b038084166000908152600160209081526040918290205482516350d25bcd60e01b815292519316926350d25bcd926004808201939291829003018186803b15801561061557600080fd5b505afa158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d9190610a02565b9392505050565b600060208190529081526040902080546001909101546001600160a01b039091169082565b7f000000000000000000000000000000000000000000000000000000000000000081565b6003546001600160a01b031633146106c75760405162461bcd60e51b815260040161021390610a47565b6040805180820182526001600160a01b03938416815260208082019384529484166000908152948590529320925183546001600160a01b031916921691909117825551600190910155565b600160208190526000918252604090912080549101546001600160a01b039091169082565b6003546001600160a01b031633146107615760405162461bcd60e51b815260040161021390610a47565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146107ad5760405162461bcd60e51b815260040161021390610a47565b6040805180820182526001600160a01b0393841681526020808201938452948416600090815260019586905291909120905181546001600160a01b031916931692909217825551910155565b6002546001600160a01b031681565b60008161081757506001610871565b8160011415610827575081610871565b60015b821561086e5761083b836002610934565b600114156108505761084d8185610877565b90505b61085a8480610877565b93506108678360026108d0565b925061082a565b90505b92915050565b60008261088657506000610871565b8282028284828161089357fe5b041461086e5760405162461bcd60e51b8152600401808060200182810382526021815260200180610a8f6021913960400191505060405180910390fd5b6000808211610923576040805162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b604482015290519081900360640190fd5b81838161092c57fe5b049392505050565b6000808211610985576040805162461bcd60e51b8152602060048201526018602482015277536166654d6174683a206d6f64756c6f206279207a65726f60401b604482015290519081900360640190fd5b81838161098e57fe5b069392505050565b80356001600160a01b038116811461054657600080fd5b6000602082840312156109be578081fd5b61064d82610996565b6000806000606084860312156109db578182fd5b6109e484610996565b92506109f260208501610996565b9150604084013590509250925092565b600060208284031215610a13578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b60208082526003908201526233b7bb60e91b604082015260600190565b6020808252600790820152663732bc3a33b7bb60c91b604082015260600190565b9081526020019056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a164736f6c6343000706000a000000000000000000000000cb1b8b7d6515fefed3b8bbca60fb66dd43c83692000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c5990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000deb288f737066589598e9214e782fa5a8ed689e800000000000000000000000000000000000000000000000000000000000000120000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c5990000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f4030086522a5beea4988f8ca5b36dbc97bee88c0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84190000000000000000000000000000000000000000000000000000000000000008000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000010000000000000000000000008fffffd4afb6115b954bd326cbe7b4ba576818f60000000000000000000000000000000000000000000000000000000000000008000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000986b5e1e1755e3c2440e960477f25201b0a8bbd40000000000000000000000000000000000000000000000000000000000000012000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000010000000000000000000000003e7d1eab13ad0104d2750b8863b489d65364e32d0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ee9f2375b4bdf6387aa8265dd4fb8f16512a1d460000000000000000000000000000000000000000000000000000000000000012000000000000000000000000956f47f50a910163d8bf957cf5846d573e7f87ca000000000000000000000000000000000000000000000000000000000000000100000000000000000000000031e0a88fecb6ec0a411dbe0e9e76391498296ee90000000000000000000000000000000000000000000000000000000000000008000000000000000000000000956f47f50a910163d8bf957cf5846d573e7f87ca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f0d2c2838c6ac24443d13e23d99490017bde370000000000000000000000000000000000000000000000000000000000000001200000000000000000000000003ab458634910aad20ef5f1c8ee96f1d6ac549190000000000000000000000000000000000000000000000000000000000000001000000000000000000000000483d36f6a1d063d580c7a24f9a42b346f3a69fbb000000000000000000000000000000000000000000000000000000000000000800000000000000000000000003ab458634910aad20ef5f1c8ee96f1d6ac5491900000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ad7b025127e89263242ab68f0f9c4e5c033b48900000000000000000000000000000000000000000000000000000000000000120000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000aed0c38402a5d19df6e4c03f4e2dced6e29c1ee900000000000000000000000000000000000000000000000000000000000000080000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000773616e4d11a78f511299002da57a0a94577f1f40000000000000000000000000000000000000000000000000000000000000012
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ba5760003560e01c80631bf6c21b146100bf5780633c05824d146100dd5780634c7ec914146100e75780635aa6e675146100fa5780638b2f0f4f14610102578063946187061461012257806397cecb25146101355780639b87c82314610148578063ad5c464814610169578063add9f06414610171578063b6377a7d14610184578063d38bfff414610197578063f7fbfa0b146101aa578063f94e4e80146101bd575b600080fd5b6100c76101c5565b6040516100d49190610a1a565b60405180910390f35b6100e56101e9565b005b6100e56100f53660046109ad565b610243565b6100c7610298565b6101156101103660046109ad565b6102a7565b6040516100d49190610a85565b6100e56101303660046109ad565b61054b565b6101156101433660046109ad565b6105a0565b61015b6101563660046109ad565b610654565b6040516100d4929190610a2e565b6100c7610679565b6100e561017f3660046109c7565b61069d565b61015b6101923660046109ad565b610712565b6100e56101a53660046109ad565b610737565b6100e56101b83660046109c7565b610783565b6100c76107f9565b7f000000000000000000000000000000000000000000000000000000000000034881565b6002546001600160a01b0316331461021c5760405162461bcd60e51b815260040161021390610a64565b60405180910390fd5b60028054600380546001600160a01b03199081166001600160a01b03841617909155169055565b6003546001600160a01b0316331461026d5760405162461bcd60e51b815260040161021390610a47565b6001600160a01b03166000908152600160208190526040822080546001600160a01b03191681550155565b6003546001600160a01b031681565b6001600160a01b03818116600090815260208190526040812054909182911615610359576001600160a01b03808416600090815260208181526040918290205482516350d25bcd60e01b815292519316926350d25bcd926004808201939291829003018186803b15801561031a57600080fd5b505afa15801561032e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103529190610a02565b9050610543565b6001600160a01b0383811660009081526001602052604090205416158015906103bb57506001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281166000908152602081905260409020541615155b15610543576001600160a01b0380841660009081526001602090815260408083205481516350d25bcd60e01b81529151939416926350d25bcd92600480840193919291829003018186803b15801561041257600080fd5b505afa158015610426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044a9190610a02565b6001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281166000908152602081815260408083205481516350d25bcd60e01b81529151959650929492909316926350d25bcd9260048083019392829003018186803b1580156104be57600080fd5b505afa1580156104d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f69190610a02565b905061053e61052e600a60016000896001600160a01b03166001600160a01b0316815260200190815260200160002060010154610808565b6105388484610877565b906108d0565b925050505b90505b919050565b6003546001600160a01b031633146105755760405162461bcd60e51b815260040161021390610a47565b6001600160a01b0316600090815260208190526040812080546001600160a01b031916815560010155565b6001600160a01b03818116600090815260016020526040812054909182911615610543576001600160a01b038084166000908152600160209081526040918290205482516350d25bcd60e01b815292519316926350d25bcd926004808201939291829003018186803b15801561061557600080fd5b505afa158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d9190610a02565b9392505050565b600060208190529081526040902080546001909101546001600160a01b039091169082565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6003546001600160a01b031633146106c75760405162461bcd60e51b815260040161021390610a47565b6040805180820182526001600160a01b03938416815260208082019384529484166000908152948590529320925183546001600160a01b031916921691909117825551600190910155565b600160208190526000918252604090912080549101546001600160a01b039091169082565b6003546001600160a01b031633146107615760405162461bcd60e51b815260040161021390610a47565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146107ad5760405162461bcd60e51b815260040161021390610a47565b6040805180820182526001600160a01b0393841681526020808201938452948416600090815260019586905291909120905181546001600160a01b031916931692909217825551910155565b6002546001600160a01b031681565b60008161081757506001610871565b8160011415610827575081610871565b60015b821561086e5761083b836002610934565b600114156108505761084d8185610877565b90505b61085a8480610877565b93506108678360026108d0565b925061082a565b90505b92915050565b60008261088657506000610871565b8282028284828161089357fe5b041461086e5760405162461bcd60e51b8152600401808060200182810382526021815260200180610a8f6021913960400191505060405180910390fd5b6000808211610923576040805162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b604482015290519081900360640190fd5b81838161092c57fe5b049392505050565b6000808211610985576040805162461bcd60e51b8152602060048201526018602482015277536166654d6174683a206d6f64756c6f206279207a65726f60401b604482015290519081900360640190fd5b81838161098e57fe5b069392505050565b80356001600160a01b038116811461054657600080fd5b6000602082840312156109be578081fd5b61064d82610996565b6000806000606084860312156109db578182fd5b6109e484610996565b92506109f260208501610996565b9150604084013590509250925092565b600060208284031215610a13578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b60208082526003908201526233b7bb60e91b604082015260600190565b6020808252600790820152663732bc3a33b7bb60c91b604082015260600190565b9081526020019056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a164736f6c6343000706000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000cb1b8b7d6515fefed3b8bbca60fb66dd43c83692000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c5990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000deb288f737066589598e9214e782fa5a8ed689e800000000000000000000000000000000000000000000000000000000000000120000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c5990000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f4030086522a5beea4988f8ca5b36dbc97bee88c0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84190000000000000000000000000000000000000000000000000000000000000008000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000010000000000000000000000008fffffd4afb6115b954bd326cbe7b4ba576818f60000000000000000000000000000000000000000000000000000000000000008000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000986b5e1e1755e3c2440e960477f25201b0a8bbd40000000000000000000000000000000000000000000000000000000000000012000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000010000000000000000000000003e7d1eab13ad0104d2750b8863b489d65364e32d0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ee9f2375b4bdf6387aa8265dd4fb8f16512a1d460000000000000000000000000000000000000000000000000000000000000012000000000000000000000000956f47f50a910163d8bf957cf5846d573e7f87ca000000000000000000000000000000000000000000000000000000000000000100000000000000000000000031e0a88fecb6ec0a411dbe0e9e76391498296ee90000000000000000000000000000000000000000000000000000000000000008000000000000000000000000956f47f50a910163d8bf957cf5846d573e7f87ca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f0d2c2838c6ac24443d13e23d99490017bde370000000000000000000000000000000000000000000000000000000000000001200000000000000000000000003ab458634910aad20ef5f1c8ee96f1d6ac549190000000000000000000000000000000000000000000000000000000000000001000000000000000000000000483d36f6a1d063d580c7a24f9a42b346f3a69fbb000000000000000000000000000000000000000000000000000000000000000800000000000000000000000003ab458634910aad20ef5f1c8ee96f1d6ac5491900000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ad7b025127e89263242ab68f0f9c4e5c033b48900000000000000000000000000000000000000000000000000000000000000120000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000aed0c38402a5d19df6e4c03f4e2dced6e29c1ee900000000000000000000000000000000000000000000000000000000000000080000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000773616e4d11a78f511299002da57a0a94577f1f40000000000000000000000000000000000000000000000000000000000000012
-----Decoded View---------------
Arg [0] : _governance (address): 0xcb1B8b7D6515FEfEd3B8BbCa60FB66Dd43c83692
Arg [1] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [2] : params (tuple[]):
Arg [1] : asset (address): 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599
Arg [2] : isUSD (bool): False
Arg [3] : registry (address): 0xdeb288F737066589598e9214E782fa5A8eD689e8
Arg [4] : decimals (uint256): 18
Arg [1] : asset (address): 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599
Arg [2] : isUSD (bool): True
Arg [3] : registry (address): 0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c
Arg [4] : decimals (uint256): 8
Arg [1] : asset (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [2] : isUSD (bool): True
Arg [3] : registry (address): 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
Arg [4] : decimals (uint256): 8
Arg [1] : asset (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [2] : isUSD (bool): True
Arg [3] : registry (address): 0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6
Arg [4] : decimals (uint256): 8
Arg [1] : asset (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [2] : isUSD (bool): False
Arg [3] : registry (address): 0x986b5E1e1755e3C2440e960477f25201B0a8bbD4
Arg [4] : decimals (uint256): 18
Arg [1] : asset (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [2] : isUSD (bool): True
Arg [3] : registry (address): 0x3E7d1eAB13ad0104d2750B8863b489D65364e32D
Arg [4] : decimals (uint256): 8
Arg [1] : asset (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [2] : isUSD (bool): False
Arg [3] : registry (address): 0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46
Arg [4] : decimals (uint256): 18
Arg [1] : asset (address): 0x956F47F50A910163D8BF957Cf5846D573E7f87CA
Arg [2] : isUSD (bool): True
Arg [3] : registry (address): 0x31e0a88fecB6eC0a411DBe0e9E76391498296EE9
Arg [4] : decimals (uint256): 8
Arg [1] : asset (address): 0x956F47F50A910163D8BF957Cf5846D573E7f87CA
Arg [2] : isUSD (bool): False
Arg [3] : registry (address): 0x7F0D2c2838c6AC24443d13e23d99490017bDe370
Arg [4] : decimals (uint256): 18
Arg [1] : asset (address): 0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919
Arg [2] : isUSD (bool): True
Arg [3] : registry (address): 0x483d36F6a1d063d580c7a24F9A42B346f3a69fbb
Arg [4] : decimals (uint256): 8
Arg [1] : asset (address): 0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919
Arg [2] : isUSD (bool): False
Arg [3] : registry (address): 0x4ad7B025127e89263242aB68F0f9c4E5C033B489
Arg [4] : decimals (uint256): 18
Arg [1] : asset (address): 0x6B175474E89094C44Da98b954EedeAC495271d0F
Arg [2] : isUSD (bool): True
Arg [3] : registry (address): 0xAed0c38402a5d19df6E4c03F4E2DceD6e29c1ee9
Arg [4] : decimals (uint256): 8
Arg [1] : asset (address): 0x6B175474E89094C44Da98b954EedeAC495271d0F
Arg [2] : isUSD (bool): False
Arg [3] : registry (address): 0x773616E4d11A78F511299002da57A0a94577F1f4
Arg [4] : decimals (uint256): 18
-----Encoded View---------------
56 Constructor Arguments found :
Arg [0] : 000000000000000000000000cb1b8b7d6515fefed3b8bbca60fb66dd43c83692
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [4] : 0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 000000000000000000000000deb288f737066589598e9214e782fa5a8ed689e8
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [8] : 0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [10] : 000000000000000000000000f4030086522a5beea4988f8ca5b36dbc97bee88c
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [12] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [14] : 0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [16] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [18] : 0000000000000000000000008fffffd4afb6115b954bd326cbe7b4ba576818f6
Arg [19] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [20] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [21] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [22] : 000000000000000000000000986b5e1e1755e3c2440e960477f25201b0a8bbd4
Arg [23] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [24] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [26] : 0000000000000000000000003e7d1eab13ad0104d2750b8863b489d65364e32d
Arg [27] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [28] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [29] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [30] : 000000000000000000000000ee9f2375b4bdf6387aa8265dd4fb8f16512a1d46
Arg [31] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [32] : 000000000000000000000000956f47f50a910163d8bf957cf5846d573e7f87ca
Arg [33] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [34] : 00000000000000000000000031e0a88fecb6ec0a411dbe0e9e76391498296ee9
Arg [35] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [36] : 000000000000000000000000956f47f50a910163d8bf957cf5846d573e7f87ca
Arg [37] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [38] : 0000000000000000000000007f0d2c2838c6ac24443d13e23d99490017bde370
Arg [39] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [40] : 00000000000000000000000003ab458634910aad20ef5f1c8ee96f1d6ac54919
Arg [41] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [42] : 000000000000000000000000483d36f6a1d063d580c7a24f9a42b346f3a69fbb
Arg [43] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [44] : 00000000000000000000000003ab458634910aad20ef5f1c8ee96f1d6ac54919
Arg [45] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [46] : 0000000000000000000000004ad7b025127e89263242ab68f0f9c4e5c033b489
Arg [47] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [48] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [49] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [50] : 000000000000000000000000aed0c38402a5d19df6e4c03f4e2dced6e29c1ee9
Arg [51] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [52] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [53] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [54] : 000000000000000000000000773616e4d11a78f511299002da57a0a94577f1f4
Arg [55] : 0000000000000000000000000000000000000000000000000000000000000012
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 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.