I am trying to build my own custom bridge between Ethereum and Binance Smart Chain so that people can transfer tokens and possibly some other assets from one chain to another and vice versa. For this purpose I will need three things:

  • smart contract in Ethereum blockchain
  • smart contract in BSC blockchain
  • some kind of oracle to maintain the communication between contracts in different chains

My question is: how to create a decentralized oracle, that can subscribe to events from one chain and cast them to contract in another chain?

I think I can use Chainlink to achieve this, but for now the only way I see is following:

  1. User executes transaction on contract in Ethereum blockchain.
  2. Smart contract emits event in Ethereum blockchain.
  3. My own custom oracle detects that event was emitted and executes transaction to BSC chain in order to notify the BSC contract about the event.
  4. BSC smart contract verifies that this particular event exists in Ethereum blockchain. For this purpose smart contract executes API request to some known provider (like Etherscan) using Chainlink mechanisms.

The thing is: I don't want to rely on any API-s in my bridge (so no Etherscan and alike). I want to rely only on blockchain events and decentralized oracles that can detect and propagate those events. Are there any existing mechanisms I can use for this matter?

1 Answer 1


Sounds similar to what DeBridge Finance did in the last Chainlink Hackathon. Suggest having a read of their docs, and checking out their code for an idea of how they architected a decentralized bridge between multiple chains

  • 2
    As far as I can tell in DeBridge approach I still need to create my own centralized API (or use existing one) for verifying blockchain events (that happened in another blockchain). Correct me if I'm wrong.
    – Alexander
    Commented May 28, 2021 at 10:45
  • 1
    By default, a CL node looks at a single particular network (eg ETH Mainnet, Ropsten etc). What you're describing is for a CL node to look for events on a particular network (eg ETH), but then have a job that submits a tx to another network. This is not currently possible, and you would need to use an API like DeBridge did for now. In the future, perhaps the core CL node will be modified to handle this kind of scenario, but for now it's not possible with the current version of it Commented May 31, 2021 at 4:13
  • Could you confirm you haven't heard so far about fully decentralised solution for this?
    – Gleichmut
    Commented Nov 1, 2023 at 14:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.