IFdcInflationConfigurations
Interface for managing Flare Data Connector (FDC) inflation configuration.
Sourced from IFdcInflationConfigurations.sol
on GitHub.
Overview
The IFdcInflationConfigurations interface allows access to the inflation distribution settings for different attestation types and sources within the Flare Data Connector system. These configurations determine how inflation rewards are allocated to validators based on the attestation requests they process.
Functions
getFdcConfiguration
Returns a single FDC configuration at the specified index.
function getFdcConfiguration(
uint256 _index
) external view returns (
struct IFdcInflationConfigurations.FdcConfiguration
);
Parameters
_index
: The index of the FDC configuration
Returns
FdcConfiguration
: The configuration struct at the specified index
getFdcConfigurations
Returns the complete array of all FDC configurations.
function getFdcConfigurations(
) external view returns (
struct IFdcInflationConfigurations.FdcConfiguration[]
);
Returns
FdcConfiguration[]
: Array of all configured FDC configurations
Structures
FdcConfiguration
Configuration structure for FDC inflation settings per attestation type and source.
struct FdcConfiguration {
bytes32 attestationType;
bytes32 source;
uint24 inflationShare;
uint8 minRequestsThreshold;
uint224 mode;
}
Fields
attestationType
: Identifier for the attestation type (e.g., AddressValidity, BalanceDecreasingTransaction)source
: The data source identifier (e.g., BTC, DOGE, XRP)inflationShare
: Percentage share of the total inflation allocated to this configuration (basis points)minRequestsThreshold
: Minimum number of requests required for this configuration to receive inflation rewardsmode
: Additional configuration flags and settings
Usage Example
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@flare-foundation/flare-smart-contracts-v2/contracts/userInterfaces/IFdcHub.sol";
import "@flare-foundation/flare-smart-contracts-v2/contracts/userInterfaces/IFdcInflationConfigurations.sol";
contract InflationMonitor {
IFdcHub private fdcHub;
constructor(address _fdcHubAddress) {
fdcHub = IFdcHub(_fdcHubAddress);
}
// Get inflation share for a specific attestation type and source
function getInflationShare(bytes32 attestationType, bytes32 source) external view returns (uint24) {
IFdcInflationConfigurations inflationConfigs = fdcHub.fdcInflationConfigurations();
IFdcInflationConfigurations.FdcConfiguration[] memory configs = inflationConfigs.getFdcConfigurations();
for (uint i = 0; i < configs.length; i++) {
if (configs[i].attestationType == attestationType && configs[i].source == source) {
return configs[i].inflationShare;
}
}
return 0; // Not found or no inflation share allocated
}
}