FeeOracle
FeeOracle is a supplementary contract that processes the module's Performance Oracle report after consensus has been reached. An authorized consensus member or account holding SUBMIT_DATA_ROLE submits the report data matching the consensus hash. The contract sends rewards-distribution data to FeeDistributor and the latest validator-strikes tree to ValidatorStrikes.
FeeOracle does not hold assets.
State Variables​
INITIALIZED_VERSION​
uint256 internal constant INITIALIZED_VERSION = 3
SUBMIT_DATA_ROLE​
An ACL role granting the permission to submit the data for a committee report.
bytes32 public constant SUBMIT_DATA_ROLE = keccak256("SUBMIT_DATA_ROLE")
FEE_DISTRIBUTOR​
IFeeDistributor public immutable FEE_DISTRIBUTOR
STRIKES​
IValidatorStrikes public immutable STRIKES
__freeSlot1​
bytes32 internal __freeSlot1
__freeSlot2​
bytes32 internal __freeSlot2
Functions​
constructor​
constructor(address feeDistributor, address strikes, uint256 secondsPerSlot, uint256 genesisTime)
BaseOracle(secondsPerSlot, genesisTime);
initialize​
Initialize contract from scratch. In case of a method call frontrun, the contract instance should be discarded. It is recommended to call this method in the same transaction as the deployment transaction and perform extensive deployment verification before using the contract instance.
function initialize(address admin, address consensusContract, uint256 consensusVersion) external;
finalizeUpgradeV3​
This method is expected to be called only when the contract is upgraded from version 2 to version 3 for the existing version 2 deployment.
If the version 3 contract is deployed from scratch, the initialize method should be used instead.
To prevent possible frontrun this method should strictly be called in the same TX as the upgrade transaction and should not be called separately.
function finalizeUpgradeV3(uint256 consensusVersion) external;
submitReportData​
Submit the data for a committee report
function submitReportData(ReportData calldata data, uint256 contractVersion) external whenResumed;
Parameters
| Name | Type | Description |
|---|---|---|
data | ReportData | Data for a committee report |
contractVersion | uint256 | Expected storage contract version of the FeeOracle implementation |
_handleConsensusReport​
Called in submitConsensusReport after a consensus is reached.
function _handleConsensusReport(
ConsensusReport memory,
/* report */
uint256,
/* prevSubmittedRefSlot */
uint256 /* prevProcessingRefSlot */
)
internal
override;
_handleConsensusReportData​
function _handleConsensusReportData(ReportData calldata data) internal;
_checkMsgSenderIsAllowedToSubmitData​
function _checkMsgSenderIsAllowedToSubmitData() internal view;
_onlyRecoverer​
function _onlyRecoverer() internal view override;
__checkRole​
function __checkRole(bytes32 role) internal view override;