SCF #14
Community Vote
Chainlink Oracles Relayer

Trustless Proxy Solution for Chainlink Oracle data on Stellar

Awarded
Awarded
Budget request:
$
38,400
*
WebsiteCode

Project Stage

Development

Category

Tools
Gaming & NFTs
Soroban

Based in

Germany

Team size

2

Active since

April, 2020
Products & Services

Oracles (Random Numbers are just one case, but the most important ones) are needed for any kind of project using NFTs. If you don’t have that, you won’t be able to launch an NFT drop or find out who should get what NFT from a collection. It is necessary for nearly every game that wants to prove randomness in its internal processes.


VRF stands for Verifiable Random Function. It is used to provide genuinely random data for a smart contract because this kind of data is not available in smart-contracts themselves.


Our trustless VRF proxy solution relays this service to a not yet supported blockchain and also provides a way to verify the correctness of the randomness provided.


For this purpose, we provide a way to integrate the bluechip oracle provider "Chainlink'' into your own network in a trustless way. If desired, we can also connect another oracle provider instead of Chainlink.

Developers can make use of it for their own needs (Raffles, pick NFTs details on reveal, Lottery services, Battles with randomness (e.g. effect of an attack), etc.).


A dapp developer has to implement the interface of the Chainlink Oracle proxy contract. Which means calling a function in the proxy contract and providing a callback function.

No items found.
Previous Project(s)
No items found.
Progress so far
Goals
To get there, we request a budget of  
$
38,400
*
  to:
Additional information

The basic idea of the system is the following:

Proxy Contract:

We deploy a proxy contract on Stellar, which all dApp developers can use. A random data request can be initiated, and the proxy contract emits a specific event.

Relayer:

A relaying service then processes this event, and this service calls the Chainlink VRF implementation on Fantom. Another event is then emitted after Chainlink calls the callback function. The relaying service recognizes the emitted event, which includes the random data provided.

Oracles:

The relayer asks an oracle network to provide a signature for the random data response in a transaction with a specific hash (from the recognized event). The oracles fetch the on-chain data and create a signature for that data.

Verify: The relayer will use the proxy callback function and pass the oracle signatures along with the random data the signatures were created for. The proxy contract does an on-chain signature verification and, once passed, triggers the dApp contract itself. Thus the relaying service is not able to modify any data, and the whole process is on-chain verifiable.

We will build these components.

Pitch deck
No items found.
Deliverables
First Deliverable

The deliverables that have been reached include:

  • Development of a Chainlink consumer contract on Fantom, serving as a producer contract for contracts on Stellar/Soroban.
  • Implementation of the "VRFV2WrapperConsumerBase" contract and the "fulfillRandomWords" function that emits an event with relevant data.
  • Integration of the "requestRandomWords" method that handles the LINK token fee and initiates the Chainlink VRF call.
  • Creation of basic unit tests and contract deployment on both the Fantom Testnet and Fantom Mainnet.
  • Verification of the contracts on both networks to allow interaction and code viewing in the explorer.

How can a reviewer check you completed your first deliverable?

We finished the first deliverable package on Testnet to avoid costs at this stage of development for us as well as for the community members who want to test it:

Step-by-Step Guide to Request Random Words on Fantom Testnet:

Prerequisites:

Steps:

  1. Go to https://testnet.ftmscan.com/address/0x21B4B585e7E6FFe594e60867830Abc32e70E8EBF#writeContract
  2. Connect your Fantom wallet to the website.
  3. Scroll down to the "3. requestRandomWords" function and click on it.
  4. Enter a value for the "chainId" parameter. This value is not relevant for testing purposes.
  5. Enter a value for the "extRequestId" parameter. This value is not relevant for testing purposes.
  6. Each combination of "chainId" and "extRequestId" can only be used once.
  7. Enter a value for the "numWords" parameter. This value should be between 1 and 10.
  8. Click on the "Write" button to submit the transaction.
  9. Confirm the transaction in your Fantom wallet.
  10. Wait for the transaction to be confirmed. You can check the transaction status on the website or in your Fantom wallet.
  11. Check the results of the transaction on https://testnet.ftmscan.com/address/0x21b4b585e7e6ffe594e60867830abc32e70e8ebf#events. The "WordsRequested" event will show the number of requested words and the transaction hash.
Links:
Rocknitive GmbH

Software & IOT Service company. Focussed on Web3 infrastructure and onboarding of Web2 companies.

Team

Christian Eichinger (ceichinger#6221)

Co-Founder

Christian is a passionated web3 engineer since early 2017 and has experience in cross-chain applications.


Mike Lohmann (mikelohmann#5278)

Co-Founder & CEO

Mike has more than 20 years experience in software engineering and entered the web3 space a few years ago.

Our team is set up for success because:

  • Strong tech knowledge
  • Web3 plebs themself
  • Bridging a service from one of the most successful EVM crypto projects
  • Well connected in web3 space