-
Notifications
You must be signed in to change notification settings - Fork 134
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Chronicle to Oracles list (#685)
* Add Chronicle to Oracles list * Add link for support
- Loading branch information
1 parent
7bf33f0
commit 3867703
Showing
1 changed file
with
88 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
--- | ||
title: Chronicle | ||
description: Chronicle enables access to decentralized, scalable, and cost-efficient Oracles. | ||
keywords: [chronicle, oracle, data feeds, price feeds] | ||
--- | ||
|
||
# Chronicle | ||
|
||
[Chronicle Protocol](https://chroniclelabs.org/) is a novel Oracle solution that has exclusively secured over $10B in assets for MakerDAO and its ecosystem since 2017. Chronicle overcomes the current limitations of transferring data on-chain by developing scalable, cost-efficient, decentralized, and verifiable Oracles, rewriting the rulebook on data transparency and accessibility. | ||
|
||
### Querying the price of GNO using Chronicle | ||
Chronicle contracts are read-protected by a whitelist, meaning you won't be able to read them on-chain without your address being added to the whitelist. On the Testnet, users can add themselves to the whitelist through the SelfKisser contract, a process playfully referred to as "kissing" themselves. For access to production Oracles on the Mainnet, please open a support ticket on [Discord](https://discord.com/invite/CjgvJ9EspJ) in the 🆘|support channel. | ||
|
||
For the deployment addresses, please check out the [Dashboard](https://chroniclelabs.org/dashboard/oracles). | ||
```solidity | ||
// SPDX-License-Identifier: MIT | ||
pragma solidity ^0.8.16; | ||
/** | ||
* @title OracleReader | ||
* @notice A simple contract to read from Chronicle oracles | ||
* @dev To see the full repository, visit https://github.com/chronicleprotocol/OracleReader-Example. | ||
* @dev Addresses in this contract are hardcoded for Gnosis. | ||
* For other supported networks, check the https://chroniclelabs.org/dashboard/oracles. | ||
*/ | ||
contract OracleReader { | ||
/** | ||
* @notice The Chronicle oracle to read from. | ||
* GNO/USD - Chronicle_GNO_USD_2 - 0xBcC6BFFde7888A3008f17c88D5a5e5F0D7462cf9 | ||
* Network: Gnosis | ||
*/ | ||
IChronicle public chronicle = IChronicle(address(0xBcC6BFFde7888A3008f17c88D5a5e5F0D7462cf9)); | ||
/** | ||
* @notice The SelfKisser granting access to Chronicle oracles. | ||
* SelfKisser_1:0x0Dcc19657007713483A5cA76e6A7bbe5f56EA37d | ||
* Network: Gnosis | ||
*/ | ||
ISelfKisser public selfKisser = ISelfKisser(address(0x0Dcc19657007713483A5cA76e6A7bbe5f56EA37d)); | ||
constructor() { | ||
// Note to add address(this) to chronicle oracle's whitelist. | ||
// This allows the contract to read from the chronicle oracle. | ||
selfKisser.selfKiss(address(chronicle)); | ||
} | ||
/** | ||
* @notice Function to read the latest data from the Chronicle oracle. | ||
* @return val The current value returned by the oracle. | ||
* @return age The timestamp of the last update from the oracle. | ||
*/ | ||
function read() external view returns (uint256 val, uint256 age) { | ||
(val, age) = chronicle.readWithAge(); | ||
} | ||
} | ||
// Copied from [chronicle-std](https://github.com/chronicleprotocol/chronicle-std/blob/main/src/IChronicle.sol). | ||
interface IChronicle { | ||
/** | ||
* @notice Returns the oracle's current value. | ||
* @dev Reverts if no value set. | ||
* @return value The oracle's current value. | ||
*/ | ||
function read() external view returns (uint256 value); | ||
/** | ||
* @notice Returns the oracle's current value and its age. | ||
* @dev Reverts if no value set. | ||
* @return value The oracle's current value using 18 decimals places. | ||
* @return age The value's age as a Unix Timestamp . | ||
* */ | ||
function readWithAge() external view returns (uint256 value, uint256 age); | ||
} | ||
// Copied from [self-kisser](https://github.com/chronicleprotocol/self-kisser/blob/main/src/ISelfKisser.sol). | ||
interface ISelfKisser { | ||
/// @notice Kisses caller on oracle `oracle`. | ||
function selfKiss(address oracle) external; | ||
} | ||
``` | ||
### More examples | ||
For more examples on integrating Chronicle Oracles, please check the [documentation portal](https://docs.chroniclelabs.org/). | ||
|
||
### Get in touch | ||
|
||
If you have any questions or need support, drop us a message on [Discord](https://discord.com/invite/CjgvJ9EspJ). | ||
|