Skip to content

The Relink Protocol provides a trustless way to integrate the bluechip oracle provider Chainlink into your network.

Notifications You must be signed in to change notification settings

RelinkServices/relink-contracts-rust-soroban

Repository files navigation

Relink - Trustless Chainlink Relaying Service

Relink empowers new blockchains, or those with less focus, to access established services on the major chains.

Chainlink itself supports only a few chains at all. At the same time, the speed at which new chains are deployed is constantly increasing. Be it as L2s or even L3s or as another competitive L1s.

Relink has developed a proxy service solution that forwards the random data request to an officially from Chainlink supported chain and processes the result accordingly.

A Relink oracle network signs the data generated by Chainlink and passes the original data along with the signatures to the callback method. The signature checks in the consumer base contract mean that no data can be changed on the way from the relaying backend.

Contract Ids

Relink Proxy Addresses:

  • Soroban Mainnet: not yet available
  • Soroban Testnet: not yet available
  • Soroban Futurenet: CB62TWCGJ4QPPG7DCM6MNCKPX6QVVNFDBOSDXROPL6XR2ZJ7BCSGNGFD

Getting started

Setup Soroban: https://soroban.stellar.org/docs/getting-started/setup

soroban contract build

Build optimized wasm binaries

./build.sh

Run tests

cargo test

Generate TypeScript bindings

soroban contract bindings typescript \
  --network futurenet \
  --output-dir bindings/relink-vrf-direct-funding-proxy-client \
  --contract-id CB62TWCGJ4QPPG7DCM6MNCKPX6QVVNFDBOSDXROPL6XR2ZJ7BCSGNGFD \
  --wasm target/wasm32-unknown-unknown/release/relink_vrf_direct_funding_proxy.wasm

Test on local node

Locally run a standalone node

docker run --rm -it --platform linux/amd64 -p 8000:8000 --name stellar stellar/quickstart:soroban-dev --standalone --enable-soroban-rpc

Make sure the following Soroban identities exist:

  • alice is used for all deployments and will be the owner of the proxy contract
  • backend is automatically whitelisted on the proxy contract
  • bob is used to call the consumer contract

To generate and fund an identity this can be used:

soroban config identity generate alice
curl "http://localhost:8000/friendbot?addr=$(soroban config identity address alice)"

Run build and deployment script and source the results:

./build.sh
./deploy.sh --network standalone --source alice > .soroban/standalone.env
source .soroban/standalone.env

Request randomness and note the RequestId:

./request.sh --network standalone --source bob
["ce2cd94dbccd8fab617893437c996b8d551c18482b494a1081888a3909ba5a93"]
randomness requested

To execute the response update the RequestId in response.sh and call:

./response.sh --network standalone --source backend

Read the contracts balance:

soroban contract invoke --id $TOKEN_ADDRESS --source alice --network standalone -- balance --id $PROXY_ADDRESS

Note: This test does not provide oracle signatures and sets the oracle signature threshold on the proxy to zero, effectively disabling the signature verification.

To deploy additional consumers this script can be used:

./deploy-consumer.sh --network standalone --source someone

About

The Relink Protocol provides a trustless way to integrate the bluechip oracle provider Chainlink into your network.

Topics

Resources

Stars

Watchers

Forks