# Overview

## Philosophy

In recent years, several projects have proven excellent basic services and have been widely accepted by dapp developers. However, in the same time the amount of available networks has grown very much, so that these providers can serve only a part of the existing networks.

We believe that superb services should be available on as many chains as possible. And we also believe in the decentralized approach and that the community should be empowered to integrate beloved services permissionless into their own networks.

Every Dapp developer should have access to blue-chip data providers and not have to compromise with second-rate services just because their preferred services are not available.

## How Relink Protocol Achieve This Vision

Relink Protocol provides a relaying service by providing base contracts that has implemented a similar interface as the original base consumer contract. The relaying service forwards the request to an officially supported chain and as soon as the results arrive, the result is played back to the target network along with signatures from the Relink Oracle network.&#x20;

These signatures are checked by the dapp contract so that malicious behavior of the relaying service would be detected and the callback call would fail.

## Components & Flow

<div data-full-width="true"><figure><img src="https://2339428361-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2For2H9qX7SI62hF5IwPM4%2Fuploads%2Fai39Gs7JtNQJUcOsAJSr%2FRelink%20Architecture.png?alt=media&#x26;token=33bfb189-79dd-419f-9935-0cb45407b894" alt=""><figcaption></figcaption></figure></div>

1. The **dapp** calls the **requestXxx** method provided by the **RelinkXyzConsumerBase** contract. An internal call to the **RelinkXyzProxy** contract is initiated.
2. The **RelinkXyzProxy** emits an event that is recognized and processed by the Relaying Service backend.
3. The Relaying Service backend invokes the **RelinkXyzProducer** contract on Polygon.
4. The **RelinkXyzProducer** implements the **ChainlinkXyzConsumerBase** contract and can initiate a data request from Chainlink.
5. Chainlink calls the callback method provided by **RelinkXyzProducer** and passes the requested data.
6. **RelinkXyzProducer** emits an event that is recognized and processed by the Relaying Service backend.
7. The Relaying Service backend calls oracle nodes to extract the data from the emitted event and create a signature for the data.
8. The Relaying Service backend calls the callback method provided by the **RelinkXyzProxy** and passes the requested data along with the signatures.
9. The **RelinkXyzProxy** forwards the call to the **dapp** that initiated the data request.
