Dare: 6th June, 2021
To add comments for authors, read this whitepaper here
Blockchains of today are data silos that do not talk to each other. Applications on one blockchain cannot work with applications on another blockchain. This reduces liquidity and hinders the growth of the ecosystem. We present a generalized approach that makes these blockchains interoperable, through the use of special smart contracts called “smart ports” which keep a track record of the value transferred to other blockchains. We also present Electron chain, a PoS based blockchain that makes a ledger of the transferred value, and ensures security, atomicity and finality.
All blockchains today, Ethereum, Bitcoin, Solana, Algorand, COSMOS, and many more are essentially data silos independent of one other. An application built on one blockchain cannot talk to an application built on another blockchain. Not only is this against the fundamental principles of an open ecosystem, this leads to further problems discussed next.
This restricts liquidity which in turn reduces the impact a smart contract application can generate. It also eliminates the possibility for many potential use cases. Furthermore, it becomes harder for new blockchains to come up as they have to compete for liquidity and developer interest against the larger blockchains. In fact, at this time, it seems that only 5–6 blockchains will eventually become large. For a healthy ecosystem, we believe at least 30 medium to large blockchains should exist.
If a new blockchain could be interoperable with all other blockchains right from the get go, it would be game changing. Smaller projects would have access to much more liquidity, and Defi applications on new chains could gain prominence much faster.
We, therefore, believe that there is a very fundamental need for interoperability to exist between blockchains.
With interoperability, a user would be able to take their Solana and bring it to Ethereum blockchain, and deposit it in Compound protocol to earn interest. As a trader, one would be able to borrow across all blockchains.
Interoperability is also great for user experience. If many blockchains were to proliferate, users would be expected to maintain several metamask-like applications, one for each blockchain. With Electron one shall be able to keep all their tokens across all blockchains in a single metamask-like chrome extension. One could choose to store them in metamask, Solan’s equivalent of metask, or something entirely custom built.
We are currently aware that Cosmos and Polkadot are working in this direction. In fact, parts of the solution we propose are inspired by Polkadot, and our core engine is the same as Cosmos i.e. tendermint core.
However, a careful analysis of both these projects reveal that these protocols are interoperable with only those blockchains that are built natively on these protocols. Polkadot would only be interoperable with those blockchains that exist as it’s parchains, which requires blockchains to surrender their consensus algo to Polkadot’s core chain (relay chain). For Cosmos too, only those that are built on Cosmos Hub are interoperable with each other. In fact, even though we are built on tendermint, it does not make us natively compatible with Cosmos.
We present a more generalized approach to interoperability, where all blockchains independent of their consensus engine or model will be able to interoperate with us, and by extension interoperate with all blockchains linked to us. Our approach, however, does require that these blockchains support smart contract functionality.
Consider two blockchains B1 and B2. Both these blockchains support smart contracts and may be PoW or PoS. By interoperability we mean that, state changes on B1 should trigger state changes on B2, and similarly, state changes on B2 should trigger state changes on B1.
Formal Definition for the Math-savvy:-
Blockchains are essentially state transitions machines and a blockchain B1 may be completely represented by its state variables B1.var(i) where i ϵ (1,n) and similarly another blockchain B2 may be represented by B2.var(j) where j ϵ (1,m)
By interoperability we mean,
B2.var(j) = someUserDefinedFunction ( B1.var(i) )
for certain specified i and j
Due to lack of block production syncing between blockchains and non-zero finality times on each blockchain, it is okay if the changes in B2.var(j) are only reflected after some time has passed since B1.var(i) changed.
Electron’s Proposed Solution
Our solution consists of following parts:
- Smart Ports: We deploy one smart contract on each of the two blockchains that want to interoperate with each other. We call these smart contracts as “smart ports” as they act as a port to another blockchain.
- Electron Blockchain: Electron blockchain reads state changes on one smart port and makes the necessary changes on the corresponding smart port. Electron blockchain ensures security, atomicity and finality.
Let’s dive deeper.
Smart Ports and Cross Chain Porting
Consider when a user wants to move 10 ether from Ethereum blockchain to Solana. The steps are:
- Send 10 ether from your externally owned account (EOA) to a smart port. A smart port is a smart contract deployed on the ethereum blockchain. In this transaction, which is a function call, you should also specify the address on Solana on which you want to receive this ether.
- Electron magic happens… (described in next section)
- SPL tokens* for ether, called sETHER are created and issued to the Solana address specified earlier. A total of 10 sETHER are created. (* SPL is Solana’s equivalent of ERC-20)
- These sETHER can now be used across the Solana blockchain
- An user on Solana might want to take 5 sETH back to ethereum.
- For this, they send their 5 sETH to the smart port on the Solana blockchain. They also specify the ethereum address where they want to receive the ether.
- Electron magic happens…
- Out of the 10 ether locked in the ethereum smart port, 5 ether are unlocked and sent to the specified address.
In the following sections, we will discuss how the electron magic happens and how we ensure that the porting contracts on Ethereum and Solana are able to talk to each other, in a trustless manner.
Two independent blockchains like Ethereum and Solana do not talk to each other natively. Their blockchain are seperate. At code level, this means that the smart contracts on Ethereum cannot read Solana blockchain’s data, and vice versa.
Hence, we need a system that can read one blockchain’s data and make it available on another blockchain in a trustless manner. That’s where the Electron Chain comes in the picture.
Electron Chain is a PoS based blockchain built on tendermint core. Consider the above example when 10 ether needs to be sent from Ethereum to Solana.
Electron validators have the following responsibilities:
- Read data from the ethereum blockchain. They should listen to events on the smart port contract on ethereum
- When an event is registered on Ethereum smart port that 10 ether needs to be sent to Solana, the electron validators must create a transaction that contains a function call for Solana smart port contract.
- This function call will create 10 sETHER and send them to the requested address.
— — This whitepaper is under active development. In the next version of this whitepaper, we will discuss the following — -
- Technical details of the protocol and code level discussion
- Explain the security of the electron blockchain and how future solutions will also use the security provided by blockchains that are interoperting through Electron.
- Discuss alternative approaches that are IPFS based and proof-of-state-change based, explain their limitations, and what it would take for them to be completely ready.
- Explain whether these solutions are to be used only in case of withdrawals or whether they can replace the need to have a blockchain itself.
As of 6th June, 2021, the development of the electron protocol has started.