Overview
ETH Balance
ETH Value
$0.00Latest 25 from a total of 513,567 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Set Prices With ... | 21240132 | 1249 days ago | IN | 0 ETH | 0.000057583779 ETH | ||||
| Set Prices With ... | 21240085 | 1249 days ago | IN | 0 ETH | 0.000057437596 ETH | ||||
| Set Prices With ... | 21240009 | 1249 days ago | IN | 0 ETH | 0.000057583779 ETH | ||||
| Set Prices With ... | 21240005 | 1249 days ago | IN | 0 ETH | 0.000057729963 ETH | ||||
| Set Prices With ... | 21240003 | 1249 days ago | IN | 0 ETH | 0.000057729963 ETH | ||||
| Set Prices With ... | 21239988 | 1249 days ago | IN | 0 ETH | 0.000057729963 ETH | ||||
| Set Prices With ... | 21239980 | 1249 days ago | IN | 0 ETH | 0.000057583779 ETH | ||||
| Set Prices With ... | 21239963 | 1249 days ago | IN | 0 ETH | 0.000057583779 ETH | ||||
| Set Prices With ... | 21239946 | 1249 days ago | IN | 0 ETH | 0.000050690607 ETH | ||||
| Set Prices With ... | 21239901 | 1249 days ago | IN | 0 ETH | 0.000057729963 ETH | ||||
| Set Prices With ... | 21239876 | 1249 days ago | IN | 0 ETH | 0.000050690607 ETH | ||||
| Set Prices With ... | 21239758 | 1249 days ago | IN | 0 ETH | 0.000057583779 ETH | ||||
| Set Prices With ... | 21239742 | 1249 days ago | IN | 0 ETH | 0.000057729963 ETH | ||||
| Set Prices With ... | 21239739 | 1249 days ago | IN | 0 ETH | 0.000057583779 ETH | ||||
| Set Prices With ... | 21239708 | 1249 days ago | IN | 0 ETH | 0.00005039824 ETH | ||||
| Set Prices With ... | 21239630 | 1249 days ago | IN | 0 ETH | 0.000057583779 ETH | ||||
| Set Prices With ... | 21239624 | 1249 days ago | IN | 0 ETH | 0.000057583779 ETH | ||||
| Set Prices With ... | 21239525 | 1249 days ago | IN | 0 ETH | 0.000057437596 ETH | ||||
| Set Prices With ... | 21239519 | 1249 days ago | IN | 0 ETH | 0.000050544424 ETH | ||||
| Set Prices With ... | 21239517 | 1249 days ago | IN | 0 ETH | 0.000057437596 ETH | ||||
| Set Prices With ... | 21239457 | 1249 days ago | IN | 0 ETH | 0.000057729963 ETH | ||||
| Set Prices With ... | 21239448 | 1249 days ago | IN | 0 ETH | 0.000050690607 ETH | ||||
| Set Prices With ... | 21239363 | 1249 days ago | IN | 0 ETH | 0.000057729963 ETH | ||||
| Set Prices With ... | 21239357 | 1249 days ago | IN | 0 ETH | 0.000057583779 ETH | ||||
| Set Prices With ... | 21239306 | 1249 days ago | IN | 0 ETH | 0.000057729963 ETH |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 68439717 | 1052 days ago | 0 ETH | ||||
| 68439717 | 1052 days ago | 0 ETH | ||||
| 68439717 | 1052 days ago | 0 ETH | ||||
| 68437711 | 1052 days ago | 0 ETH | ||||
| 68432780 | 1052 days ago | 0 ETH | ||||
| 68432780 | 1052 days ago | 0 ETH | ||||
| 68432780 | 1052 days ago | 0 ETH | ||||
| 68432780 | 1052 days ago | 0 ETH | ||||
| 68397808 | 1053 days ago | 0 ETH | ||||
| 68390500 | 1053 days ago | 0 ETH | ||||
| 68390500 | 1053 days ago | 0 ETH | ||||
| 68390500 | 1053 days ago | 0 ETH | ||||
| 68390500 | 1053 days ago | 0 ETH | ||||
| 68390500 | 1053 days ago | 0 ETH | ||||
| 68386926 | 1053 days ago | 0 ETH | ||||
| 68386926 | 1053 days ago | 0 ETH | ||||
| 68386926 | 1053 days ago | 0 ETH | ||||
| 68386926 | 1053 days ago | 0 ETH | ||||
| 68386926 | 1053 days ago | 0 ETH | ||||
| 68364576 | 1053 days ago | 0 ETH | ||||
| 68364576 | 1053 days ago | 0 ETH | ||||
| 68350923 | 1053 days ago | 0 ETH | ||||
| 68349213 | 1053 days ago | 0 ETH | ||||
| 68349213 | 1053 days ago | 0 ETH | ||||
| 68349213 | 1053 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/ISecondaryPriceFeed.sol";
import "./interfaces/IFastPriceFeed.sol";
import "./interfaces/IFastPriceEvents.sol";
import "../core/interfaces/IPositionRouter.sol";
import "../access/Governable.sol";
pragma solidity 0.6.12;
contract FastPriceFeed is ISecondaryPriceFeed, IFastPriceFeed, Governable {
using SafeMath for uint256;
uint256 public constant PRICE_PRECISION = 10 ** 30;
// uint256(~0) is 256 bits of 1s
// shift the 1s by (256 - 32) to get (256 - 32) 0s followed by 32 1s
uint256 constant public PRICE_BITMASK = uint256(~0) >> (256 - 32);
uint256 public constant BASIS_POINTS_DIVISOR = 10000;
uint256 public constant MAX_PRICE_DURATION = 30 minutes;
bool public isInitialized;
bool public isSpreadEnabled = false;
address public fastPriceEvents;
address public tokenManager;
address public positionRouter;
uint256 public override lastUpdatedAt;
uint256 public override lastUpdatedBlock;
uint256 public priceDuration;
uint256 public minBlockInterval;
uint256 public maxTimeDeviation;
// volatility basis points
uint256 public volBasisPoints;
// max deviation from primary price
uint256 public maxDeviationBasisPoints;
uint256 public minAuthorizations;
uint256 public disableFastPriceVoteCount = 0;
mapping (address => bool) public isUpdater;
mapping (address => uint256) public prices;
mapping (address => bool) public isSigner;
mapping (address => bool) public disableFastPriceVotes;
// array of tokens used in setCompactedPrices, saves L1 calldata gas costs
address[] public tokens;
// array of tokenPrecisions used in setCompactedPrices, saves L1 calldata gas costs
// if the token price will be sent with 3 decimals, then tokenPrecision for that token
// should be 10 ** 3
uint256[] public tokenPrecisions;
event DisableFastPrice(address signer);
event EnableFastPrice(address signer);
modifier onlySigner() {
require(isSigner[msg.sender], "FastPriceFeed: forbidden");
_;
}
modifier onlyUpdater() {
require(isUpdater[msg.sender], "FastPriceFeed: forbidden");
_;
}
modifier onlyTokenManager() {
require(msg.sender == tokenManager, "FastPriceFeed: forbidden");
_;
}
constructor(
uint256 _priceDuration,
uint256 _minBlockInterval,
uint256 _maxDeviationBasisPoints,
address _fastPriceEvents,
address _tokenManager,
address _positionRouter
) public {
require(_priceDuration <= MAX_PRICE_DURATION, "FastPriceFeed: invalid _priceDuration");
priceDuration = _priceDuration;
minBlockInterval = _minBlockInterval;
maxDeviationBasisPoints = _maxDeviationBasisPoints;
fastPriceEvents = _fastPriceEvents;
tokenManager = _tokenManager;
positionRouter = _positionRouter;
}
function initialize(uint256 _minAuthorizations, address[] memory _signers, address[] memory _updaters) public onlyGov {
require(!isInitialized, "FastPriceFeed: already initialized");
isInitialized = true;
minAuthorizations = _minAuthorizations;
for (uint256 i = 0; i < _signers.length; i++) {
address signer = _signers[i];
isSigner[signer] = true;
}
for (uint256 i = 0; i < _updaters.length; i++) {
address updater = _updaters[i];
isUpdater[updater] = true;
}
}
function setTokenManager(address _tokenManager) external onlyGov {
tokenManager = _tokenManager;
}
function setSigner(address _account, bool _isActive) external onlyGov {
isSigner[_account] = _isActive;
}
function setUpdater(address _account, bool _isActive) external onlyGov {
isUpdater[_account] = _isActive;
}
function setFastPriceEvents(address _fastPriceEvents) external onlyGov {
fastPriceEvents = _fastPriceEvents;
}
function setPriceDuration(uint256 _priceDuration) external onlyGov {
require(_priceDuration <= MAX_PRICE_DURATION, "FastPriceFeed: invalid _priceDuration");
priceDuration = _priceDuration;
}
function setMinBlockInterval(uint256 _minBlockInterval) external onlyGov {
minBlockInterval = _minBlockInterval;
}
function setIsSpreadEnabled(bool _isSpreadEnabled) external onlyGov {
isSpreadEnabled = _isSpreadEnabled;
}
function setMaxTimeDeviation(uint256 _maxTimeDeviation) external onlyGov {
maxTimeDeviation = _maxTimeDeviation;
}
function setLastUpdatedAt(uint256 _lastUpdatedAt) external onlyGov {
lastUpdatedAt = _lastUpdatedAt;
}
function setVolBasisPoints(uint256 _volBasisPoints) external onlyGov {
volBasisPoints = _volBasisPoints;
}
function setMaxDeviationBasisPoints(uint256 _maxDeviationBasisPoints) external onlyGov {
maxDeviationBasisPoints = _maxDeviationBasisPoints;
}
function setMinAuthorizations(uint256 _minAuthorizations) external onlyTokenManager {
minAuthorizations = _minAuthorizations;
}
function setTokens(address[] memory _tokens, uint256[] memory _tokenPrecisions) external onlyGov {
require(_tokens.length == _tokenPrecisions.length, "FastPriceFeed: invalid lengths");
tokens = _tokens;
tokenPrecisions = _tokenPrecisions;
}
function setPrices(address[] memory _tokens, uint256[] memory _prices, uint256 _timestamp) external onlyUpdater {
bool shouldUpdate = _setLastUpdatedValues(_timestamp);
if (shouldUpdate) {
address _fastPriceEvents = fastPriceEvents;
for (uint256 i = 0; i < _tokens.length; i++) {
address token = _tokens[i];
prices[token] = _prices[i];
_emitPriceEvent(_fastPriceEvents, token, _prices[i]);
}
}
}
function setCompactedPrices(uint256[] memory _priceBitArray, uint256 _timestamp) external onlyUpdater {
bool shouldUpdate = _setLastUpdatedValues(_timestamp);
if (shouldUpdate) {
address _fastPriceEvents = fastPriceEvents;
for (uint256 i = 0; i < _priceBitArray.length; i++) {
uint256 priceBits = _priceBitArray[i];
for (uint256 j = 0; j < 8; j++) {
uint256 index = i * 8 + j;
if (index >= tokens.length) { return; }
uint256 startBit = 32 * j;
uint256 price = (priceBits >> startBit) & PRICE_BITMASK;
address token = tokens[i * 8 + j];
uint256 tokenPrecision = tokenPrecisions[i * 8 + j];
uint256 adjustedPrice = price.mul(PRICE_PRECISION).div(tokenPrecision);
prices[token] = adjustedPrice;
_emitPriceEvent(_fastPriceEvents, token, adjustedPrice);
}
}
}
}
function setPricesWithBits(uint256 _priceBits, uint256 _timestamp) external onlyUpdater {
_setPricesWithBits(_priceBits, _timestamp);
}
function setPricesWithBitsAndExecute(uint256 _priceBits, uint256 _timestamp, uint256 _endIndexForIncreasePositions, uint256 _endIndexForDecreasePositions) external onlyUpdater {
_setPricesWithBits(_priceBits, _timestamp);
IPositionRouter _positionRouter = IPositionRouter(positionRouter);
_positionRouter.executeIncreasePositions(_endIndexForIncreasePositions, payable(msg.sender));
_positionRouter.executeDecreasePositions(_endIndexForDecreasePositions, payable(msg.sender));
}
function disableFastPrice() external onlySigner {
require(!disableFastPriceVotes[msg.sender], "FastPriceFeed: already voted");
disableFastPriceVotes[msg.sender] = true;
disableFastPriceVoteCount = disableFastPriceVoteCount.add(1);
emit DisableFastPrice(msg.sender);
}
function enableFastPrice() external onlySigner {
require(disableFastPriceVotes[msg.sender], "FastPriceFeed: already enabled");
disableFastPriceVotes[msg.sender] = false;
disableFastPriceVoteCount = disableFastPriceVoteCount.sub(1);
emit EnableFastPrice(msg.sender);
}
function getPrice(address _token, uint256 _refPrice, bool _maximise) external override view returns (uint256) {
if (block.timestamp > lastUpdatedAt.add(priceDuration)) { return _refPrice; }
uint256 fastPrice = prices[_token];
if (fastPrice == 0) { return _refPrice; }
uint256 maxPrice = _refPrice.mul(BASIS_POINTS_DIVISOR.add(maxDeviationBasisPoints)).div(BASIS_POINTS_DIVISOR);
uint256 minPrice = _refPrice.mul(BASIS_POINTS_DIVISOR.sub(maxDeviationBasisPoints)).div(BASIS_POINTS_DIVISOR);
if (favorFastPrice()) {
if (fastPrice >= minPrice && fastPrice <= maxPrice) {
if (_maximise) {
if (_refPrice > fastPrice) {
uint256 volPrice = fastPrice.mul(BASIS_POINTS_DIVISOR.add(volBasisPoints)).div(BASIS_POINTS_DIVISOR);
// the volPrice should not be more than _refPrice
return volPrice > _refPrice ? _refPrice : volPrice;
}
return fastPrice;
}
if (_refPrice < fastPrice) {
uint256 volPrice = fastPrice.mul(BASIS_POINTS_DIVISOR.sub(volBasisPoints)).div(BASIS_POINTS_DIVISOR);
// the volPrice should not be less than _refPrice
return volPrice < _refPrice ? _refPrice : volPrice;
}
return fastPrice;
}
}
if (_maximise) {
if (_refPrice > fastPrice) { return _refPrice; }
return fastPrice > maxPrice ? maxPrice : fastPrice;
}
if (_refPrice < fastPrice) { return _refPrice; }
return fastPrice < minPrice ? minPrice : fastPrice;
}
function favorFastPrice() public view returns (bool) {
if (isSpreadEnabled) {
return false;
}
if (disableFastPriceVoteCount >= minAuthorizations) {
return false;
}
return true;
}
function _setPricesWithBits(uint256 _priceBits, uint256 _timestamp) private {
bool shouldUpdate = _setLastUpdatedValues(_timestamp);
if (shouldUpdate) {
address _fastPriceEvents = fastPriceEvents;
for (uint256 j = 0; j < 8; j++) {
uint256 index = j;
if (index >= tokens.length) { return; }
uint256 startBit = 32 * j;
uint256 price = (_priceBits >> startBit) & PRICE_BITMASK;
address token = tokens[j];
uint256 tokenPrecision = tokenPrecisions[j];
uint256 adjustedPrice = price.mul(PRICE_PRECISION).div(tokenPrecision);
prices[token] = adjustedPrice;
_emitPriceEvent(_fastPriceEvents, token, adjustedPrice);
}
}
}
function _emitPriceEvent(address _fastPriceEvents, address _token, uint256 _price) private {
if (_fastPriceEvents == address(0)) {
return;
}
IFastPriceEvents(_fastPriceEvents).emitPriceEvent(_token, _price);
}
function _setLastUpdatedValues(uint256 _timestamp) private returns (bool) {
if (minBlockInterval > 0) {
require(block.number.sub(lastUpdatedBlock) >= minBlockInterval, "FastPriceFeed: minBlockInterval not yet passed");
}
require(_timestamp > block.timestamp.sub(maxTimeDeviation), "FastPriceFeed: _timestamp below allowed range");
require(_timestamp < block.timestamp.add(maxTimeDeviation), "FastPriceFeed: _timestamp exceeds allowed range");
// do not update prices if _timestamp is before the current lastUpdatedAt value
if (_timestamp < lastUpdatedAt) {
return false;
}
lastUpdatedAt = _timestamp;
lastUpdatedBlock = block.number;
return true;
}
}// 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 ISecondaryPriceFeed {
function getPrice(address _token, uint256 _referencePrice, bool _maximise) external view returns (uint256);
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
interface IFastPriceFeed {
function lastUpdatedAt() external view returns (uint256);
function lastUpdatedBlock() external view returns (uint256);
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
interface IFastPriceEvents {
function emitPriceEvent(address _token, uint256 _price) external;
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
interface IPositionRouter {
function executeIncreasePositions(uint256 _count, address payable _executionFeeReceiver) external;
function executeDecreasePositions(uint256 _count, address payable _executionFeeReceiver) external;
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
contract Governable {
address public gov;
constructor() public {
gov = msg.sender;
}
modifier onlyGov() {
require(msg.sender == gov, "Governable: forbidden");
_;
}
function setGov(address _gov) external onlyGov {
gov = _gov;
}
}{
"optimizer": {
"enabled": true,
"runs": 1
},
"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":"uint256","name":"_priceDuration","type":"uint256"},{"internalType":"uint256","name":"_minBlockInterval","type":"uint256"},{"internalType":"uint256","name":"_maxDeviationBasisPoints","type":"uint256"},{"internalType":"address","name":"_fastPriceEvents","type":"address"},{"internalType":"address","name":"_tokenManager","type":"address"},{"internalType":"address","name":"_positionRouter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"signer","type":"address"}],"name":"DisableFastPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"signer","type":"address"}],"name":"EnableFastPrice","type":"event"},{"inputs":[],"name":"BASIS_POINTS_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PRICE_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_BITMASK","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":[],"name":"disableFastPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableFastPriceVoteCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"disableFastPriceVotes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableFastPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fastPriceEvents","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"favorFastPrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_refPrice","type":"uint256"},{"internalType":"bool","name":"_maximise","type":"bool"}],"name":"getPrice","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":"uint256","name":"_minAuthorizations","type":"uint256"},{"internalType":"address[]","name":"_signers","type":"address[]"},{"internalType":"address[]","name":"_updaters","type":"address[]"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSigner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSpreadEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isUpdater","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdatedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdatedBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDeviationBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTimeDeviation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minAuthorizations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBlockInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"positionRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_priceBitArray","type":"uint256[]"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"setCompactedPrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fastPriceEvents","type":"address"}],"name":"setFastPriceEvents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isSpreadEnabled","type":"bool"}],"name":"setIsSpreadEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastUpdatedAt","type":"uint256"}],"name":"setLastUpdatedAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxDeviationBasisPoints","type":"uint256"}],"name":"setMaxDeviationBasisPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTimeDeviation","type":"uint256"}],"name":"setMaxTimeDeviation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minAuthorizations","type":"uint256"}],"name":"setMinAuthorizations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minBlockInterval","type":"uint256"}],"name":"setMinBlockInterval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_priceDuration","type":"uint256"}],"name":"setPriceDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"setPrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_priceBits","type":"uint256"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"setPricesWithBits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_priceBits","type":"uint256"},{"internalType":"uint256","name":"_timestamp","type":"uint256"},{"internalType":"uint256","name":"_endIndexForIncreasePositions","type":"uint256"},{"internalType":"uint256","name":"_endIndexForDecreasePositions","type":"uint256"}],"name":"setPricesWithBitsAndExecute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenManager","type":"address"}],"name":"setTokenManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_tokenPrecisions","type":"uint256[]"}],"name":"setTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setUpdater","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_volBasisPoints","type":"uint256"}],"name":"setVolBasisPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenPrecisions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60806040526000805460ff60a81b19168155600c5534801561002057600080fd5b5060405161235a38038061235a833981810160405260c081101561004357600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319163317905593949293919290916107088611156100bb5760405162461bcd60e51b81526004018080602001828103825260258152602001806123356025913960400191505060405180910390fd5b600695909555600793909355600a91909155600180546001600160a01b039283166001600160a01b03199182161790915560028054938316938216939093179092556003805491909316911617905561221c806101196000396000f3fe608060405234801561001057600080fd5b50600436106102305760003560e01c806303b049361461023557806303cd25711461026f57806303f4d7dc146102895780630e9272ea1461032e578063114fbeb314610352578063126082cf1461035a57806312d43a51146103625780631389a3cc1461036a57806314dd2dce14610399578063162ac4e0146103b657806317835d1c146103dc5780631a153391146103ff578063287800c91461042d5780632a709b141461043557806331cb61051461043d578063392e53cd1461046b5780633aa08f861461047357806344c231931461047b5780634d11fb4a146104985780634f64b2be146104b55780634fdfb086146104d257806354aea127146104f857806361ef161f14610500578063668d3d6514610508578063695d4184146105105780636ccd47c414610518578063715c753614610520578063776d16c114610528578063782661bc146105455780637cb2b79c1461066a5780637df73e27146106905780637fbc79c6146106b65780637fece368146107e057806382553aad1461081457806395082d25146108315780639e4de0e314610839578063b0a2566614610856578063b3606b561461085e578063c0e4de8e14610866578063c8390a481461086e578063c84a912414610991578063ce98dfa814610999578063cfad57a2146109b8578063cfed246b146109de578063d6a153f114610a04578063d925351a14610a21578063f67e3bf014610a3e578063f90ce5ba14610a46575b600080fd5b61025b6004803603602081101561024b57600080fd5b50356001600160a01b0316610a4e565b604080519115158252519081900360200190f35b610277610a63565b60408051918252519081900360200190f35b61032c6004803603604081101561029f57600080fd5b810190602081018135600160201b8111156102b957600080fd5b8201836020820111156102cb57600080fd5b803590602001918460208302840111600160201b831117156102ec57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610a69915050565b005b610336610bf1565b604080516001600160a01b039092168252519081900360200190f35b610277610c00565b610277610c06565b610336610c0c565b61032c6004803603608081101561038057600080fd5b5080359060208101359060408101359060600135610c1b565b61032c600480360360208110156103af57600080fd5b5035610d4f565b61032c600480360360208110156103cc57600080fd5b50356001600160a01b0316610da1565b61032c600480360360408110156103f257600080fd5b5080359060200135610e10565b61032c6004803603604081101561041557600080fd5b506001600160a01b0381351690602001351515610e6c565b610277610ee4565b610336610eea565b61032c6004803603604081101561045357600080fd5b506001600160a01b0381351690602001351515610ef9565b61025b610f71565b610277610f81565b61032c6004803603602081101561049157600080fd5b5035610f87565b610277600480360360208110156104ae57600080fd5b503561101a565b610336600480360360208110156104cb57600080fd5b5035611038565b61025b600480360360208110156104e857600080fd5b50356001600160a01b031661105f565b610277611074565b61033661107a565b610277611089565b61025b61108f565b61032c61109f565b6102776111b2565b61032c6004803603602081101561053e57600080fd5b50356111b8565b61032c6004803603606081101561055b57600080fd5b810190602081018135600160201b81111561057557600080fd5b82018360208201111561058757600080fd5b803590602001918460208302840111600160201b831117156105a857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105f757600080fd5b82018360208201111561060957600080fd5b803590602001918460208302840111600160201b8311171561062a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550509135925061120a915050565b61032c6004803603602081101561068057600080fd5b50356001600160a01b031661130c565b61025b600480360360208110156106a657600080fd5b50356001600160a01b031661137b565b61032c600480360360608110156106cc57600080fd5b81359190810190604081016020820135600160201b8111156106ed57600080fd5b8201836020820111156106ff57600080fd5b803590602001918460208302840111600160201b8311171561072057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561076f57600080fd5b82018360208201111561078157600080fd5b803590602001918460208302840111600160201b831117156107a257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611390945050505050565b610277600480360360608110156107f657600080fd5b506001600160a01b03813516906020810135906040013515156114e9565b61032c6004803603602081101561082a57600080fd5b50356116a7565b6102776116f9565b61032c6004803603602081101561084f57600080fd5b5035611709565b61027761175b565b610277611761565b61025b611767565b61032c6004803603604081101561088457600080fd5b810190602081018135600160201b81111561089e57600080fd5b8201836020820111156108b057600080fd5b803590602001918460208302840111600160201b831117156108d157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561092057600080fd5b82018360208201111561093257600080fd5b803590602001918460208302840111600160201b8311171561095357600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061179c945050505050565b61032c611866565b61032c600480360360208110156109af57600080fd5b5035151561197d565b61032c600480360360208110156109ce57600080fd5b50356001600160a01b03166119e8565b610277600480360360208110156109f457600080fd5b50356001600160a01b0316611a57565b61032c60048036036020811015610a1a57600080fd5b5035611a69565b61032c60048036036020811015610a3757600080fd5b5035611abb565b610277611b0d565b610277611b15565b60106020526000908152604090205460ff1681565b60065481565b336000908152600d602052604090205460ff16610abb576040805162461bcd60e51b815260206004820152601860248201526000805160206120fa833981519152604482015290519081900360640190fd5b6000610ac682611b1b565b90508015610beb576001546001600160a01b031660005b8451811015610be8576000858281518110610af457fe5b6020026020010151905060005b6008811015610bde57601154600884028201908110610b2557505050505050610bed565b60118054602084029185831c63ffffffff169160009190600889028701908110610b4b57fe5b6000918252602082200154601280546001600160a01b0390921693509060088a028801908110610b7757fe5b60009182526020822001549150610ba482610b9e8668327cb2734119d3b7a9601e1b611c2e565b90611c90565b6001600160a01b0384166000908152600e602052604090208190559050610bcc8a8483611ccf565b505060019094019350610b0192505050565b5050600101610add565b50505b505b5050565b6001546001600160a01b031681565b60095481565b61271081565b6000546001600160a01b031681565b336000908152600d602052604090205460ff16610c6d576040805162461bcd60e51b815260206004820152601860248201526000805160206120fa833981519152604482015290519081900360640190fd5b610c778484611d56565b60035460408051629a208160e81b81526004810185905233602482015290516001600160a01b03909216918291639a20810091604480830192600092919082900301818387803b158015610cca57600080fd5b505af1158015610cde573d6000803e3d6000fd5b50506040805163f3883d8b60e01b81526004810186905233602482015290516001600160a01b038516935063f3883d8b9250604480830192600092919082900301818387803b158015610d3057600080fd5b505af1158015610d44573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b03163314610d9c576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600455565b6000546001600160a01b03163314610dee576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600d602052604090205460ff16610e62576040805162461bcd60e51b815260206004820152601860248201526000805160206120fa833981519152604482015290519081900360640190fd5b610bed8282611d56565b6000546001600160a01b03163314610eb9576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b600b5481565b6002546001600160a01b031681565b6000546001600160a01b03163314610f46576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b600054600160a01b900460ff1681565b60085481565b6000546001600160a01b03163314610fd4576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b6107088111156110155760405162461bcd60e51b81526004018080602001828103825260258152602001806120b56025913960400191505060405180910390fd5b600655565b6012818154811061102757fe5b600091825260209091200154905081565b6011818154811061104557fe5b6000918252602090912001546001600160a01b0316905081565b600d6020526000908152604090205460ff1681565b60045481565b6003546001600160a01b031681565b61070881565b600054600160a81b900460ff1681565b336000908152600f602052604090205460ff166110f1576040805162461bcd60e51b815260206004820152601860248201526000805160206120fa833981519152604482015290519081900360640190fd5b3360009081526010602052604090205460ff16611155576040805162461bcd60e51b815260206004820152601e60248201527f466173745072696365466565643a20616c726561647920656e61626c65640000604482015290519081900360640190fd5b336000908152601060205260409020805460ff19169055600c5461117a906001611e3e565b600c556040805133815290517f9fe0c305c33aa92757a537936872a60be0d91549a4303cc99fd8b7fce8a002759181900360200190a1565b600a5481565b6000546001600160a01b03163314611205576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600855565b336000908152600d602052604090205460ff1661125c576040805162461bcd60e51b815260206004820152601860248201526000805160206120fa833981519152604482015290519081900360640190fd5b600061126782611b1b565b90508015611306576001546001600160a01b031660005b855181101561130357600086828151811061129557fe5b602002602001015190508582815181106112ab57fe5b6020026020010151600e6000836001600160a01b03166001600160a01b03168152602001908152602001600020819055506112fa83828885815181106112ed57fe5b6020026020010151611ccf565b5060010161127e565b50505b50505050565b6000546001600160a01b03163314611359576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600f6020526000908152604090205460ff1681565b6000546001600160a01b031633146113dd576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600054600160a01b900460ff16156114265760405162461bcd60e51b81526004018080602001828103825260228152602001806121c56022913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b178155600b8490555b825181101561149257600083828151811061145657fe5b6020908102919091018101516001600160a01b03166000908152600f90915260409020805460ff1916600190811790915591909101905061143f565b5060005b81518110156113065760008282815181106114ad57fe5b6020908102919091018101516001600160a01b03166000908152600d90915260409020805460ff19166001908117909155919091019050611496565b6000611502600654600454611e8090919063ffffffff16565b4211156115105750816116a0565b6001600160a01b0384166000908152600e60205260409020548061153757839150506116a0565b6000611560612710610b9e611559600a54612710611e8090919063ffffffff16565b8890611c2e565b9050600061158b612710610b9e611584600a54612710611e3e90919063ffffffff16565b8990611c2e565b9050611595611767565b15611646578083101580156115aa5750818311155b1561164657841561160d57828611156116025760006115e6612710610b9e6115df600954612710611e8090919063ffffffff16565b8790611c2e565b90508681116115f557806115f7565b865b9450505050506116a0565b8293505050506116a0565b82861015611602576000611637612710610b9e6115df600954612710611e3e90919063ffffffff16565b90508681106115f557806115f7565b8415611678578286111561165f578593505050506116a0565b81831161166c578261166e565b815b93505050506116a0565b8286101561168b578593505050506116a0565b808310611698578261169a565b805b93505050505b9392505050565b6000546001600160a01b031633146116f4576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600a55565b68327cb2734119d3b7a9601e1b81565b6000546001600160a01b03163314611756576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600955565b600c5481565b60075481565b60008054600160a81b900460ff161561178257506000611799565b600b54600c541061179557506000611799565b5060015b90565b6000546001600160a01b031633146117e9576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b805182511461183f576040805162461bcd60e51b815260206004820152601e60248201527f466173745072696365466565643a20696e76616c6964206c656e677468730000604482015290519081900360640190fd5b8151611852906011906020850190611fd4565b508051610beb906012906020840190612039565b336000908152600f602052604090205460ff166118b8576040805162461bcd60e51b815260206004820152601860248201526000805160206120fa833981519152604482015290519081900360640190fd5b3360009081526010602052604090205460ff161561191c576040805162461bcd60e51b815260206004820152601c60248201527b11985cdd141c9a58d9519959590e88185b1c9958591e481d9bdd195960221b604482015290519081900360640190fd5b336000908152601060205260409020805460ff19166001908117909155600c5461194591611e80565b600c556040805133815290517f4c0c5fabf50e808e3bc8d19577d305e3a7163eea7e8a74a50caa8896694cd44b9181900360200190a1565b6000546001600160a01b031633146119ca576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b60008054911515600160a81b0260ff60a81b19909216919091179055565b6000546001600160a01b03163314611a35576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600e6020526000908152604090205481565b6000546001600160a01b03163314611ab6576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600755565b6002546001600160a01b03163314611b08576040805162461bcd60e51b815260206004820152601860248201526000805160206120fa833981519152604482015290519081900360640190fd5b600b55565b63ffffffff81565b60055481565b60075460009015611b7457600754600554611b37904390611e3e565b1015611b745760405162461bcd60e51b815260040180806020018281038252602e815260200180612197602e913960400191505060405180910390fd5b600854611b82904290611e3e565b8211611bbf5760405162461bcd60e51b815260040180806020018281038252602d81526020018061216a602d913960400191505060405180910390fd5b600854611bcd904290611e80565b8210611c0a5760405162461bcd60e51b815260040180806020018281038252602f81526020018061211a602f913960400191505060405180910390fd5b600454821015611c1c57506000611c29565b5060048190554360055560015b919050565b600082611c3d57506000611c8a565b82820282848281611c4a57fe5b0414611c875760405162461bcd60e51b81526004018080602001828103825260218152602001806121496021913960400191505060405180910390fd5b90505b92915050565b6000611c8783836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250611ed8565b6001600160a01b038316611ce257610beb565b826001600160a01b031663e0409c7183836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611d3957600080fd5b505af1158015611d4d573d6000803e3d6000fd5b50505050505050565b6000611d6182611b1b565b90508015610beb576001546001600160a01b031660005b6008811015610be85760115481908110611d955750505050610bed565b60118054602084029188831c63ffffffff16916000919086908110611db657fe5b6000918252602082200154601280546001600160a01b0390921693509087908110611ddd57fe5b60009182526020822001549150611e0482610b9e8668327cb2734119d3b7a9601e1b611c2e565b6001600160a01b0384166000908152600e602052604090208190559050611e2c888483611ccf565b505060019094019350611d7892505050565b6000611c8783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f7a565b600082820183811015611c87576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b60008183611f645760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f29578181015183820152602001611f11565b50505050905090810190601f168015611f565780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611f7057fe5b0495945050505050565b60008184841115611fcc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611f29578181015183820152602001611f11565b505050900390565b828054828255906000526020600020908101928215612029579160200282015b8281111561202957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611ff4565b50612035929150612080565b5090565b828054828255906000526020600020908101928215612074579160200282015b82811115612074578251825591602001919060010190612059565b5061203592915061209f565b5b808211156120355780546001600160a01b0319168155600101612081565b5b8082111561203557600081556001016120a056fe466173745072696365466565643a20696e76616c6964205f70726963654475726174696f6e476f7665726e61626c653a20666f7262696464656e0000000000000000000000466173745072696365466565643a20666f7262696464656e0000000000000000466173745072696365466565643a205f74696d657374616d70206578636565647320616c6c6f7765642072616e6765536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77466173745072696365466565643a205f74696d657374616d702062656c6f7720616c6c6f7765642072616e6765466173745072696365466565643a206d696e426c6f636b496e74657276616c206e6f742079657420706173736564466173745072696365466565643a20616c726561647920696e697469616c697a6564a2646970667358221220d8de10e4e5e8633d06e2468d8ecd2688b7a4c4b4bba4ac3e145ba7c1b3585ad264736f6c634300060c0033466173745072696365466565643a20696e76616c6964205f70726963654475726174696f6e000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000fa0000000000000000000000001b27de2815b7903b64961e8c6a992e013dd983e60000000000000000000000001ef8156b46e6f5a1973bff4975177fd13275ad590000000000000000000000003d6ba331e3d9702c5e8a8d254e5d8a285f223aba
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102305760003560e01c806303b049361461023557806303cd25711461026f57806303f4d7dc146102895780630e9272ea1461032e578063114fbeb314610352578063126082cf1461035a57806312d43a51146103625780631389a3cc1461036a57806314dd2dce14610399578063162ac4e0146103b657806317835d1c146103dc5780631a153391146103ff578063287800c91461042d5780632a709b141461043557806331cb61051461043d578063392e53cd1461046b5780633aa08f861461047357806344c231931461047b5780634d11fb4a146104985780634f64b2be146104b55780634fdfb086146104d257806354aea127146104f857806361ef161f14610500578063668d3d6514610508578063695d4184146105105780636ccd47c414610518578063715c753614610520578063776d16c114610528578063782661bc146105455780637cb2b79c1461066a5780637df73e27146106905780637fbc79c6146106b65780637fece368146107e057806382553aad1461081457806395082d25146108315780639e4de0e314610839578063b0a2566614610856578063b3606b561461085e578063c0e4de8e14610866578063c8390a481461086e578063c84a912414610991578063ce98dfa814610999578063cfad57a2146109b8578063cfed246b146109de578063d6a153f114610a04578063d925351a14610a21578063f67e3bf014610a3e578063f90ce5ba14610a46575b600080fd5b61025b6004803603602081101561024b57600080fd5b50356001600160a01b0316610a4e565b604080519115158252519081900360200190f35b610277610a63565b60408051918252519081900360200190f35b61032c6004803603604081101561029f57600080fd5b810190602081018135600160201b8111156102b957600080fd5b8201836020820111156102cb57600080fd5b803590602001918460208302840111600160201b831117156102ec57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610a69915050565b005b610336610bf1565b604080516001600160a01b039092168252519081900360200190f35b610277610c00565b610277610c06565b610336610c0c565b61032c6004803603608081101561038057600080fd5b5080359060208101359060408101359060600135610c1b565b61032c600480360360208110156103af57600080fd5b5035610d4f565b61032c600480360360208110156103cc57600080fd5b50356001600160a01b0316610da1565b61032c600480360360408110156103f257600080fd5b5080359060200135610e10565b61032c6004803603604081101561041557600080fd5b506001600160a01b0381351690602001351515610e6c565b610277610ee4565b610336610eea565b61032c6004803603604081101561045357600080fd5b506001600160a01b0381351690602001351515610ef9565b61025b610f71565b610277610f81565b61032c6004803603602081101561049157600080fd5b5035610f87565b610277600480360360208110156104ae57600080fd5b503561101a565b610336600480360360208110156104cb57600080fd5b5035611038565b61025b600480360360208110156104e857600080fd5b50356001600160a01b031661105f565b610277611074565b61033661107a565b610277611089565b61025b61108f565b61032c61109f565b6102776111b2565b61032c6004803603602081101561053e57600080fd5b50356111b8565b61032c6004803603606081101561055b57600080fd5b810190602081018135600160201b81111561057557600080fd5b82018360208201111561058757600080fd5b803590602001918460208302840111600160201b831117156105a857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105f757600080fd5b82018360208201111561060957600080fd5b803590602001918460208302840111600160201b8311171561062a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550509135925061120a915050565b61032c6004803603602081101561068057600080fd5b50356001600160a01b031661130c565b61025b600480360360208110156106a657600080fd5b50356001600160a01b031661137b565b61032c600480360360608110156106cc57600080fd5b81359190810190604081016020820135600160201b8111156106ed57600080fd5b8201836020820111156106ff57600080fd5b803590602001918460208302840111600160201b8311171561072057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561076f57600080fd5b82018360208201111561078157600080fd5b803590602001918460208302840111600160201b831117156107a257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611390945050505050565b610277600480360360608110156107f657600080fd5b506001600160a01b03813516906020810135906040013515156114e9565b61032c6004803603602081101561082a57600080fd5b50356116a7565b6102776116f9565b61032c6004803603602081101561084f57600080fd5b5035611709565b61027761175b565b610277611761565b61025b611767565b61032c6004803603604081101561088457600080fd5b810190602081018135600160201b81111561089e57600080fd5b8201836020820111156108b057600080fd5b803590602001918460208302840111600160201b831117156108d157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561092057600080fd5b82018360208201111561093257600080fd5b803590602001918460208302840111600160201b8311171561095357600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061179c945050505050565b61032c611866565b61032c600480360360208110156109af57600080fd5b5035151561197d565b61032c600480360360208110156109ce57600080fd5b50356001600160a01b03166119e8565b610277600480360360208110156109f457600080fd5b50356001600160a01b0316611a57565b61032c60048036036020811015610a1a57600080fd5b5035611a69565b61032c60048036036020811015610a3757600080fd5b5035611abb565b610277611b0d565b610277611b15565b60106020526000908152604090205460ff1681565b60065481565b336000908152600d602052604090205460ff16610abb576040805162461bcd60e51b815260206004820152601860248201526000805160206120fa833981519152604482015290519081900360640190fd5b6000610ac682611b1b565b90508015610beb576001546001600160a01b031660005b8451811015610be8576000858281518110610af457fe5b6020026020010151905060005b6008811015610bde57601154600884028201908110610b2557505050505050610bed565b60118054602084029185831c63ffffffff169160009190600889028701908110610b4b57fe5b6000918252602082200154601280546001600160a01b0390921693509060088a028801908110610b7757fe5b60009182526020822001549150610ba482610b9e8668327cb2734119d3b7a9601e1b611c2e565b90611c90565b6001600160a01b0384166000908152600e602052604090208190559050610bcc8a8483611ccf565b505060019094019350610b0192505050565b5050600101610add565b50505b505b5050565b6001546001600160a01b031681565b60095481565b61271081565b6000546001600160a01b031681565b336000908152600d602052604090205460ff16610c6d576040805162461bcd60e51b815260206004820152601860248201526000805160206120fa833981519152604482015290519081900360640190fd5b610c778484611d56565b60035460408051629a208160e81b81526004810185905233602482015290516001600160a01b03909216918291639a20810091604480830192600092919082900301818387803b158015610cca57600080fd5b505af1158015610cde573d6000803e3d6000fd5b50506040805163f3883d8b60e01b81526004810186905233602482015290516001600160a01b038516935063f3883d8b9250604480830192600092919082900301818387803b158015610d3057600080fd5b505af1158015610d44573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b03163314610d9c576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600455565b6000546001600160a01b03163314610dee576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600d602052604090205460ff16610e62576040805162461bcd60e51b815260206004820152601860248201526000805160206120fa833981519152604482015290519081900360640190fd5b610bed8282611d56565b6000546001600160a01b03163314610eb9576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b600b5481565b6002546001600160a01b031681565b6000546001600160a01b03163314610f46576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b600054600160a01b900460ff1681565b60085481565b6000546001600160a01b03163314610fd4576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b6107088111156110155760405162461bcd60e51b81526004018080602001828103825260258152602001806120b56025913960400191505060405180910390fd5b600655565b6012818154811061102757fe5b600091825260209091200154905081565b6011818154811061104557fe5b6000918252602090912001546001600160a01b0316905081565b600d6020526000908152604090205460ff1681565b60045481565b6003546001600160a01b031681565b61070881565b600054600160a81b900460ff1681565b336000908152600f602052604090205460ff166110f1576040805162461bcd60e51b815260206004820152601860248201526000805160206120fa833981519152604482015290519081900360640190fd5b3360009081526010602052604090205460ff16611155576040805162461bcd60e51b815260206004820152601e60248201527f466173745072696365466565643a20616c726561647920656e61626c65640000604482015290519081900360640190fd5b336000908152601060205260409020805460ff19169055600c5461117a906001611e3e565b600c556040805133815290517f9fe0c305c33aa92757a537936872a60be0d91549a4303cc99fd8b7fce8a002759181900360200190a1565b600a5481565b6000546001600160a01b03163314611205576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600855565b336000908152600d602052604090205460ff1661125c576040805162461bcd60e51b815260206004820152601860248201526000805160206120fa833981519152604482015290519081900360640190fd5b600061126782611b1b565b90508015611306576001546001600160a01b031660005b855181101561130357600086828151811061129557fe5b602002602001015190508582815181106112ab57fe5b6020026020010151600e6000836001600160a01b03166001600160a01b03168152602001908152602001600020819055506112fa83828885815181106112ed57fe5b6020026020010151611ccf565b5060010161127e565b50505b50505050565b6000546001600160a01b03163314611359576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600f6020526000908152604090205460ff1681565b6000546001600160a01b031633146113dd576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600054600160a01b900460ff16156114265760405162461bcd60e51b81526004018080602001828103825260228152602001806121c56022913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b178155600b8490555b825181101561149257600083828151811061145657fe5b6020908102919091018101516001600160a01b03166000908152600f90915260409020805460ff1916600190811790915591909101905061143f565b5060005b81518110156113065760008282815181106114ad57fe5b6020908102919091018101516001600160a01b03166000908152600d90915260409020805460ff19166001908117909155919091019050611496565b6000611502600654600454611e8090919063ffffffff16565b4211156115105750816116a0565b6001600160a01b0384166000908152600e60205260409020548061153757839150506116a0565b6000611560612710610b9e611559600a54612710611e8090919063ffffffff16565b8890611c2e565b9050600061158b612710610b9e611584600a54612710611e3e90919063ffffffff16565b8990611c2e565b9050611595611767565b15611646578083101580156115aa5750818311155b1561164657841561160d57828611156116025760006115e6612710610b9e6115df600954612710611e8090919063ffffffff16565b8790611c2e565b90508681116115f557806115f7565b865b9450505050506116a0565b8293505050506116a0565b82861015611602576000611637612710610b9e6115df600954612710611e3e90919063ffffffff16565b90508681106115f557806115f7565b8415611678578286111561165f578593505050506116a0565b81831161166c578261166e565b815b93505050506116a0565b8286101561168b578593505050506116a0565b808310611698578261169a565b805b93505050505b9392505050565b6000546001600160a01b031633146116f4576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600a55565b68327cb2734119d3b7a9601e1b81565b6000546001600160a01b03163314611756576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600955565b600c5481565b60075481565b60008054600160a81b900460ff161561178257506000611799565b600b54600c541061179557506000611799565b5060015b90565b6000546001600160a01b031633146117e9576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b805182511461183f576040805162461bcd60e51b815260206004820152601e60248201527f466173745072696365466565643a20696e76616c6964206c656e677468730000604482015290519081900360640190fd5b8151611852906011906020850190611fd4565b508051610beb906012906020840190612039565b336000908152600f602052604090205460ff166118b8576040805162461bcd60e51b815260206004820152601860248201526000805160206120fa833981519152604482015290519081900360640190fd5b3360009081526010602052604090205460ff161561191c576040805162461bcd60e51b815260206004820152601c60248201527b11985cdd141c9a58d9519959590e88185b1c9958591e481d9bdd195960221b604482015290519081900360640190fd5b336000908152601060205260409020805460ff19166001908117909155600c5461194591611e80565b600c556040805133815290517f4c0c5fabf50e808e3bc8d19577d305e3a7163eea7e8a74a50caa8896694cd44b9181900360200190a1565b6000546001600160a01b031633146119ca576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b60008054911515600160a81b0260ff60a81b19909216919091179055565b6000546001600160a01b03163314611a35576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600e6020526000908152604090205481565b6000546001600160a01b03163314611ab6576040805162461bcd60e51b815260206004820152601560248201526000805160206120da833981519152604482015290519081900360640190fd5b600755565b6002546001600160a01b03163314611b08576040805162461bcd60e51b815260206004820152601860248201526000805160206120fa833981519152604482015290519081900360640190fd5b600b55565b63ffffffff81565b60055481565b60075460009015611b7457600754600554611b37904390611e3e565b1015611b745760405162461bcd60e51b815260040180806020018281038252602e815260200180612197602e913960400191505060405180910390fd5b600854611b82904290611e3e565b8211611bbf5760405162461bcd60e51b815260040180806020018281038252602d81526020018061216a602d913960400191505060405180910390fd5b600854611bcd904290611e80565b8210611c0a5760405162461bcd60e51b815260040180806020018281038252602f81526020018061211a602f913960400191505060405180910390fd5b600454821015611c1c57506000611c29565b5060048190554360055560015b919050565b600082611c3d57506000611c8a565b82820282848281611c4a57fe5b0414611c875760405162461bcd60e51b81526004018080602001828103825260218152602001806121496021913960400191505060405180910390fd5b90505b92915050565b6000611c8783836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250611ed8565b6001600160a01b038316611ce257610beb565b826001600160a01b031663e0409c7183836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611d3957600080fd5b505af1158015611d4d573d6000803e3d6000fd5b50505050505050565b6000611d6182611b1b565b90508015610beb576001546001600160a01b031660005b6008811015610be85760115481908110611d955750505050610bed565b60118054602084029188831c63ffffffff16916000919086908110611db657fe5b6000918252602082200154601280546001600160a01b0390921693509087908110611ddd57fe5b60009182526020822001549150611e0482610b9e8668327cb2734119d3b7a9601e1b611c2e565b6001600160a01b0384166000908152600e602052604090208190559050611e2c888483611ccf565b505060019094019350611d7892505050565b6000611c8783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f7a565b600082820183811015611c87576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b60008183611f645760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f29578181015183820152602001611f11565b50505050905090810190601f168015611f565780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611f7057fe5b0495945050505050565b60008184841115611fcc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611f29578181015183820152602001611f11565b505050900390565b828054828255906000526020600020908101928215612029579160200282015b8281111561202957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611ff4565b50612035929150612080565b5090565b828054828255906000526020600020908101928215612074579160200282015b82811115612074578251825591602001919060010190612059565b5061203592915061209f565b5b808211156120355780546001600160a01b0319168155600101612081565b5b8082111561203557600081556001016120a056fe466173745072696365466565643a20696e76616c6964205f70726963654475726174696f6e476f7665726e61626c653a20666f7262696464656e0000000000000000000000466173745072696365466565643a20666f7262696464656e0000000000000000466173745072696365466565643a205f74696d657374616d70206578636565647320616c6c6f7765642072616e6765536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77466173745072696365466565643a205f74696d657374616d702062656c6f7720616c6c6f7765642072616e6765466173745072696365466565643a206d696e426c6f636b496e74657276616c206e6f742079657420706173736564466173745072696365466565643a20616c726561647920696e697469616c697a6564a2646970667358221220d8de10e4e5e8633d06e2468d8ecd2688b7a4c4b4bba4ac3e145ba7c1b3585ad264736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000fa0000000000000000000000001b27de2815b7903b64961e8c6a992e013dd983e60000000000000000000000001ef8156b46e6f5a1973bff4975177fd13275ad590000000000000000000000003d6ba331e3d9702c5e8a8d254e5d8a285f223aba
-----Decoded View---------------
Arg [0] : _priceDuration (uint256): 300
Arg [1] : _minBlockInterval (uint256): 1
Arg [2] : _maxDeviationBasisPoints (uint256): 250
Arg [3] : _fastPriceEvents (address): 0x1b27De2815b7903b64961e8c6A992e013dD983E6
Arg [4] : _tokenManager (address): 0x1EF8156b46e6f5A1973BfF4975177fd13275Ad59
Arg [5] : _positionRouter (address): 0x3D6bA331e3D9702C5e8A8d254e5d8a285F223aba
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000000000012c
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000fa
Arg [3] : 0000000000000000000000001b27de2815b7903b64961e8c6a992e013dd983e6
Arg [4] : 0000000000000000000000001ef8156b46e6f5a1973bff4975177fd13275ad59
Arg [5] : 0000000000000000000000003d6ba331e3d9702c5e8a8d254e5d8a285f223aba
Net Worth in USD
Net Worth in ETH
Multichain Portfolio | 35 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.