Open deuszx opened 2 days ago
Couple of ideas how to break down this task (@afck may have more inputs):
Cryptographic compatibility is probably the first thing to look into:
Most likely, external chains only want to consume the events directed to them in a Linera block, so they should not have to process entire blocks. This requires changing the block format and introduce a notion of block headers (basically, a small handcoded Merkle tree).
BCS-deserialization of block headers should be easy enough to write by hand. However, in the long run, we could also invest in code-generation for solidity
We want to make bridges with other chains. While Linera has special features that allow its validators to verify other chains (built-in Oracles), bridges work both ways and other chains will need to verify Linera as well. There are different types of bridges:
Both Guardian-based and ZK-based bridges add a layer of indirection/interpretation on top of Linera blocks/messages and Linera state is not directly verified on chain. For light-client type bridges, smart contracts (on the recipient chains) need to verify:
Block verification
Recipient chains will have to verify Linera's chain of block. They'll need to:
Smart contract state verification
Once the light client is capable of following the Linera chains, specific apps will want to be able to act on Linera Application specific events. The occurrence of the event needs to be cryptographically verifiable.