ETH Denver Hackathon Guide
Welcome to the ETH Denver Hackathon! This document serves as a guide for integrating Chronicle Oracles into your hackathon projects. Our team is here to assist you.
For any inquiries, feel free to reach out at our booth, join our Discord, or walk up to anyone wearing a Chronicle hoodie
Chronicle Oracle Integration Bountiesβ
Most Innovative Chronicle Oracle Integrationβ
π Reward π:
- π₯ 1st: $2500
- π₯ 2nd: $1500
- π₯ 3rd: $1000
The prize will go to the top three teams with the most innovative integration of Scribe, Chronicle's new Schnorr Oracle. Supported chains include: Ethereum Sepolia, Polygon zkEVM testnet, Gnosis Chain Mainnet, Scroll Sepolia, zkSync Sepolia, and Mantle Testnet; solutions must utilize the Oracle smart contract. The innovation should stem from the use case of the Oracle, i.e., The idea or utility of the project.
Qualification rules:β
Must utilize the Oracle smart contract on one of the supported blockchains
Chronicle Protocol Contractsβ
Scribeβ
Scribe is an extremely gas-efficient Oracle based on aggregated Schnorr signatures. Providing nearly constant gas costs on Layer 2s and on Layer 1s, Scribe boasts of fixed gas costs, leading to substantial savingsβover 60% relative to competing Oracles and an impressive 80% compared to Chainlink. This approach to gas management significantly boosts the scalability of the Oracle.
The Chronicle Scribe Oracle interface is plug-and-play with Chainlink and Maker Oracles, providing a smooth transition for developers used to these platforms.
All data delivered by a Chronicle Oracle on mainnet is verifiable via The Chronicle Dashboard.
Scribe Public Repo: https://github.com/chronicleprotocol/scribe
CASTβ
Cast is a command-line interface (CLI) tool by the Foundry team to streamline your interaction with Ethereum and other EVM-based chains. Whether you're making smart contract calls, sending transactions, or retrieving any chain data, cast can help with that. You can read more here.
Self-Kisser: Permissionless Whitelistingβ
Chronicle safeguards Oracle read functions with a whitelist, ensuring controlled access to critical data. However, the SelfKisser contract unfolds a possibility where you can whitelist yourself (or, as whimsically termed, "kiss") yourself :).
How do you kiss yourself, i.e., msg.sender
?
Run the following command:
$ cast send 0x0dcc19657007713483a5ca76e6a7bbe5f56ea37d "selfKiss(address)()" <oracle address you want you use>
To verify your whitelisted status:
$ cast call <oracle address> "tolled(address)" <your address>
Response:
0x0000000000000000000000000000000000000000000000000000000000000001
A return value of 1 (true)
confirms your whitelisted status.
For more info, see the SelfKisser
repo: https://github.com/chronicleprotocol/self-kisser
Reading Chronicle Oracles through the IChronicle
Interfaceβ
Interacting with the oracle is easy. The read()
function lays it out plain and simple, returning a uint
value representing the data you are trying to get:
$ cast call 0xc8A1F9461115EF3C1E84Da6515A88Ea49CA97660 "read()(uint)"
Response:
1656870000000000045440
For a detailed outline of the interface and additional functionalities, click here
Whitelisting your address via Etherscanβ
To whitelist your address or other addresses for a Chronicle Oracle on Etherscan, follow these steps:
-
Navigate to the Self-kisser contract on Etherscan using the contract address provided: 0x0Dcc19657007713483A5cA76e6A7bbe5f56EA37d
-
Click on the
Contract
tab and then onWrite Contract
. -
You'll have to hit the
Connect to Web3
button to connect your wallet. -
Scroll down to the
selfKiss
function and enter the Oracle address you wish to interact with in theoracle (address)
field. Then, click Write.
That should send you a popup message on your wallet to sign. Once signed, it should take a few seconds for your address to be whitelisted.
Reading from Smart Contractsβ
- Go to the
Read Contract
tab and locate thetolled
function. - Enter your wallet address in the
who (address)
field. - Hit
Query
. The data returned will be displayed below, which should look like this:
[ tolled(address) method Response ]
bool : true
Additional Notesβ
- Ensure you have a sufficient amount of tokens in your wallet to cover gas fees for transactions.
- Ensure your wallet is connected to the correct network corresponding to the contract you are interacting with.
Useful Linksβ
You can view all the smart contract adresses below:π
Smart Contract Addresses on Sepolia network
Smart Contract Addresses on Polygon zkEVM Testnet
Smart Contract Addresses on Gnosis Mainnet
Smart Contract Addresses on Mantle Testnet
Smart Contract Addresses on Scroll Sepolia
Smart Contract Addresses on Zksync Sepolia
General Setup Enquiresβ
-
Foundry Setup:
-
List of Sepolia ETH Faucets:
-
Chainlist RPCs:
-
Create a Test Wallet:
cast new wallet
-
RPC Providers: