> For the complete documentation index, see [llms.txt](https://qi-blockchain.gitbook.io/qie-oracle/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://qi-blockchain.gitbook.io/qie-oracle/developer-guide/how-to-integrate-qie-oracle-in-smart-contracts.md).

# ⚙️ How to Integrate QIE Oracle in Smart Contracts

Integrating QIE Oracle into your smart contract is simple and gas-efficient. The oracle contracts are **read-only**, meaning fetching data does not consume significant gas.

***

#### ✅ Integration Steps

**1. Import the Oracle Interface**

Use the standard `AggregatorV3Interface`, which is compatible with the QIE Oracle:

```
import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";

```

> This interface is supported because QIE Oracle follows the Chainlink AggregatorV3 standard.

***

**2. Instantiate the Oracle**

Set the oracle contract address in your constructor or initializer:

```
AggregatorV3Interface public priceFeed;

constructor(address oracleAddress) {
    priceFeed = AggregatorV3Interface(oracleAddress);
}

```

> Replace `oracleAddress` with the deployed address of the specific QIE Oracle for your asset (e.g., QIE/USD).

***

**3. Call `latestRoundData()` to Get the Price**

Fetch the latest price in your contract logic:

```
function getLatestPrice() public view returns (int256) {
    (
        , 
        int256 price,
        , 
        , 
    ) = priceFeed.latestRoundData();

    return price;
}

```

> This function is read-only (`view`) and consumes minimal gas when called externally or from another contract.

***

#### ⚡️ Gas Efficiency

All price-fetching functions on the QIE Oracle are **non-state-changing** (read-only). This means:

* No transaction needs to be sent
* No gas is spent reading data (unless used inside a transaction)
* Safe to use in frequent or lightweight calls
