PriceSubmitter
#
Source | Inherits from IIPriceSubmitter, GovernedAtGenesis, AddressUpdatable
Receives prices from FTSO data providers.
It then forwards the submissions to the appropriate FTSO contract, allowing data providers to perform all required operations in a single transaction per price epoch.
Functions#
cancelGovernanceCall
#
function cancelGovernanceCall(
bytes4 _selector
) external;
Cancel a timelocked governance
call before it has been executed.
Only governance
can call this method.
Parameters | Type | Description |
---|---|---|
_selector |
bytes4 |
The method selector. |
constructor
#
constructor(
) public;
This constructor
should contain no code as this contract is pre-loaded into the genesis block.
The super constructors are called for testing convenience.
executeGovernanceCall
#
function executeGovernanceCall(
bytes4 _selector
) external;
Execute the timelocked governance
calls once the timelock period expires.
Only executor can call this method.
Parameters | Type | Description |
---|---|---|
_selector |
bytes4 |
The method selector (only one timelocked call per method is stored). |
getAddressUpdater
#
function getAddressUpdater(
) public view returns (
address _addressUpdater);
Returns the configured address updater.
Returns | Type | Description |
---|---|---|
_addressUpdater |
address |
The AddresUpdater contract that can update our contract address list, as a response to a governance call. |
getCurrentRandom
#
function getCurrentRandom(
) external view returns (
uint256);
Returns the random number for the previous epoch, obtained from the random numbers provided by all data providers along with their data submissions. Note that the random number for the previous epoch keeps updating as new submissions are revealed.
It never reverts.
Returns | Type | Description |
---|---|---|
[0] | uint256 |
Random number calculated from all data provider's submissions. |
getFtsoManager
#
function getFtsoManager(
) external view returns (
contract IFtsoManagerGenesis);
Returns the address of the FtsoManager
contract.
getFtsoRegistry
#
function getFtsoRegistry(
) external view returns (
contract IFtsoRegistryGenesis);
Returns the address of the FtsoRegistry
contract.
getRandom
#
function getRandom(
uint256 _epochId
) external view returns (
uint256);
Returns the random number used in a specific past epoch, obtained from the random numbers provided by all data providers along with their data submissions.
Parameters | Type | Description |
---|---|---|
_epochId |
uint256 |
ID of the queried epoch. Current epoch cannot be queried, and the previous epoch is constantly updated as data providers reveal their prices and random numbers. Note that only the last 50 epochs can be queried and there is no bounds checking for this parameter. Out-of-bounds queries return undefined values. |
Returns | Type | Description |
---|---|---|
[0] | uint256 |
The random number used in that epoch. |
getTrustedAddresses
#
function getTrustedAddresses(
) external view returns (
address[]);
Returns the list of trusted addresses that are always allowed to submit and reveal.
Returns | Type | Description |
---|---|---|
[0] | address[] |
address[] Array of trusted voter addresses. |
getVoterWhitelister
#
function getVoterWhitelister(
) external view returns (
address);
Returns the address of the VoterWhitelister
contract managing the data provider whitelist.
governance
#
function governance(
) public view returns (
address);
Returns the current effective governance
address.
initialise
#
function initialise(
address _governance
) public pure;
Disallow initialise
to be called.
Parameters | Type | Description |
---|---|---|
_governance |
address |
The governance address for initial claiming. |
revealPrices
#
function revealPrices(
uint256 _epochId,
uint256[] _ftsoIndices,
uint256[] _prices,
uint256 _random
) external;
Reveals submitted prices during the epoch reveal period.
The hash of FTSO indices, prices, random number, and voter address must be equal
to the hash previously submitted with submitHash
.
Emits a PricesRevealed
event.
Parameters | Type | Description |
---|---|---|
_epochId |
uint256 |
ID of the epoch to which the price hashes are submitted. |
_ftsoIndices |
uint256[] |
List of FTSO indices in ascending order. |
_prices |
uint256[] |
List of submitted prices in USD. |
_random |
uint256 |
Submitted random number. |
setAddressUpdater
#
function setAddressUpdater(
address _addressUpdater
) external;
Sets the address updater contract.
Only governance
cal call this method.
Parameters | Type | Description |
---|---|---|
_addressUpdater |
address |
Address of the AddressUpdater contract. |
setTrustedAddresses
#
function setTrustedAddresses(
address[] _trustedAddresses
) external;
Set the trusted addresses that are always allowed to submit and reveal. Trusted addresses are used, for example, in fallback mode. Only FTSO Manager can call this method.
Parameters | Type | Description |
---|---|---|
_trustedAddresses |
address[] |
Array of FTSO data provider addresses (voters). The previous list of trusted addresses is discarded. |
submitHash
#
function submitHash(
uint256 _epochId,
bytes32 _hash
) external;
Submits a hash for the current epoch. Can only be called by FTSO data providers
whitelisted through the VoterWhitelisted
contract.
Emits the HashSubmitted
event.
Parameters | Type | Description |
---|---|---|
_epochId |
uint256 |
ID of the target epoch to which the hash is submitted. |
_hash |
bytes32 |
A hash of the FTSO indices, prices, random number, and voter address. |
switchToProductionMode
#
function switchToProductionMode(
) external;
Enter the production mode after all the initial governance
settings have been set.
This enables timelocks and the governance
can be obtained afterward by calling
governanceSettings
.getGovernanceAddress().
Emits GovernedProductionModeEntered
.
updateContractAddresses
#
function updateContractAddresses(
bytes32[] _contractNameHashes,
address[] _contractAddresses
) external;
External method called from AddressUpdater
only.
voterWhitelistBitmap
#
function voterWhitelistBitmap(
address _voter
) external view returns (
uint256);
Returns a bitmap of all FTSOs for which a data provider is allowed to submit prices or hashes.
Parameters | Type | Description |
---|---|---|
_voter |
address |
Address of the voter. |
Returns | Type | Description |
---|---|---|
[0] | uint256 |
If a data provider is allowed to vote for a given FTSO index, the corresponding bit in the result is 1. |
voterWhitelisted
#
function voterWhitelisted(
address _voter,
uint256 _ftsoIndex
) external;
Called from the VoterWhitelister
contract when a new voter has been whitelisted.
Only the VoterWhitelister
contract can call this method.
Parameters | Type | Description |
---|---|---|
_voter |
address |
Voter address that has been added to the whitelist. |
_ftsoIndex |
uint256 |
Index of the FTSO to which the voter has registered. Each FTSO has its own whitelist. |
votersRemovedFromWhitelist
#
function votersRemovedFromWhitelist(
address[] _removedVoters,
uint256 _ftsoIndex
) external;
Called from the VoterWhitelister
contract when one or more voters have been removed.
Only the VoterWhitelister
contract can call this method.
Parameters | Type | Description |
---|---|---|
_removedVoters |
address[] |
|
_ftsoIndex |
uint256 |
Index of the FTSO to which the voters were registered. Each FTSO has its own whitelist. |
Modifiers#
onlyAddressUpdater
#
modifier onlyAddressUpdater()
Only the AdressUpdater
contract can call this method.
Its address is set at construction time but it can also update itself.
onlyFtsoManager
#
modifier onlyFtsoManager()
Only the ftsoManager
can call this method.
Variables#
MINIMAL_RANDOM
#
uint256 MINIMAL_RANDOM
Minimal random value accepted along price submissions. Submitted random values below this threshold will revert.
RANDOM_EPOCH_CYCLIC_BUFFER_SIZE
#
uint256 RANDOM_EPOCH_CYCLIC_BUFFER_SIZE
Number of past random numbers remembered.
governanceSettings
#
contract IGovernanceSettings governanceSettings
Governance Settings.
productionMode
#
bool productionMode
When true, governance
is enabled and cannot be disabled. See switchToProductionMode
.
timelockedCalls
#
mapping(bytes4 => struct GovernedBase.TimelockedCall) timelockedCalls
List of pending timelocked governance
calls.