This is something that's been on my "super very nice to have" list for quite some time & as I've been meeting heavy for the past few days I thought I'd throw the problem at the #flexathon code base ...

@elonmusk this is for you buddy!
#blockchain #crypto #defi #dlt
I set up 2 disjoint networks that are independent yet know about each other. Same genesis on each network, but with a different "magic" that acts as it's ID

State hashes are prefixed with the network ID for routing.

Most of the #cerberus code stays the same ...
The principles are the same as a regular non-interplanetary network. I'm looking for a 2/3rds vote majority in all shards before committing.

I also built in a bunch of latency on messages that pass between the two networks to simulate Earth <> Mars comms (~14 mins).
Aside from the latency & the routing, the network acts in the same way.

Assume that I'm on Earth & I wanna send some funds to Mars.

My funds live in shard E10 & I'm sending them to shard M20. (E = Earth, M = Mars)
The Earth nodes know that the Mars network exists & that my funds are being sent there. So they send the transaction to Mars, where nodes pick it up.

Both E & M nodes then do the usual #cerberus voting to produce a certificate with a yes/no decision.
The E nodes communicate those certificates to the M nodes and vice versa.

If both certificates are of a 2/3rds yes decision, both sides commit. If not, both sides fail.
"Local" transactions that don't leave the planet (lol that sounds so absurd) work in the same way, except of course there is a LOT less latency.
This was a super crude & quick test so I'm probably missing a bunch of edge cases, but I wanted to test #cerberus principles in a very high latency environment. Mimicking an Earth->Mars transaction seemed a fun way to do it :-)

I'll certainly be looking more at this though!
You can follow @fuserleer.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: