# IFdcHub

> Primary interface for interacting with FDC.

> For the complete documentation index, see [llms.txt](/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.

Source: https://dev.flare.network/fdc/reference/IFdcHub

Primary interface for interacting with the Flare Data Connector (FDC).

Sourced from `IFdcHub.sol` on [GitHub](https://github.com/flare-foundation/flare-smart-contracts-v2/blob/main/contracts/userInterfaces/IFdcHub.sol).

## Overview[​](#overview "Direct link to Overview")

The IFdcHub interface serves as the main entry point for applications requesting attestations from the Flare Data Connector. It provides functionality to request attestations, access configuration contracts, and handle related events.

## Functions[​](#functions "Direct link to Functions")

### fdcInflationConfigurations[​](#fdcinflationconfigurations "Direct link to fdcInflationConfigurations")

Returns the FDC inflation configurations contract address.

```
function fdcInflationConfigurations() external view returns (    contract IFdcInflationConfigurations);
```

**Returns**

-   `IFdcInflationConfigurations`: Contract interface for accessing inflation configurations

### fdcRequestFeeConfigurations[​](#fdcrequestfeeconfigurations "Direct link to fdcRequestFeeConfigurations")

Returns the FDC request fee configurations contract address.

```
function fdcRequestFeeConfigurations() external view returns (    contract IFdcRequestFeeConfigurations);
```

**Returns**

-   `IFdcRequestFeeConfigurations`: Contract interface for accessing request fee configurations

### requestAttestation[​](#requestattestation "Direct link to requestAttestation")

Requests an attestation from the Flare Data Connector.

```
function requestAttestation(    bytes _data) external payable;
```

**Parameters**

-   `_data`: ABI encoded attestation request

**Note**: This function is payable and requires a fee based on the attestation type.

### requestsOffsetSeconds[​](#requestsoffsetseconds "Direct link to requestsOffsetSeconds")

Returns the offset (in seconds) for the requests to be processed during the current voting round.

```
function requestsOffsetSeconds() external view returns (    uint8);
```

**Returns**

-   `uint8`: Offset in seconds

## Events[​](#events "Direct link to Events")

### AttestationRequest[​](#attestationrequest "Direct link to AttestationRequest")

Emitted when an attestation request is submitted.

```
event AttestationRequest(    bytes data,    uint256 fee)
```

**Parameters**

-   `data`: The encoded attestation request data
-   `fee`: The amount paid for the attestation request

### InflationRewardsOffered[​](#inflationrewardsoffered "Direct link to InflationRewardsOffered")

Emitted when inflation rewards are offered.

```
event InflationRewardsOffered(    uint24 rewardEpochId,    struct IFdcInflationConfigurations.FdcConfiguration[] fdcConfigurations,    uint256 amount)
```

**Parameters**

-   `rewardEpochId`: The ID of the reward epoch
-   `fdcConfigurations`: Array of FDC configurations
-   `amount`: The total amount of rewards offered

### RequestsOffsetSet[​](#requestsoffsetset "Direct link to RequestsOffsetSet")

Emitted when the requests offset is updated.

```
event RequestsOffsetSet(    uint8 requestsOffsetSeconds)
```

**Parameters**

-   `requestsOffsetSeconds`: The new offset value in seconds

## Usage Example[​](#usage-example "Direct link to Usage Example")

AddressSolidity.sol

```
// SPDX-License-Identifier: MITpragma solidity ^0.8.25;import {ContractRegistry} from "@flarenetwork/flare-periphery-contracts/coston2/ContractRegistry.sol";import {IFdcVerification} from "@flarenetwork/flare-periphery-contracts/coston2/IFdcVerification.sol";import {IAddressValidity} from "@flarenetwork/flare-periphery-contracts/coston2/IAddressValidity.sol";interface IAddressRegistry {    function registerAddress(        IAddressValidity.Proof memory _transaction    ) external;}contract AddressRegistry is IAddressRegistry {    string[] public verifiedAddresses;    function registerAddress(        IAddressValidity.Proof memory _transaction    ) public {        // 1. FDC Logic        // Check that this AddressValidity has indeed been confirmed by the FDC        require(            isAddressValidityProofValid(_transaction),            "Invalid transaction proof"        );        // 2. Business logic        string memory provedAddress = _transaction.data.requestBody.addressStr;        verifiedAddresses.push(provedAddress);    }    function isAddressValidityProofValid(        IAddressValidity.Proof memory transaction    ) public view returns (bool) {        // Use the library to get the verifier contract and verify that this transaction was proved by the FDC        IFdcVerification fdc = ContractRegistry.getFdcVerification();        return fdc.verifyAddressValidity(transaction);    }}
```

[Open example in Remix](https://remix.ethereum.org/#url=https://github.com/flare-foundation/developer-hub/blob/main/examples/developer-hub-solidity/AddressSolidity.sol&version=builtin&evmVersion=cancun&optimize=true&runs=200)
