# Commodity Prices

## Commodity Price Oracle

Lumia provides real-time commodity price feeds through an on-chain oracle system, allowing developers to access current market prices for various commodities including precious metals, energy products, and agricultural goods.

### Overview

The commodity price oracle provides real-time price data for:

* Precious Metals (XAU/Gold, XAG/Silver, XPT/Platinum)
* Energy (Brent Oil, Natural Gas)
* Agricultural (Wheat, Corn, Sugar, Milk, Barley)
* Industrial Metals (Copper, Aluminum)

### How to Use

#### Contract Details

**Mainnet**

* Oracle Contract Address: `0x146447574c02deB3B802A1d4c9447CB7648aA56D`
* Sender Address: `0x1ad5b38c108feca340398538e45c4e3abcce7401`

**Testnet**

* Oracle Contract Address: `0x146447574c02deB3B802A1d4c9447CB7648aA56D`
* Sender Address: `0x682e737dcd1d679cb0dbfd34b137038480d45ead`

#### Integration Example

Here's a simple example showing how to query commodity prices in your smart contracts:

```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

interface IOracle {
    function readAsUint256ByKey(
        address sender,
        bytes32 key
    ) external view returns (int256);
}

contract CommodityPriceConsumer {
    IOracle public oracle;

    constructor(address _oracleAddress) {
        oracle = IOracle(_oracleAddress);
    }

    function getPrice(address senderAddress, bytes32 dataKey) external view returns (int256) {
        return oracle.readAsUint256ByKey(senderAddress, dataKey);
    }
}
```

#### Available Commodity Keys

Each commodity has a unique key for price queries. Here are the available commodities and their corresponding keys:

**Precious Metals**

* **Gold (XAU/USD)**
  * Mainnet Key: `0x1A4CF14646A65ED92B0F79291D4B537D4D634DAF4AE7BDEA7F95E16AFC106676`
  * Testnet Key: `0x8A8DF5C5476AD99D933701968710B3E18D16864A1D08F10916F09ED75E638DBB`
  * Data Source: investing.com/currencies/xau-usd
* **Silver (XAG/USD)**
  * Mainnet Key: `0xBB2F960A195C867A42E2AA5340AF4B3C62E789C0568FBBCE1925417E0FC62024`
  * Testnet Key: `0xF6743B90FD9E84F36C8E4D4D44A1642360BEFEBB48804CA013A613447930D311`
  * Data Source: investing.com/currencies/xag-usd

**Energy**

* **Brent Oil**
  * Mainnet Key: `0x08250CF04C3D466C046942A4C0968A955202155F43CADB5699065CC1CD966BA7`
  * Testnet Key: `0x694848F20CA37676DF8E14670A53CD521332673EAFEC2F6735D0D3064891BE82`
  * Data Source: investing.com/commodities/brent-oil
* **Natural Gas (NG)**
  * Mainnet Key: `0x598B52FA996FB56351A0B86CEFB0D12210D046DA2372044271F3495FC36081C9`
  * Testnet Key: `0x5AADF097C2159913CAA090D92F4947F7423FBC2404F6F6CDE21382E81B499198`
  * Data Source: investing.com/commodities/natural-gas

**Industrial Metals**

* **Copper (XCU)**
  * Mainnet Key: `0x3C66B438005B1823E9544AC4BCA1BF1F3F70E40F75EBCD0F6E2DB3E968EF46E5`
  * Testnet Key: `0xEB93D2CB02A06E6CE522A66C58A90300E2A41B1226EED095141AD0B8B759BCF7`
  * Data Source: fxempire.com/commodities/copper
* **Aluminum (ALU)**
  * Mainnet Key: `0xC746629AF536F44CA9EB4CEC98D18FE161700538200FABD786095A8D4894E0C2`
  * Testnet Key: `0xE5CE8F97E49B8C566DB4B97E61B0D89E6C08ED27D014A26C657D134C0A16199E`
  * Data Source: markets.businessinsider.com/commodities/aluminum-price

