Interoperability with Harmony


#1

Forewarning: I am not an engineer. My apologies for any misunderstandings of the Harmony protocol.

Preamble
Having read through some of the Omniledger documentation, I wanted to know Harmony’s take on the topic of interoperability. With projects like Cosmos and Aion so deeply focused on the subject, if Harmony is looking to build scalability and growth into their platform, these topics seem imperative to explore on a public forum.

Current Methods
Cosmos is utilizing IBC for their native Tendermint chains, and implementing the 'Peg-zone’ method for external chains. It appears that the peg-zone method is problematic as it requires completely custom-built bridges on a per-chain basis. For those curious, the most notable peg-zone implementation is the Ethereum-Cosmos bridge, Peggy. However, there has to be a more streamlined way to do this. I’m also not sure of how common this approach is at the moment. If anyone can chime in on this it would be greatly appreciated!

Harmony’s Method
Obviously I’m doing a bit of guessing to open the discussion, but does Omniledger’s internal Atomix permit bridging to outside chains? Or is it limited to sharding of a specific protocol?

Furthermore, would creating an additional beacon chain to communicate with other protocols make sense? I would guess this method would not take into account the vast differences in models between protocols and most likely be a dead end?

I’m very curious to hear about Harmony’s approach and if this is documented already. Or, if Harmony is taking a completely novel direction with interoperability.


#2

Hi, Satoshi.

Thanks for the good topic.

Harmony’s current design doesn’t consider cross-chain communication as top priority. We focus on the within-network cross-shard communication, which we will use the mechanism of receipt proof to achieve. We will not use Omniledger’s Atomic commit because it involves heavy reliance on the client, which makes light client impossible. Our approach for cross-shard communication is a shard-driven approach which makes the complex cross-shard process hidden from the client. We will adopt the best networking technology such as RaptorQ fountain code to make the cross-shard communication as efficient as possible, as network load is a major bottleneck for most blockchains.

Harmony is focused on designing a scalable blockchain itself now and hasn’t worried too much about cross-chain interoperability as other projects like Cosmos, Polkadot or InterLedger are more focused on that. We will integrate with those projects if necessary in the future.

Rongjian


#3

Rongjian,

That makes a lot of sense to keep Atomic out if it’s so resource heavy for the client. I wasn’t aware of its limitations and complexities.

I’m also a big fan of saying “hey, if someone else is doing it really well, let’s take a look at how they’re doing it.” Cosmos does seem like a great reference point, but I’m sure Harmony has thought of potential solutions.

It seems I also have to do some more reading on RaptorQ…

Thanks,
Kató


#4

Hey @satoshi, very happy to see your curiosity in our cross-shard transaction method! This is a crucial component to achieving our goal of full and secure sharding. As @rongjian explained, Atomix proposes a useful method of creating proofs of lock in one shard before migrating funds to another shard. However, its reliance on the client to drive the cross-shard communication is untenable in practice as it places an unrealistic burden of coordination on the user.

Our method is similar to Atomix but the client does not drive the cross-shard communication. Instead the message is routed by the validators themselves. In addition to RaptorQ, which is an essential component of our networking stack, we use kademlia routing to exchange messages between shards to avoid a network-wide broadcast which would quickly saturate available bandwidth. Kademlia routing ensures O(log n) message complexity for cross shard communication, which is far more scalable.

Here’s an image of a kademlia routing table. If you’re curious to learn more I encourage you to read the “routing tables” section of the wikipedia article and/or start a new thread and tag me! It would be fun to explain and discuss.


#5

Thank you for opening this up again, I will take a read and open a new thread.