Contract Overview
Balance:
0 ETH
ETH Value:
$0.00
My Name Tag:
Not Available
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0xb90970810a3e457c89a3381296b3ea61c7ca2338639d6c942e1eccb8737763c5 | Set Gov | 1330772 | 247 days 18 hrs ago | GMX: Deployer | IN | 0x1cf4579904eb2acda0e4081e39ec10d0c32b5de3 | 0 ETH | 0.000401792093 ETH | |
0x8e04ec498784dd604241aaa393ef8f4a83e7d69a1475d88c79b566e662146321 | Set Token Config | 1326315 | 247 days 20 hrs ago | GMX: Deployer | IN | 0x1cf4579904eb2acda0e4081e39ec10d0c32b5de3 | 0 ETH | 0.000783209726 ETH | |
0xf947e9211c9008ddeb9cc48d952feacdc33b79c9fa70e6258d7bb5179fc30937 | Set Token Config | 1326313 | 247 days 20 hrs ago | GMX: Deployer | IN | 0x1cf4579904eb2acda0e4081e39ec10d0c32b5de3 | 0 ETH | 0.000667399399 ETH | |
0xd845311862703e14b9559421d1aee3eb796047456d7e86836fe72b544605ae12 | Set Token Config | 1326309 | 247 days 20 hrs ago | GMX: Deployer | IN | 0x1cf4579904eb2acda0e4081e39ec10d0c32b5de3 | 0 ETH | 0.000668193312 ETH | |
0x3b78a7e9609410d352eeb5f16b72c338fe2b0df90ba3889bcab382935c8c4d60 | Set Token Config | 1326304 | 247 days 20 hrs ago | GMX: Deployer | IN | 0x1cf4579904eb2acda0e4081e39ec10d0c32b5de3 | 0 ETH | 0.000783216009 ETH | |
0x870c3e992d25031c3968945c7206292009cc4039f0b567c929235d329a6e8625 | Set Token Config | 1326301 | 247 days 20 hrs ago | GMX: Deployer | IN | 0x1cf4579904eb2acda0e4081e39ec10d0c32b5de3 | 0 ETH | 0.000665810429 ETH | |
0xe4603a5935725dc58195e21e41aca958092ca909774644eb9d27062046eda897 | Set Token Config | 1326295 | 247 days 20 hrs ago | GMX: Deployer | IN | 0x1cf4579904eb2acda0e4081e39ec10d0c32b5de3 | 0 ETH | 0.000667409108 ETH | |
0x80fbeb94cf594f68f09c3decec32cf2412c63ed0aa500a271a65392f5271b7d3 | Set Chainlink Fl... | 1326290 | 247 days 20 hrs ago | GMX: Deployer | IN | 0x1cf4579904eb2acda0e4081e39ec10d0c32b5de3 | 0 ETH | 0.000397810242 ETH | |
0xd653208266c93b4b9db18beab7af68d665361d4ad0ff3592540db6518c562e91 | Set Is Amm Enabl... | 1326287 | 247 days 20 hrs ago | GMX: Deployer | IN | 0x1cf4579904eb2acda0e4081e39ec10d0c32b5de3 | 0 ETH | 0.000380470364 ETH | |
0x3946bf9a087be4748a9719bef4b20391dd26f5f4c9950514877dbe446881dc44 | Set Secondary Pr... | 1326285 | 247 days 20 hrs ago | GMX: Deployer | IN | 0x1cf4579904eb2acda0e4081e39ec10d0c32b5de3 | 0 ETH | 0.000511255963 ETH | |
0xdeb9c69f0c6aa2ee98f63716a6cb67abb95f32e38ef520afea915307bfcae263 | Set Price Sample... | 1326284 | 247 days 20 hrs ago | GMX: Deployer | IN | 0x1cf4579904eb2acda0e4081e39ec10d0c32b5de3 | 0 ETH | 0.000381259708 ETH | |
0xc5779504a8cb827609b5416155941560e0cdb0878d285538281e854d3051eeae | Set Max Strict P... | 1326279 | 247 days 20 hrs ago | GMX: Deployer | IN | 0x1cf4579904eb2acda0e4081e39ec10d0c32b5de3 | 0 ETH | 0.000502578313 ETH | |
0x186ae8418dc9913a9b8627d55829ab7536cfff3de02135ee9e57794ff923df05 | 0x60806040 | 1326277 | 247 days 20 hrs ago | GMX: Deployer | IN | Create: VaultPriceFeed | 0 ETH | 0.009333580277 ETH |
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
VaultPriceFeed
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 1 runs
Other Settings:
default evmVersion
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"; import "../oracle/interfaces/IChainlinkFlags.sol"; import "../amm/interfaces/IPancakePair.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; // Identifier of the Sequencer offline flag on the Flags contract address constant private FLAG_ARBITRUM_SEQ_OFFLINE = address(bytes20(bytes32(uint256(keccak256("chainlink.flags.arbitrum-seq-offline")) - 1))); address public gov; address public chainlinkFlags; bool public isAmmEnabled = true; bool public isSecondaryPriceEnabled = true; bool public useV2Pricing = false; bool public favorPrimaryPrice = false; uint256 public priceSampleSpace = 3; uint256 public maxStrictPriceDeviation = 0; address public secondaryPriceFeed; uint256 public spreadThresholdBasisPoints = 30; address public btc; address public eth; address public bnb; address public bnbBusd; address public ethBnb; address public btcBnb; 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 DAI 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 setChainlinkFlags(address _chainlinkFlags) external onlyGov { chainlinkFlags = _chainlinkFlags; } 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 setUseV2Pricing(bool _useV2Pricing) external override onlyGov { useV2Pricing = _useV2Pricing; } function setIsAmmEnabled(bool _isEnabled) external override onlyGov { isAmmEnabled = _isEnabled; } function setIsSecondaryPriceEnabled(bool _isEnabled) external override onlyGov { isSecondaryPriceEnabled = _isEnabled; } function setSecondaryPriceFeed(address _secondaryPriceFeed) external onlyGov { secondaryPriceFeed = _secondaryPriceFeed; } function setTokens(address _btc, address _eth, address _bnb) external onlyGov { btc = _btc; eth = _eth; bnb = _bnb; } function setPairs(address _bnbBusd, address _ethBnb, address _btcBnb) external onlyGov { bnbBusd = _bnbBusd; ethBnb = _ethBnb; btcBnb = _btcBnb; } 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 onlyGov { priceFeeds[_token] = _priceFeed; priceDecimals[_token] = _priceDecimals; strictStableTokens[_token] = _isStrictStable; } function getPrice(address _token, bool _maximise, bool _includeAmmPrice, bool /* _useSwapPricing */) public override view returns (uint256) { uint256 price = useV2Pricing ? getPriceV2(_token, _maximise, _includeAmmPrice) : getPriceV1(_token, _maximise, _includeAmmPrice); 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, bool _includeAmmPrice) public view returns (uint256) { uint256 price = getPrimaryPrice(_token, _maximise); if (_includeAmmPrice && isAmmEnabled) { uint256 ammPrice = getAmmPrice(_token); if (ammPrice > 0) { if (_maximise && ammPrice > price) { price = ammPrice; } if (!_maximise && ammPrice < price) { price = ammPrice; } } } 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; } } 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 getPriceV2(address _token, bool _maximise, bool _includeAmmPrice) public view returns (uint256) { uint256 price = getPrimaryPrice(_token, _maximise); if (_includeAmmPrice && isAmmEnabled) { price = getAmmPriceV2(_token, _maximise, price); } 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; } } 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 getAmmPriceV2(address _token, bool _maximise, uint256 _primaryPrice) public view returns (uint256) { uint256 ammPrice = getAmmPrice(_token); if (ammPrice == 0) { return _primaryPrice; } uint256 diff = ammPrice > _primaryPrice ? ammPrice.sub(_primaryPrice) : _primaryPrice.sub(ammPrice); if (diff.mul(BASIS_POINTS_DIVISOR) < _primaryPrice.mul(spreadThresholdBasisPoints)) { if (favorPrimaryPrice) { return _primaryPrice; } return ammPrice; } if (_maximise && ammPrice > _primaryPrice) { return ammPrice; } if (!_maximise && ammPrice < _primaryPrice) { return ammPrice; } return _primaryPrice; } function getPrimaryPrice(address _token, bool _maximise) public override view returns (uint256) { address priceFeedAddress = priceFeeds[_token]; require(priceFeedAddress != address(0), "VaultPriceFeed: invalid price feed"); if (chainlinkFlags != address(0)) { bool isRaised = IChainlinkFlags(chainlinkFlags).getFlag(FLAG_ARBITRUM_SEQ_OFFLINE); if (isRaised) { // If flag is raised we shouldn't perform any critical operations revert("Chainlink feeds are not being updated"); } } 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); } function getAmmPrice(address _token) public override view returns (uint256) { if (_token == bnb) { // for bnbBusd, reserve0: BNB, reserve1: BUSD return getPairPrice(bnbBusd, true); } if (_token == eth) { uint256 price0 = getPairPrice(bnbBusd, true); // for ethBnb, reserve0: ETH, reserve1: BNB uint256 price1 = getPairPrice(ethBnb, true); // this calculation could overflow if (price0 / 10**30) * (price1 / 10**30) is more than 10**17 return price0.mul(price1).div(PRICE_PRECISION); } if (_token == btc) { uint256 price0 = getPairPrice(bnbBusd, true); // for btcBnb, reserve0: BTC, reserve1: BNB uint256 price1 = getPairPrice(btcBnb, true); // this calculation could overflow if (price0 / 10**30) * (price1 / 10**30) is more than 10**17 return price0.mul(price1).div(PRICE_PRECISION); } return 0; } // if divByReserve0: calculate price as reserve1 / reserve0 // if !divByReserve1: calculate price as reserve0 / reserve1 function getPairPrice(address _pair, bool _divByReserve0) public view returns (uint256) { (uint256 reserve0, uint256 reserve1, ) = IPancakePair(_pair).getReserves(); if (_divByReserve0) { if (reserve0 == 0) { return 0; } return reserve1.mul(PRICE_PRECISION).div(reserve0); } if (reserve1 == 0) { return 0; } return reserve0.mul(PRICE_PRECISION).div(reserve1); } }
// 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 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 setUseV2Pricing(bool _useV2Pricing) external; function setIsAmmEnabled(bool _isEnabled) 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 getAmmPrice(address _token) external view returns (uint256); function getPrimaryPrice(address _token, bool _maximise) external view returns (uint256); }
// 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); }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IChainlinkFlags { function getFlag(address) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0; interface IPancakePair { function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); }
{ "optimizer": { "enabled": true, "runs": 1 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
[{"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":"bnb","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bnbBusd","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"btc","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"btcBnb","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chainlinkFlags","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethBnb","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"getAmmPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_maximise","type":"bool"},{"internalType":"uint256","name":"_primaryPrice","type":"uint256"}],"name":"getAmmPriceV2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_divByReserve0","type":"bool"}],"name":"getPairPrice","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":"_includeAmmPrice","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"},{"internalType":"bool","name":"_includeAmmPrice","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"},{"internalType":"bool","name":"_includeAmmPrice","type":"bool"}],"name":"getPriceV2","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":"isAmmEnabled","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":"address","name":"_chainlinkFlags","type":"address"}],"name":"setChainlinkFlags","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":"setIsAmmEnabled","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":"address","name":"_bnbBusd","type":"address"},{"internalType":"address","name":"_ethBnb","type":"address"},{"internalType":"address","name":"_btcBnb","type":"address"}],"name":"setPairs","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":"_btc","type":"address"},{"internalType":"address","name":"_eth","type":"address"},{"internalType":"address","name":"_bnb","type":"address"}],"name":"setTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_useV2Pricing","type":"bool"}],"name":"setUseV2Pricing","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"},{"inputs":[],"name":"useV2Pricing","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526001805461ffff60b01b1960ff60a81b1960ff60a01b19909216600160a01b1791909116600160a81b171690556003600281905560009055601e60055534801561004d57600080fd5b50600080546001600160a01b03191633179055611f668061006f6000396000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c80630957aed9146102615780631193c8091461027b578063126082cf1461029f57806312d43a51146102a75780632fa03b8f146102af5780632fbfe3d3146102ce5780632fc3a70a146102eb57806330536ee514610329578063378e7bf7146103455780633d949c5f1461034d5780633eba8d36146103835780633ebbc601146103b75780633f0c3bb7146103bf578063443be209146103c757806348cac277146103ff57806349a876e4146104255780634a4b1f4f1461042d5780634b9ade471461043557806356c8c2c114610473578063593d9e80146104a1578063604f37e9146104a957806367781c0e146104c85780636ce8a44b146104d05780636fc80708146104f6578063717cfe7a146104fe578063732391b414610524578063826e055f1461055a5780638b86616c146105805780638c7c9e0c1461058857806393f690741461059057806395082d25146104c8578063971bd396146105c857806397dfade7146105d05780639917dc74146105d85780639a0a6635146105f75780639b18dc471461061d5780639b889380146106255780639dcb511a14610651578063a27ea38614610677578063a28d57d81461069d578063a2ad7b93146106a5578063a39c73a3146106d3578063b02a2de4146106db578063b731dd871461070f578063b8f611051461072c578063c2138d8c14610752578063cefe0f2114610778578063cfad57a21461079e578063d694376c146107c4578063e4440e02146107f8578063eb1c92a914610800578063fd34ec401461081f575b600080fd5b61026961083e565b60408051918252519081900360200190f35b610283610843565b604080516001600160a01b039092168252519081900360200190f35b610269610852565b610283610858565b6102cc600480360360208110156102c557600080fd5b5035610867565b005b6102cc600480360360208110156102e457600080fd5b50356108f8565b6102696004803603608081101561030157600080fd5b506001600160a01b03813516906020810135151590604081013515159060600135151561094a565b610331610a08565b604080519115158252519081900360200190f35b610269610a18565b6102696004803603606081101561036357600080fd5b506001600160a01b03813516906020810135151590604001351515610a1e565b6102696004803603606081101561039957600080fd5b506001600160a01b0381351690602081013590604001351515610b93565b610331610c41565b610331610c51565b6102cc600480360360608110156103dd57600080fd5b506001600160a01b038135811691602081013582169160409091013516610c61565b6102696004803603602081101561041557600080fd5b50356001600160a01b0316610ced565b610283610cff565b610269610d0e565b6102cc6004803603608081101561044b57600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515610d13565b6102696004803603604081101561048957600080fd5b506001600160a01b0381351690602001351515610db5565b6103316111e2565b6102cc600480360360208110156104bf57600080fd5b503515156111f2565b61026961125d565b610331600480360360208110156104e657600080fd5b50356001600160a01b031661126d565b610269611282565b6102696004803603602081101561051457600080fd5b50356001600160a01b0316611288565b6102696004803603606081101561053a57600080fd5b506001600160a01b0381351690602081013515159060400135151561129a565b6102cc6004803603602081101561057057600080fd5b50356001600160a01b03166112ef565b61028361135e565b61028361136d565b6102cc600480360360608110156105a657600080fd5b506001600160a01b03813581169160208101358216916040909101351661137c565b610283611408565b610283611417565b6102cc600480360360208110156105ee57600080fd5b50351515611426565b6102cc6004803603602081101561060d57600080fd5b50356001600160a01b0316611491565b610269611500565b6102cc6004803603604081101561063b57600080fd5b506001600160a01b038135169060200135611506565b6102836004803603602081101561066757600080fd5b50356001600160a01b03166115af565b6102696004803603602081101561068d57600080fd5b50356001600160a01b03166115ca565b6102836115dc565b610269600480360360408110156106bb57600080fd5b506001600160a01b03813516906020013515156115eb565b6102696116d8565b610269600480360360608110156106f157600080fd5b506001600160a01b03813516906020810135151590604001356116de565b6102cc6004803603602081101561072557600080fd5b50356117a6565b6103316004803603602081101561074257600080fd5b50356001600160a01b03166117f8565b6102696004803603602081101561076857600080fd5b50356001600160a01b031661180d565b6102696004803603602081101561078e57600080fd5b50356001600160a01b031661190c565b6102cc600480360360208110156107b457600080fd5b50356001600160a01b031661191e565b6102cc600480360360608110156107da57600080fd5b506001600160a01b038135169060208101351515906040013561198d565b610283611ad0565b6102cc6004803603602081101561081657600080fd5b50351515611adf565b6102cc6004803603602081101561083557600080fd5b50351515611b4a565b603281565b600a546001600160a01b031681565b61271081565b6000546001600160a01b031681565b6000546001600160a01b031633146108b4576040805162461bcd60e51b81526020600482015260196024820152600080516020611e80833981519152604482015290519081900360640190fd5b600081116108f35760405162461bcd60e51b8152600401808060200182810382526029815260200180611de46029913960400191505060405180910390fd5b600255565b6000546001600160a01b03163314610945576040805162461bcd60e51b81526020600482015260196024820152600080516020611e80833981519152604482015290519081900360640190fd5b600355565b6001546000908190600160b01b900460ff166109705761096b868686610a1e565b61097b565b61097b86868661129a565b6001600160a01b03871660009081526010602052604090205490915080156109fe576001600160a01b03871660009081526011602052604090205460ff1680156109e6576109df6127106109d96109d28286611bb5565b8690611c0d565b90611c66565b92506109fc565b6109f96127106109d96109d28286611ca5565b92505b505b5095945050505050565b600154600160b01b900460ff1681565b60035481565b600080610a2b8585610db5565b9050828015610a435750600154600160a01b900460ff165b15610a88576000610a538661180d565b90508015610a8657848015610a6757508181115b15610a70578091505b84158015610a7d57508181105b15610a86578091505b505b600154600160a81b900460ff1615610aa857610aa5858286610b93565b90505b6001600160a01b0385166000908152600f602052604090205460ff1615610b3257600068327cb2734119d3b7a9601e1b8211610af957610af468327cb2734119d3b7a9601e1b83611ca5565b610b0f565b610b0f8268327cb2734119d3b7a9601e1b611ca5565b90506003548111610b305768327cb2734119d3b7a9601e1b92505050610b8c565b505b6001600160a01b0385166000908152600e60205260409020548415610b7457610b6b6127106109d9610b648285611bb5565b8590611c0d565b92505050610b8c565b610b876127106109d9610b648285611ca5565b925050505b9392505050565b6004546000906001600160a01b0316610bad575081610b8c565b6004805460408051630ffd9c6d60e31b81526001600160a01b038881169482019490945260248101879052851515604482015290519290911691637fece36891606480820192602092909190829003018186803b158015610c0d57600080fd5b505afa158015610c21573d6000803e3d6000fd5b505050506040513d6020811015610c3757600080fd5b5051949350505050565b600154600160a81b900460ff1681565b600154600160a01b900460ff1681565b6000546001600160a01b03163314610cae576040805162461bcd60e51b81526020600482015260196024820152600080516020611e80833981519152604482015290519081900360640190fd5b600680546001600160a01b039485166001600160a01b031991821617909155600780549385169382169390931790925560088054919093169116179055565b60106020526000908152604090205481565b6008546001600160a01b031681565b601481565b6000546001600160a01b03163314610d60576040805162461bcd60e51b81526020600482015260196024820152600080516020611e80833981519152604482015290519081900360640190fd5b6001600160a01b039384166000908152600c6020908152604080832080546001600160a01b0319169690971695909517909555600d855283812092909255600f90935220805460ff1916911515919091179055565b6001600160a01b038083166000908152600c602052604081205490911680610e0e5760405162461bcd60e51b8152600401808060200182810382526022815260200180611f0f6022913960400191505060405180910390fd5b6001546001600160a01b031615610eeb5760015460408051631abf23ff60e11b815273a438451d6458044c3c8cd2f6f31c91ac882a6d91600482015290516000926001600160a01b03169163357e47fe916024808301926020929190829003018186803b158015610e7e57600080fd5b505afa158015610e92573d6000803e3d6000fd5b505050506040513d6020811015610ea857600080fd5b505190508015610ee95760405162461bcd60e51b8152600401808060200182810382526025815260200180611ea06025913960400191505060405180910390fd5b505b6000819050600080826001600160a01b031663668a0f026040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2c57600080fd5b505afa158015610f40573d6000803e3d6000fd5b505050506040513d6020811015610f5657600080fd5b5051905060005b600254816001600160501b0316101561115d57806001600160501b0316826001600160501b031611610f8e5761115d565b60006001600160501b038216611051576000856001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fd957600080fd5b505afa158015610fed573d6000803e3d6000fd5b505050506040513d602081101561100357600080fd5b505190506000811361104a576040805162461bcd60e51b815260206004820152601d6024820152600080516020611eef833981519152604482015290519081900360640190fd5b9050611119565b6000856001600160a01b0316639a6fc8f58486036040518263ffffffff1660e01b815260040180826001600160501b0316815260200191505060a06040518083038186803b1580156110a257600080fd5b505afa1580156110b6573d6000803e3d6000fd5b505050506040513d60a08110156110cc57600080fd5b5060200151905060008113611116576040805162461bcd60e51b815260206004820152601d6024820152600080516020611eef833981519152604482015290519081900360640190fd5b90505b83611125579250611155565b87801561113157508381115b1561113d579250611155565b8715801561114a57508381105b15611153578093505b505b600101610f5d565b506000821161119d5760405162461bcd60e51b8152600401808060200182810382526025815260200180611e0d6025913960400191505060405180910390fd5b6001600160a01b0387166000908152600d60205260409020546111d4600a82900a6109d98568327cb2734119d3b7a9601e1b611c0d565b955050505050505b92915050565b600154600160b81b900460ff1681565b6000546001600160a01b0316331461123f576040805162461bcd60e51b81526020600482015260196024820152600080516020611e80833981519152604482015290519081900360640190fd5b60018054911515600160b81b0260ff60b81b19909216919091179055565b68327cb2734119d3b7a9601e1b81565b60116020526000908152604090205460ff1681565b60025481565b60126020526000908152604090205481565b6000806112a78585610db5565b90508280156112bf5750600154600160a01b900460ff165b15610a88576112cf8585836116de565b905060015460ff600160a81b9091041615610aa857610aa5858286610b93565b6000546001600160a01b0316331461133c576040805162461bcd60e51b81526020600482015260196024820152600080516020611e80833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b031681565b6007546001600160a01b031681565b6000546001600160a01b031633146113c9576040805162461bcd60e51b81526020600482015260196024820152600080516020611e80833981519152604482015290519081900360640190fd5b600980546001600160a01b039485166001600160a01b031991821617909155600a805493851693821693909317909255600b8054919093169116179055565b600b546001600160a01b031681565b6009546001600160a01b031681565b6000546001600160a01b03163314611473576040805162461bcd60e51b81526020600482015260196024820152600080516020611e80833981519152604482015290519081900360640190fd5b60018054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146114de576040805162461bcd60e51b81526020600482015260196024820152600080516020611e80833981519152604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b611c2081565b6000546001600160a01b03163314611553576040805162461bcd60e51b81526020600482015260196024820152600080516020611e80833981519152604482015290519081900360640190fd5b60328111156115935760405162461bcd60e51b815260040180806020018281038252602a815260200180611ec5602a913960400191505060405180910390fd5b6001600160a01b039091166000908152600e6020526040902055565b600c602052600090815260409020546001600160a01b031681565b600e6020526000908152604090205481565b6006546001600160a01b031681565b6000806000846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561162957600080fd5b505afa15801561163d573d6000803e3d6000fd5b505050506040513d606081101561165357600080fd5b5080516020909101516001600160701b03918216935016905083156116a55781611682576000925050506111dc565b61169c826109d98368327cb2734119d3b7a9601e1b611c0d565b925050506111dc565b806116b5576000925050506111dc565b6116cf816109d98468327cb2734119d3b7a9601e1b611c0d565b95945050505050565b60055481565b6000806116ea8561180d565b9050806116fa5782915050610b8c565b60008382116117125761170d8483611ca5565b61171c565b61171c8285611ca5565b905061173360055485611c0d90919063ffffffff16565b61173f82612710611c0d565b101561176957600154600160b81b900460ff1615611761578392505050610b8c565b509050610b8c565b84801561177557508382115b1561178257509050610b8c565b8415801561178f57508382105b1561179c57509050610b8c565b5091949350505050565b6000546001600160a01b031633146117f3576040805162461bcd60e51b81526020600482015260196024820152600080516020611e80833981519152604482015290519081900360640190fd5b600555565b600f6020526000908152604090205460ff1681565b6008546000906001600160a01b03838116911614156118445760095461183d906001600160a01b031660016115eb565b9050611907565b6007546001600160a01b03838116911614156118b657600954600090611874906001600160a01b031660016115eb565b600a54909150600090611891906001600160a01b031660016115eb565b90506118ad68327cb2734119d3b7a9601e1b6109d98484611c0d565b92505050611907565b6006546001600160a01b0383811691161415611903576009546000906118e6906001600160a01b031660016115eb565b600b54909150600090611891906001600160a01b031660016115eb565b5060005b919050565b600d6020526000908152604090205481565b6000546001600160a01b0316331461196b576040805162461bcd60e51b81526020600482015260196024820152600080516020611e80833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146119da576040805162461bcd60e51b81526020600482015260196024820152600080516020611e80833981519152604482015290519081900360640190fd5b6001600160a01b0383166000908152601260205260409020544290611a0190611c20611bb5565b10611a3d5760405162461bcd60e51b815260040180806020018281038252602d815260200180611e53602d913960400191505060405180910390fd5b6014811115611a8c576040805162461bcd60e51b8152602060048201526016602482015275696e76616c6964205f61646a7573746d656e7442707360501b604482015290519081900360640190fd5b6001600160a01b03929092166000908152601160209081526040808320805460ff191694151594909417909355601081528282209390935560129092529020429055565b6001546001600160a01b031681565b6000546001600160a01b03163314611b2c576040805162461bcd60e51b81526020600482015260196024820152600080516020611e80833981519152604482015290519081900360640190fd5b60018054911515600160a81b0260ff60a81b19909216919091179055565b6000546001600160a01b03163314611b97576040805162461bcd60e51b81526020600482015260196024820152600080516020611e80833981519152604482015290519081900360640190fd5b60018054911515600160b01b0260ff60b01b19909216919091179055565b600082820183811015610b8c576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b600082611c1c575060006111dc565b82820282848281611c2957fe5b0414610b8c5760405162461bcd60e51b8152600401808060200182810382526021815260200180611e326021913960400191505060405180910390fd5b6000610b8c83836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250611ce7565b6000610b8c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d89565b60008183611d735760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d38578181015183820152602001611d20565b50505050905090810190601f168015611d655780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611d7f57fe5b0495945050505050565b60008184841115611ddb5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611d38578181015183820152602001611d20565b50505090039056fe5661756c745072696365466565643a20696e76616c6964205f707269636553616d706c6553706163655661756c745072696365466565643a20636f756c64206e6f74206665746368207072696365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775661756c745072696365466565643a2061646a7573746d656e74206672657175656e63792065786365656465645661756c745072696365466565643a20666f7262696464656e00000000000000436861696e6c696e6b20666565647320617265206e6f74206265696e6720757064617465645661756c745072696365466565643a20696e76616c6964205f7370726561644261736973506f696e74735661756c745072696365466565643a20696e76616c69642070726963650000005661756c745072696365466565643a20696e76616c69642070726963652066656564a26469706673582212207798b6d48759f3dcccfc5d43eeec7e5f80267b5c0429d6327aea9de77ad6d36a64736f6c634300060c0033
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.