<details>

<summary>All keys available on Mainnet and Testnet</summary>

**💎 Precious Metals**

### Gold (XAU/USD)

* **Data Source:** investing.com/currencies/xau-usd
* **Mainnet Key:** `0x1A4CF14646A65ED92B0F79291D4B537D4D634DAF4AE7BDEA7F95E16AFC106676`
* **Testnet Key:** `0x8A8DF5C5476AD99D933701968710B3E18D16864A1D08F10916F09ED75E638DBB`

### Silver (XAG/USD)

* **Data Source:** investing.com/currencies/xag-usd
* **Mainnet Key:** `0xBB2F960A195C867A42E2AA5340AF4B3C62E789C0568FBBCE1925417E0FC62024`
* **Testnet Key:** `0xF6743B90FD9E84F36C8E4D4D44A1642360BEFEBB48804CA013A613447930D311`

### Platinum (XPT/USD)

* **Data Source:** investing.com/currencies/xpt-usd
* **Mainnet Key:** `0x6B3C26B2E54C43133545F29AD5EFA218C33B971ECFA3D416BBE124CCE36E3C23`
* **Testnet Key:** `0x7F37D17D21F56D6F66D6A24DEC201D9E71E687FD4532EADF0B0C5E97C486135B`

**⚡ Energy**

### Brent Oil

* **Data Source:** investing.com/commodities/brent-oil
* **Mainnet Key:** `0x08250CF04C3D466C046942A4C0968A955202155F43CADB5699065CC1CD966BA7`
* **Testnet Key:** `0x694848F20CA37676DF8E14670A53CD521332673EAFEC2F6735D0D3064891BE82`

### Crude Oil (CL1)

* **Data Source:** marketwatch.com/investing/future/cl.1
* **Mainnet Key:** `0x439A675FE33C23051E2204B402F68B3D91A1CAD75671D04508F74336BAF85C58`
* **Testnet Key:** `0x24507204DC7AFD2FE0DE6DE7E2332C2337C21CBC4EFCAF19B76AF78C2875E9A8`

### Natural Gas (NG)

* **Data Source:** investing.com/commodities/natural-gas
* **Mainnet Key:** `0x598B52FA996FB56351A0B86CEFB0D12210D046DA2372044271F3495FC36081C9`
* **Testnet Key:** `0x5AADF097C2159913CAA090D92F4947F7423FBC2404F6F6CDE21382E81B499198`

**🌾 Agricultural**

### Soybeans (S1)

* **Data Source:** marketwatch.com/investing/future/s.1
* **Mainnet Key:** `0xB9A774F78B3BBDD683742DDE0B16358520EDD8AB27E647957C86F8BE64F7714E`
* **Testnet Key:** `0x0580E41830824C4E6A5D33AE323333CAABD928DC86A460AB56BC4C671951ABDE`

### Sugar (SB1)

* **Data Source:** marketwatch.com/investing/future/sb.1
* **Mainnet Key:** `0x54E8C6E777BC98A2524B5796C806D60CF679F095A1E6EF7BD1115386504130AA`
* **Testnet Key:** `0x95EF16A79150121C34CF3CCCF617868B3CB328390645017CC8824184317258F5`

### Wheat

* **Data Source:** markets.businessinsider.com/commodities/wheat-price
* **Mainnet Key:** `0xD44B850488E674DB7B52C7BA53F62952AAA0F7736DDEC400EFC926125E6CE631`
* **Testnet Key:** `0x841CB2F3A7D406F8DA0C35D33EF75B568748D6E16572B5FAFBC9D0EA02903125`

### Milk

* **Data Source:** markets.businessinsider.com/commodities/milk-price
* **Mainnet Key:** `0xC8B9A93B99CAC793A3E9BC0D3F0C148E8BB74C2BA17ACF338AC9B68C4D3245A3`
* **Testnet Key:** `0x4B7629AE8E616818C1BE5893CBD393AC2F03F9C3C826891C7B33F481B65498BE`

