Overview
ETH Balance
ETH Value
$0.00Latest 13 from a total of 13 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Set Gov | 102896571 | 1015 days ago | IN | 0 ETH | 0.000152602489 | ||||
| Set Token Config | 102894664 | 1015 days ago | IN | 0 ETH | 0.000177123333 | ||||
| Set Token Config | 102894619 | 1015 days ago | IN | 0 ETH | 0.000169208539 | ||||
| Set Token Config | 102894589 | 1015 days ago | IN | 0 ETH | 0.000177582944 | ||||
| Set Token Config | 102894536 | 1015 days ago | IN | 0 ETH | 0.000177143233 | ||||
| Set Token Config | 102894500 | 1015 days ago | IN | 0 ETH | 0.000177582944 | ||||
| Set Token Config | 102894443 | 1015 days ago | IN | 0 ETH | 0.000169208539 | ||||
| Set Token Config | 102894416 | 1015 days ago | IN | 0 ETH | 0.000176537068 | ||||
| Set Secondary Pr... | 102894386 | 1015 days ago | IN | 0 ETH | 0.000152035325 | ||||
| Set Price Sample... | 102894352 | 1015 days ago | IN | 0 ETH | 0.000143660793 | ||||
| Set Max Strict P... | 102894315 | 1015 days ago | IN | 0 ETH | 0.000147178479 | ||||
| Set Price Sample... | 102894262 | 1015 days ago | IN | 0 ETH | 0.000143663593 | ||||
| Set Max Strict P... | 102894224 | 1015 days ago | IN | 0 ETH | 0.000147198379 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH | ||||
| 106967607 | 968 days ago | 0 ETH |
Cross-Chain Transactions
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
import "../libraries/math/SafeMath.sol";
import "./interfaces/IVaultPriceFeed.sol";
import "../oracle/interfaces/IPriceFeed.sol";
import "../oracle/interfaces/ISecondaryPriceFeed.sol";
pragma solidity 0.6.12;
contract VaultPriceFeed is IVaultPriceFeed {
using SafeMath for uint256;
uint256 public constant PRICE_PRECISION = 10**30;
uint256 public constant ONE_USD = PRICE_PRECISION;
uint256 public constant BASIS_POINTS_DIVISOR = 10000;
uint256 public constant MAX_SPREAD_BASIS_POINTS = 50;
uint256 public constant MAX_ADJUSTMENT_INTERVAL = 2 hours;
uint256 public constant MAX_ADJUSTMENT_BASIS_POINTS = 20;
address public gov;
bool public isSecondaryPriceEnabled = true;
bool public favorPrimaryPrice = false;
uint256 public priceSampleSpace = 3;
uint256 public maxStrictPriceDeviation = 0;
address public secondaryPriceFeed;
uint256 public spreadThresholdBasisPoints = 30;
mapping(address => address) public priceFeeds;
mapping(address => uint256) public priceDecimals;
mapping(address => uint256) public spreadBasisPoints;
// Chainlink can return prices for stablecoins
// that differs from 1 USD by a larger percentage than stableSwapFeeBasisPoints
// we use strictStableTokens to cap the price to 1 USD
// this allows us to configure stablecoins like LUSD as being a stableToken
// while not being a strictStableToken
mapping(address => bool) public strictStableTokens;
mapping(address => uint256) public override adjustmentBasisPoints;
mapping(address => bool) public override isAdjustmentAdditive;
mapping(address => uint256) public lastAdjustmentTimings;
modifier onlyGov() {
require(msg.sender == gov, "VaultPriceFeed: forbidden");
_;
}
constructor() public {
gov = msg.sender;
}
function setGov(address _gov) external onlyGov {
gov = _gov;
}
function setAdjustment(
address _token,
bool _isAdditive,
uint256 _adjustmentBps
) external override onlyGov {
require(lastAdjustmentTimings[_token].add(MAX_ADJUSTMENT_INTERVAL) < block.timestamp, "VaultPriceFeed: adjustment frequency exceeded");
require(_adjustmentBps <= MAX_ADJUSTMENT_BASIS_POINTS, "invalid _adjustmentBps");
isAdjustmentAdditive[_token] = _isAdditive;
adjustmentBasisPoints[_token] = _adjustmentBps;
lastAdjustmentTimings[_token] = block.timestamp;
}
function setIsSecondaryPriceEnabled(bool _isEnabled) external override onlyGov {
isSecondaryPriceEnabled = _isEnabled;
}
function setSecondaryPriceFeed(address _secondaryPriceFeed) external onlyGov {
secondaryPriceFeed = _secondaryPriceFeed;
}
function setSpreadBasisPoints(address _token, uint256 _spreadBasisPoints) external override onlyGov {
require(_spreadBasisPoints <= MAX_SPREAD_BASIS_POINTS, "VaultPriceFeed: invalid _spreadBasisPoints");
spreadBasisPoints[_token] = _spreadBasisPoints;
}
function setSpreadThresholdBasisPoints(uint256 _spreadThresholdBasisPoints) external override onlyGov {
spreadThresholdBasisPoints = _spreadThresholdBasisPoints;
}
function setFavorPrimaryPrice(bool _favorPrimaryPrice) external override onlyGov {
favorPrimaryPrice = _favorPrimaryPrice;
}
function setPriceSampleSpace(uint256 _priceSampleSpace) external override onlyGov {
require(_priceSampleSpace > 0, "VaultPriceFeed: invalid _priceSampleSpace");
priceSampleSpace = _priceSampleSpace;
}
function setMaxStrictPriceDeviation(uint256 _maxStrictPriceDeviation) external override onlyGov {
maxStrictPriceDeviation = _maxStrictPriceDeviation;
}
function setTokenConfig(
address _token,
address _priceFeed,
uint256 _priceDecimals,
bool _isStrictStable
) external override onlyGov {
priceFeeds[_token] = _priceFeed;
priceDecimals[_token] = _priceDecimals;
strictStableTokens[_token] = _isStrictStable;
}
function getPrice(
address _token,
bool _maximise,
bool /*_includeAmmPrice */,
bool /* _useSwapPricing */
) public view override returns (uint256) {
uint256 price = getPriceV1(_token, _maximise);
uint256 adjustmentBps = adjustmentBasisPoints[_token];
if (adjustmentBps > 0) {
bool isAdditive = isAdjustmentAdditive[_token];
if (isAdditive) {
price = price.mul(BASIS_POINTS_DIVISOR.add(adjustmentBps)).div(BASIS_POINTS_DIVISOR);
} else {
price = price.mul(BASIS_POINTS_DIVISOR.sub(adjustmentBps)).div(BASIS_POINTS_DIVISOR);
}
}
return price;
}
function getPriceV1(
address _token,
bool _maximise
) public view returns (uint256) {
uint256 price = getPrimaryPrice(_token, _maximise);
if (isSecondaryPriceEnabled) {
price = getSecondaryPrice(_token, price, _maximise);
}
if (strictStableTokens[_token]) {
uint256 delta = price > ONE_USD ? price.sub(ONE_USD) : ONE_USD.sub(price);
if (delta <= maxStrictPriceDeviation) {
return ONE_USD;
}
// if _maximise and price is e.g. 1.02, return 1.02
if (_maximise && price > ONE_USD) {
return price;
}
// if !_maximise and price is e.g. 0.98, return 0.98
if (!_maximise && price < ONE_USD) {
return price;
}
return ONE_USD;
}
uint256 _spreadBasisPoints = spreadBasisPoints[_token];
if (_maximise) {
return price.mul(BASIS_POINTS_DIVISOR.add(_spreadBasisPoints)).div(BASIS_POINTS_DIVISOR);
}
return price.mul(BASIS_POINTS_DIVISOR.sub(_spreadBasisPoints)).div(BASIS_POINTS_DIVISOR);
}
function getLatestPrimaryPrice(address _token) public override view returns (uint256) {
address priceFeedAddress = priceFeeds[_token];
require(priceFeedAddress != address(0), "VaultPriceFeed: invalid price feed");
IPriceFeed priceFeed = IPriceFeed(priceFeedAddress);
int256 price = priceFeed.latestAnswer();
require(price > 0, "VaultPriceFeed: invalid price");
return uint256(price);
}
function getPrimaryPrice(address _token, bool _maximise) public view override returns (uint256) {
address priceFeedAddress = priceFeeds[_token];
require(priceFeedAddress != address(0), "VaultPriceFeed: invalid price feed");
IPriceFeed priceFeed = IPriceFeed(priceFeedAddress);
uint256 price = 0;
uint80 roundId = priceFeed.latestRound();
for (uint80 i = 0; i < priceSampleSpace; i++) {
if (roundId <= i) {
break;
}
uint256 p;
if (i == 0) {
int256 _p = priceFeed.latestAnswer();
require(_p > 0, "VaultPriceFeed: invalid price");
p = uint256(_p);
} else {
(, int256 _p, , , ) = priceFeed.getRoundData(roundId - i);
require(_p > 0, "VaultPriceFeed: invalid price");
p = uint256(_p);
}
if (price == 0) {
price = p;
continue;
}
if (_maximise && p > price) {
price = p;
continue;
}
if (!_maximise && p < price) {
price = p;
}
}
require(price > 0, "VaultPriceFeed: could not fetch price");
// normalise price precision
uint256 _priceDecimals = priceDecimals[_token];
return price.mul(PRICE_PRECISION).div(10**_priceDecimals);
}
function getSecondaryPrice(
address _token,
uint256 _referencePrice,
bool _maximise
) public view returns (uint256) {
if (secondaryPriceFeed == address(0)) {
return _referencePrice;
}
return ISecondaryPriceFeed(secondaryPriceFeed).getPrice(_token, _referencePrice, _maximise);
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
interface IVaultPriceFeed {
function adjustmentBasisPoints(address _token)
external
view
returns (uint256);
function isAdjustmentAdditive(address _token) external view returns (bool);
function setAdjustment(
address _token,
bool _isAdditive,
uint256 _adjustmentBps
) external;
function setIsSecondaryPriceEnabled(bool _isEnabled) external;
function setSpreadBasisPoints(address _token, uint256 _spreadBasisPoints)
external;
function setSpreadThresholdBasisPoints(uint256 _spreadThresholdBasisPoints)
external;
function setFavorPrimaryPrice(bool _favorPrimaryPrice) external;
function setPriceSampleSpace(uint256 _priceSampleSpace) external;
function setMaxStrictPriceDeviation(uint256 _maxStrictPriceDeviation)
external;
function getPrice(
address _token,
bool _maximise,
bool _includeAmmPrice,
bool _useSwapPricing
) external view returns (uint256);
function getPrimaryPrice(address _token, bool _maximise)
external
view
returns (uint256);
function setTokenConfig(
address _token,
address _priceFeed,
uint256 _priceDecimals,
bool _isStrictStable
) external;
function getLatestPrimaryPrice(address _token) external view returns (uint256);
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
/**
* @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, 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) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* 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);
uint256 c = a - b;
return c;
}
/**
* @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) {
// 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 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts 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) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message 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,
string memory errorMessage
) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts 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) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message 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,
string memory errorMessage
) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
interface IPriceFeed {
function description() external view returns (string memory);
function aggregator() external view returns (address);
function latestAnswer() external view returns (int256);
function latestRound() external view returns (uint80);
function getRoundData(uint80 roundId) external view returns (uint80, int256, uint256, uint256, uint80);
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
interface ISecondaryPriceFeed {
function getPrice(address _token, uint256 _referencePrice, bool _maximise) external view returns (uint256);
}{
"optimizer": {
"enabled": true,
"runs": 50
},
"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":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BASIS_POINTS_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_ADJUSTMENT_BASIS_POINTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_ADJUSTMENT_INTERVAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SPREAD_BASIS_POINTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE_USD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"adjustmentBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"favorPrimaryPrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"getLatestPrimaryPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_maximise","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_maximise","type":"bool"}],"name":"getPriceV1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_maximise","type":"bool"}],"name":"getPrimaryPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_referencePrice","type":"uint256"},{"internalType":"bool","name":"_maximise","type":"bool"}],"name":"getSecondaryPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAdjustmentAdditive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSecondaryPriceEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastAdjustmentTimings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxStrictPriceDeviation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"priceDecimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"priceFeeds","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceSampleSpace","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"secondaryPriceFeed","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_isAdditive","type":"bool"},{"internalType":"uint256","name":"_adjustmentBps","type":"uint256"}],"name":"setAdjustment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_favorPrimaryPrice","type":"bool"}],"name":"setFavorPrimaryPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isEnabled","type":"bool"}],"name":"setIsSecondaryPriceEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxStrictPriceDeviation","type":"uint256"}],"name":"setMaxStrictPriceDeviation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_priceSampleSpace","type":"uint256"}],"name":"setPriceSampleSpace","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_secondaryPriceFeed","type":"address"}],"name":"setSecondaryPriceFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_spreadBasisPoints","type":"uint256"}],"name":"setSpreadBasisPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_spreadThresholdBasisPoints","type":"uint256"}],"name":"setSpreadThresholdBasisPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"uint256","name":"_priceDecimals","type":"uint256"},{"internalType":"bool","name":"_isStrictStable","type":"bool"}],"name":"setTokenConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"spreadBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"spreadThresholdBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"strictStableTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60806040526000805460ff60a81b1960ff60a01b19909116600160a01b171681556003600155600255601e60045534801561003957600080fd5b50600080546001600160a01b0319163317905561171c8061005b6000396000f3fe608060405234801561001057600080fd5b50600436106101d15760003560e01c80636ce8a44b116101055780639dcb511a1161009d5780639dcb511a146104c1578063a27ea386146104e7578063a39c73a31461050d578063b731dd8714610515578063b8f6110514610532578063cefe0f2114610558578063cfad57a21461057e578063d694376c146105a4578063eb1c92a9146105d8576101d1565b80636ce8a44b146103dd5780636fc8070814610403578063717cfe7a1461040b5780637cdddae6146104315780638b86616c1461045f57806395082d25146103d55780639a0a6635146104675780639b18dc471461048d5780639b88938014610495576101d1565b80633ebbc601116101785780633ebbc601146102d257806348cac277146102ee5780634a4b1f4f146103145780634b9ade471461031c57806356bf9de41461035a57806356c8c2c114610380578063593d9e80146103ae578063604f37e9146103b657806367781c0e146103d5576101d1565b80630957aed9146101d6578063126082cf146101f057806312d43a51146101f85780632fa03b8f1461021c5780632fbfe3d31461023b5780632fc3a70a14610258578063378e7bf7146102965780633eba8d361461029e575b600080fd5b6101de6105f7565b60408051918252519081900360200190f35b6101de6105fc565b610200610602565b604080516001600160a01b039092168252519081900360200190f35b6102396004803603602081101561023257600080fd5b5035610611565b005b6102396004803603602081101561025157600080fd5b50356106a2565b6101de6004803603608081101561026e57600080fd5b506001600160a01b0381351690602081013515159060408101351515906060013515156106f4565b6101de61078e565b6101de600480360360608110156102b457600080fd5b506001600160a01b0381351690602081013590604001351515610794565b6102da610840565b604080519115158252519081900360200190f35b6101de6004803603602081101561030457600080fd5b50356001600160a01b0316610850565b6101de610862565b6102396004803603608081101561033257600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515610867565b6101de6004803603602081101561037057600080fd5b50356001600160a01b0316610909565b6101de6004803603604081101561039657600080fd5b506001600160a01b0381351690602001351515610a1b565b6102da610d6b565b610239600480360360208110156103cc57600080fd5b50351515610d7b565b6101de610de6565b6102da600480360360208110156103f357600080fd5b50356001600160a01b0316610df6565b6101de610e0b565b6101de6004803603602081101561042157600080fd5b50356001600160a01b0316610e11565b6101de6004803603604081101561044757600080fd5b506001600160a01b0381351690602001351515610e23565b610200610f9a565b6102396004803603602081101561047d57600080fd5b50356001600160a01b0316610fa9565b6101de611018565b610239600480360360408110156104ab57600080fd5b506001600160a01b03813516906020013561101e565b610200600480360360208110156104d757600080fd5b50356001600160a01b03166110c7565b6101de600480360360208110156104fd57600080fd5b50356001600160a01b03166110e2565b6101de6110f4565b6102396004803603602081101561052b57600080fd5b50356110fa565b6102da6004803603602081101561054857600080fd5b50356001600160a01b031661114c565b6101de6004803603602081101561056e57600080fd5b50356001600160a01b0316611161565b6102396004803603602081101561059457600080fd5b50356001600160a01b0316611173565b610239600480360360608110156105ba57600080fd5b506001600160a01b03813516906020810135151590604001356111e2565b610239600480360360208110156105ee57600080fd5b50351515611325565b603281565b61271081565b6000546001600160a01b031681565b6000546001600160a01b0316331461065e576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b6000811161069d5760405162461bcd60e51b81526004018080602001828103825260298152602001806115bf6029913960400191505060405180910390fd5b600155565b6000546001600160a01b031633146106ef576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b600255565b6000806107018686610e23565b6001600160a01b0387166000908152600960205260409020549091508015610784576001600160a01b0387166000908152600a602052604090205460ff16801561076c5761076561271061075f6107588286611390565b86906113e8565b90611441565b9250610782565b61077f61271061075f6107588286611480565b92505b505b5095945050505050565b60025481565b6003546000906001600160a01b03166107ae575081610839565b60035460408051630ffd9c6d60e31b81526001600160a01b03878116600483015260248201879052851515604483015291519190921691637fece368916064808301926020929190829003018186803b15801561080a57600080fd5b505afa15801561081e573d6000803e3d6000fd5b505050506040513d602081101561083457600080fd5b505190505b9392505050565b600054600160a01b900460ff1681565b60096020526000908152604090205481565b601481565b6000546001600160a01b031633146108b4576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b6001600160a01b03938416600090815260056020908152604080832080546001600160a01b03191696909716959095179095556006855283812092909255600890935220805460ff1916911515919091179055565b6001600160a01b03808216600090815260056020526040812054909116806109625760405162461bcd60e51b81526004018080602001828103825260228152602001806116c56022913960400191505060405180910390fd5b60008190506000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109a257600080fd5b505afa1580156109b6573d6000803e3d6000fd5b505050506040513d60208110156109cc57600080fd5b5051905060008113610a13576040805162461bcd60e51b815260206004820152601d60248201526000805160206116a5833981519152604482015290519081900360640190fd5b949350505050565b6001600160a01b0380831660009081526005602052604081205490911680610a745760405162461bcd60e51b81526004018080602001828103825260228152602001806116c56022913960400191505060405180910390fd5b6000819050600080826001600160a01b031663668a0f026040518163ffffffff1660e01b815260040160206040518083038186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051905060005b600154816001600160501b03161015610ce657806001600160501b0316826001600160501b031611610b1757610ce6565b60006001600160501b038216610bda576000856001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6257600080fd5b505afa158015610b76573d6000803e3d6000fd5b505050506040513d6020811015610b8c57600080fd5b5051905060008113610bd3576040805162461bcd60e51b815260206004820152601d60248201526000805160206116a5833981519152604482015290519081900360640190fd5b9050610ca2565b6000856001600160a01b0316639a6fc8f58486036040518263ffffffff1660e01b815260040180826001600160501b0316815260200191505060a06040518083038186803b158015610c2b57600080fd5b505afa158015610c3f573d6000803e3d6000fd5b505050506040513d60a0811015610c5557600080fd5b5060200151905060008113610c9f576040805162461bcd60e51b815260206004820152601d60248201526000805160206116a5833981519152604482015290519081900360640190fd5b90505b83610cae579250610cde565b878015610cba57508381115b15610cc6579250610cde565b87158015610cd357508381105b15610cdc578093505b505b600101610ae6565b5060008211610d265760405162461bcd60e51b81526004018080602001828103825260258152602001806115e86025913960400191505060405180910390fd5b6001600160a01b038716600090815260066020526040902054610d5d600a82900a61075f8568327cb2734119d3b7a9601e1b6113e8565b955050505050505b92915050565b600054600160a81b900460ff1681565b6000546001600160a01b03163314610dc8576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b60008054911515600160a81b0260ff60a81b19909216919091179055565b68327cb2734119d3b7a9601e1b81565b600a6020526000908152604090205460ff1681565b60015481565b600b6020526000908152604090205481565b600080610e308484610a1b565b600054909150600160a01b900460ff1615610e5357610e50848285610794565b90505b6001600160a01b03841660009081526008602052604090205460ff1615610f3c57600068327cb2734119d3b7a9601e1b8211610ea457610e9f68327cb2734119d3b7a9601e1b83611480565b610eba565b610eba8268327cb2734119d3b7a9601e1b611480565b90506002548111610edb5768327cb2734119d3b7a9601e1b92505050610d65565b838015610ef3575068327cb2734119d3b7a9601e1b82115b15610f0057509050610d65565b83158015610f19575068327cb2734119d3b7a9601e1b82105b15610f2657509050610d65565b68327cb2734119d3b7a9601e1b92505050610d65565b6001600160a01b0384166000908152600760205260409020548315610f7e57610f7561271061075f610f6e8285611390565b85906113e8565b92505050610d65565b610f9161271061075f610f6e8285611480565b95945050505050565b6003546001600160a01b031681565b6000546001600160a01b03163314610ff6576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b611c2081565b6000546001600160a01b0316331461106b576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b60328111156110ab5760405162461bcd60e51b815260040180806020018281038252602a81526020018061167b602a913960400191505060405180910390fd5b6001600160a01b03909116600090815260076020526040902055565b6005602052600090815260409020546001600160a01b031681565b60076020526000908152604090205481565b60045481565b6000546001600160a01b03163314611147576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b600455565b60086020526000908152604090205460ff1681565b60066020526000908152604090205481565b6000546001600160a01b031633146111c0576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461122f576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b6001600160a01b0383166000908152600b6020526040902054429061125690611c20611390565b106112925760405162461bcd60e51b815260040180806020018281038252602d81526020018061162e602d913960400191505060405180910390fd5b60148111156112e1576040805162461bcd60e51b8152602060048201526016602482015275696e76616c6964205f61646a7573746d656e7442707360501b604482015290519081900360640190fd5b6001600160a01b03929092166000908152600a60209081526040808320805460ff1916941515949094179093556009815282822093909355600b9092529020429055565b6000546001600160a01b03163314611372576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b60008054911515600160a01b0260ff60a01b19909216919091179055565b600082820183811015610839576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b6000826113f757506000610d65565b8282028284828161140457fe5b04146108395760405162461bcd60e51b815260040180806020018281038252602181526020018061160d6021913960400191505060405180910390fd5b600061083983836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b8152506114c2565b600061083983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611564565b6000818361154e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115135781810151838201526020016114fb565b50505050905090810190601f1680156115405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161155a57fe5b0495945050505050565b600081848411156115b65760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156115135781810151838201526020016114fb565b50505090039056fe5661756c745072696365466565643a20696e76616c6964205f707269636553616d706c6553706163655661756c745072696365466565643a20636f756c64206e6f74206665746368207072696365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775661756c745072696365466565643a2061646a7573746d656e74206672657175656e63792065786365656465645661756c745072696365466565643a20666f7262696464656e000000000000005661756c745072696365466565643a20696e76616c6964205f7370726561644261736973506f696e74735661756c745072696365466565643a20696e76616c69642070726963650000005661756c745072696365466565643a20696e76616c69642070726963652066656564a2646970667358221220167d6deb53d89008a19fefb6f46b548f0f4d46fdb7346c67e76dd2e09491b1da64736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101d15760003560e01c80636ce8a44b116101055780639dcb511a1161009d5780639dcb511a146104c1578063a27ea386146104e7578063a39c73a31461050d578063b731dd8714610515578063b8f6110514610532578063cefe0f2114610558578063cfad57a21461057e578063d694376c146105a4578063eb1c92a9146105d8576101d1565b80636ce8a44b146103dd5780636fc8070814610403578063717cfe7a1461040b5780637cdddae6146104315780638b86616c1461045f57806395082d25146103d55780639a0a6635146104675780639b18dc471461048d5780639b88938014610495576101d1565b80633ebbc601116101785780633ebbc601146102d257806348cac277146102ee5780634a4b1f4f146103145780634b9ade471461031c57806356bf9de41461035a57806356c8c2c114610380578063593d9e80146103ae578063604f37e9146103b657806367781c0e146103d5576101d1565b80630957aed9146101d6578063126082cf146101f057806312d43a51146101f85780632fa03b8f1461021c5780632fbfe3d31461023b5780632fc3a70a14610258578063378e7bf7146102965780633eba8d361461029e575b600080fd5b6101de6105f7565b60408051918252519081900360200190f35b6101de6105fc565b610200610602565b604080516001600160a01b039092168252519081900360200190f35b6102396004803603602081101561023257600080fd5b5035610611565b005b6102396004803603602081101561025157600080fd5b50356106a2565b6101de6004803603608081101561026e57600080fd5b506001600160a01b0381351690602081013515159060408101351515906060013515156106f4565b6101de61078e565b6101de600480360360608110156102b457600080fd5b506001600160a01b0381351690602081013590604001351515610794565b6102da610840565b604080519115158252519081900360200190f35b6101de6004803603602081101561030457600080fd5b50356001600160a01b0316610850565b6101de610862565b6102396004803603608081101561033257600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515610867565b6101de6004803603602081101561037057600080fd5b50356001600160a01b0316610909565b6101de6004803603604081101561039657600080fd5b506001600160a01b0381351690602001351515610a1b565b6102da610d6b565b610239600480360360208110156103cc57600080fd5b50351515610d7b565b6101de610de6565b6102da600480360360208110156103f357600080fd5b50356001600160a01b0316610df6565b6101de610e0b565b6101de6004803603602081101561042157600080fd5b50356001600160a01b0316610e11565b6101de6004803603604081101561044757600080fd5b506001600160a01b0381351690602001351515610e23565b610200610f9a565b6102396004803603602081101561047d57600080fd5b50356001600160a01b0316610fa9565b6101de611018565b610239600480360360408110156104ab57600080fd5b506001600160a01b03813516906020013561101e565b610200600480360360208110156104d757600080fd5b50356001600160a01b03166110c7565b6101de600480360360208110156104fd57600080fd5b50356001600160a01b03166110e2565b6101de6110f4565b6102396004803603602081101561052b57600080fd5b50356110fa565b6102da6004803603602081101561054857600080fd5b50356001600160a01b031661114c565b6101de6004803603602081101561056e57600080fd5b50356001600160a01b0316611161565b6102396004803603602081101561059457600080fd5b50356001600160a01b0316611173565b610239600480360360608110156105ba57600080fd5b506001600160a01b03813516906020810135151590604001356111e2565b610239600480360360208110156105ee57600080fd5b50351515611325565b603281565b61271081565b6000546001600160a01b031681565b6000546001600160a01b0316331461065e576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b6000811161069d5760405162461bcd60e51b81526004018080602001828103825260298152602001806115bf6029913960400191505060405180910390fd5b600155565b6000546001600160a01b031633146106ef576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b600255565b6000806107018686610e23565b6001600160a01b0387166000908152600960205260409020549091508015610784576001600160a01b0387166000908152600a602052604090205460ff16801561076c5761076561271061075f6107588286611390565b86906113e8565b90611441565b9250610782565b61077f61271061075f6107588286611480565b92505b505b5095945050505050565b60025481565b6003546000906001600160a01b03166107ae575081610839565b60035460408051630ffd9c6d60e31b81526001600160a01b03878116600483015260248201879052851515604483015291519190921691637fece368916064808301926020929190829003018186803b15801561080a57600080fd5b505afa15801561081e573d6000803e3d6000fd5b505050506040513d602081101561083457600080fd5b505190505b9392505050565b600054600160a01b900460ff1681565b60096020526000908152604090205481565b601481565b6000546001600160a01b031633146108b4576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b6001600160a01b03938416600090815260056020908152604080832080546001600160a01b03191696909716959095179095556006855283812092909255600890935220805460ff1916911515919091179055565b6001600160a01b03808216600090815260056020526040812054909116806109625760405162461bcd60e51b81526004018080602001828103825260228152602001806116c56022913960400191505060405180910390fd5b60008190506000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109a257600080fd5b505afa1580156109b6573d6000803e3d6000fd5b505050506040513d60208110156109cc57600080fd5b5051905060008113610a13576040805162461bcd60e51b815260206004820152601d60248201526000805160206116a5833981519152604482015290519081900360640190fd5b949350505050565b6001600160a01b0380831660009081526005602052604081205490911680610a745760405162461bcd60e51b81526004018080602001828103825260228152602001806116c56022913960400191505060405180910390fd5b6000819050600080826001600160a01b031663668a0f026040518163ffffffff1660e01b815260040160206040518083038186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051905060005b600154816001600160501b03161015610ce657806001600160501b0316826001600160501b031611610b1757610ce6565b60006001600160501b038216610bda576000856001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6257600080fd5b505afa158015610b76573d6000803e3d6000fd5b505050506040513d6020811015610b8c57600080fd5b5051905060008113610bd3576040805162461bcd60e51b815260206004820152601d60248201526000805160206116a5833981519152604482015290519081900360640190fd5b9050610ca2565b6000856001600160a01b0316639a6fc8f58486036040518263ffffffff1660e01b815260040180826001600160501b0316815260200191505060a06040518083038186803b158015610c2b57600080fd5b505afa158015610c3f573d6000803e3d6000fd5b505050506040513d60a0811015610c5557600080fd5b5060200151905060008113610c9f576040805162461bcd60e51b815260206004820152601d60248201526000805160206116a5833981519152604482015290519081900360640190fd5b90505b83610cae579250610cde565b878015610cba57508381115b15610cc6579250610cde565b87158015610cd357508381105b15610cdc578093505b505b600101610ae6565b5060008211610d265760405162461bcd60e51b81526004018080602001828103825260258152602001806115e86025913960400191505060405180910390fd5b6001600160a01b038716600090815260066020526040902054610d5d600a82900a61075f8568327cb2734119d3b7a9601e1b6113e8565b955050505050505b92915050565b600054600160a81b900460ff1681565b6000546001600160a01b03163314610dc8576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b60008054911515600160a81b0260ff60a81b19909216919091179055565b68327cb2734119d3b7a9601e1b81565b600a6020526000908152604090205460ff1681565b60015481565b600b6020526000908152604090205481565b600080610e308484610a1b565b600054909150600160a01b900460ff1615610e5357610e50848285610794565b90505b6001600160a01b03841660009081526008602052604090205460ff1615610f3c57600068327cb2734119d3b7a9601e1b8211610ea457610e9f68327cb2734119d3b7a9601e1b83611480565b610eba565b610eba8268327cb2734119d3b7a9601e1b611480565b90506002548111610edb5768327cb2734119d3b7a9601e1b92505050610d65565b838015610ef3575068327cb2734119d3b7a9601e1b82115b15610f0057509050610d65565b83158015610f19575068327cb2734119d3b7a9601e1b82105b15610f2657509050610d65565b68327cb2734119d3b7a9601e1b92505050610d65565b6001600160a01b0384166000908152600760205260409020548315610f7e57610f7561271061075f610f6e8285611390565b85906113e8565b92505050610d65565b610f9161271061075f610f6e8285611480565b95945050505050565b6003546001600160a01b031681565b6000546001600160a01b03163314610ff6576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b611c2081565b6000546001600160a01b0316331461106b576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b60328111156110ab5760405162461bcd60e51b815260040180806020018281038252602a81526020018061167b602a913960400191505060405180910390fd5b6001600160a01b03909116600090815260076020526040902055565b6005602052600090815260409020546001600160a01b031681565b60076020526000908152604090205481565b60045481565b6000546001600160a01b03163314611147576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b600455565b60086020526000908152604090205460ff1681565b60066020526000908152604090205481565b6000546001600160a01b031633146111c0576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461122f576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b6001600160a01b0383166000908152600b6020526040902054429061125690611c20611390565b106112925760405162461bcd60e51b815260040180806020018281038252602d81526020018061162e602d913960400191505060405180910390fd5b60148111156112e1576040805162461bcd60e51b8152602060048201526016602482015275696e76616c6964205f61646a7573746d656e7442707360501b604482015290519081900360640190fd5b6001600160a01b03929092166000908152600a60209081526040808320805460ff1916941515949094179093556009815282822093909355600b9092529020429055565b6000546001600160a01b03163314611372576040805162461bcd60e51b8152602060048201526019602482015260008051602061165b833981519152604482015290519081900360640190fd5b60008054911515600160a01b0260ff60a01b19909216919091179055565b600082820183811015610839576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b6000826113f757506000610d65565b8282028284828161140457fe5b04146108395760405162461bcd60e51b815260040180806020018281038252602181526020018061160d6021913960400191505060405180910390fd5b600061083983836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b8152506114c2565b600061083983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611564565b6000818361154e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115135781810151838201526020016114fb565b50505050905090810190601f1680156115405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161155a57fe5b0495945050505050565b600081848411156115b65760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156115135781810151838201526020016114fb565b50505090039056fe5661756c745072696365466565643a20696e76616c6964205f707269636553616d706c6553706163655661756c745072696365466565643a20636f756c64206e6f74206665746368207072696365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775661756c745072696365466565643a2061646a7573746d656e74206672657175656e63792065786365656465645661756c745072696365466565643a20666f7262696464656e000000000000005661756c745072696365466565643a20696e76616c6964205f7370726561644261736973506f696e74735661756c745072696365466565643a20696e76616c69642070726963650000005661756c745072696365466565643a20696e76616c69642070726963652066656564a2646970667358221220167d6deb53d89008a19fefb6f46b548f0f4d46fdb7346c67e76dd2e09491b1da64736f6c634300060c0033
Net Worth in USD
Net Worth in ETH
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.