### Corn (C1)

* **Data Source:** marketwatch.com/investing/future/c.1
* **Mainnet Key:** `0x1BFEC616411F9068149BDBB93E09A3382BD7CF1DD64087C2233904729DBD22BA`
* **Testnet Key:** `0xF00B0505C993C9E8D602A2F620F38F3C3372A964504EDF087798BB2DE2326810`

### Barley (NBLc1)

* **Data Source:** investing.com/commodities/ncdex-barley-futures
* **Mainnet Key:** `0x750C1DE2A1D628DFDC0D1B03CF4071B7CB7DBC83043DECC61F0297565074CABB`
* **Testnet Key:** `0x39C7337A5313B996E08A34446AB8A6A005830AC1BAED6AD1C529027528223222`
* **Note:** Price converted from INR to USD

### Hard Red Winter Wheat (HRN00)

* **Data Source:** marketwatch.com/investing/future/hrn00
* **Mainnet Key:** `0xB683174E54D13CD5CE8F3775A79CE55ECA20060D76A9FADA1962BFCA2D70E810`
* **Testnet Key:** `0x17FEB2E491F2D704607BD2CE00313564A732091B4844AE7C460532C2F1B1EEF3`

🏭 Industrial Metals

### Copper (XCU)

* **Data Source:** fxempire.com/commodities/copper
* **Mainnet Key:** `0x3C66B438005B1823E9544AC4BCA1BF1F3F70E40F75EBCD0F6E2DB3E968EF46E5`
* **Testnet Key:** `0xEB93D2CB02A06E6CE522A66C58A90300E2A41B1226EED095141AD0B8B759BCF7`

### Aluminum (ALU)

* **Data Source:** markets.businessinsider.com/commodities/aluminum-price
* **Mainnet Key:** `0xC746629AF536F44CA9EB4CEC98D18FE161700538200FABD786095A8D4894E0C2`
* **Testnet Key:** `0xE5CE8F97E49B8C566DB4B97E61B0D89E6C08ED27D014A26C657D134C0A16199E`

</details>

#### Testing the Oracle

You can test the oracle integration using the Neeedle UI:

**Mainnet:** [Neeedle UI Mainnet Link](https://neeedle.org/?abiUrl=https%3A%2F%2Fgithub.com%2Fhorizonx-tech%2Fchainsight-management-oracle%2Fblob%2Fmain%2Fabi%2FIOracle.json\&chainId=994873017\&contractAddress=0x146447574c02deB3B802A1d4c9447CB7648aA56D\&rpcUrl=https%3A%2F%2Fmainnet-rpc.lumia.org)

**Testnet:** [Neeedle UI Testnet Link](https://neeedle.org/?abiUrl=https%3A%2F%2Fgithub.com%2Fhorizonx-tech%2Fchainsight-management-oracle%2Fblob%2Fmain%2Fabi%2FIOracle.json\&chainId=1952959480\&contractAddress=0x146447574c02deB3B802A1d4c9447CB7648aA56D\&rpcUrl=https%3A%2F%2Ftestnet-rpc.lumia.org)

To test:

1. Connect your wallet to the appropriate network (Mainnet or Testnet)
2. Use the `readAsUint256ByKey()` function
3. Input the sender address and commodity key
4. Click "Read" to get the current price

#### Best Practices

1. **Error Handling**: Always implement proper error handling when interacting with the oracle
2. **Gas Optimization**: Cache oracle responses when possible instead of querying frequently
3. **Validation**: Verify returned prices are within expected ranges before using them
4. **Update Frequency**: Consider the update frequency of the price feeds when designing your application

#### Technical Considerations

* Price feeds are updated regularly but may have slight delays
* Check and confirm decimal places for each feed
* Prices are sourced from reliable market data providers
* The oracle contract is non-upgradeable for security

### Support

For technical support or questions about the commodity price oracle:

* Review the contract on [Explorer](https://explorer.lumia.org/address/0x146447574c02deB3B802A1d4c9447CB7648aA56D)
