Zaki Manian (Tendermint team) & Dean Tribble (Agoric) joined us on Nov 5, 2019 to discuss Cosmos IBC and Game of Zones (GoZ). IBC enables blockchains to exchange value & data. GoZ will test & train operators of IBC with 100,000 ATOMs in rewards, likely beginning in January 2020.
- IBC enables blockchains to exchange value & data
- Game of Zones (GoZ) incentivizes the Cosmos community to learn to operate IBC relayers and test its functionality & security
- Validators, wallet operators, and app developers are likely to participate
- GoZ may begin in Dec, but likely January and last for three weeks
- Each stage of the game will teach & reward different IBC-related operations
- Prizes total 100,000 ATOMs, funded by the ICF, likely judged by Zaki & Dean
- Head to this section to read about how to prepare for GoZ
What we don’t know
- The date that GoZ will begin
- The rules of engagement
- The stages of the game
Related Article: Inter-Blockchain Communication (IBC) is Coming to Cosmos
A Brief Intro to IBC
IBC will enable blockchains to exchange the value of digital assets (tokens) and data with one another, whether they are public or private blockchains. Transaction fees will incentivize the Cosmos Hub, for example, for securely exchanging value and data between two different blockchains.
If two chains are sovereign, how can tokens from one be transferred to another? Chain A locks the tokens and relays proof to Chain B. Once verified, Chain B mints its own representative tokens (sort of like vouchers), which can later be destroyed to unlock the original tokens on Chain A. So the value that tokens represent can be transferred across chains, but the token itself cannot. I lifted this paragraph from my first article on IBC, and if you haven’t checked that out, you can do that here.
Can IBC interoperability put chains at risk? No, chains will remain sovereign, and IBC is designed to never require a rollback. We can expect the option of non-sovereign chains in the future with IBC, but the core goal here is sovereign interoperability.
Will IBC introduce new node roles beyond the validator?
Relayers will operate IBC and we expect relayers to be operated by validators initially. They have a direct incentive to make the packets flow, since validators will be rewarded by the transaction fees that fund the exchange of data and value across blockchains–transactions secured by the Cosmos Hub. And according to Zaki, the distributed systems problems are less complicated if relayers are run by wallets and validators.
Eventually we’ll see application protocol clients, as app developers operate their application protocol above the “TAO layer” of IBC: the Transport, Authorization, and Ordering layer.
How does slashing work with IBC? IBC is designed to be agnostic to slashing, since it’s both protocol-neutral and chain-neutral. Application protocols built upon IBC, however, can support cross-chain slashing behaviors. Zaki mentioned that there is a new “x/evidence module that adds some new slashing conditions,” mostly “counterfactual slashing” and other attacks on light clients.
According to Zaki, attacks on light clients (rather than network faults) aren’t really slashable right now, but they must be in order to secure IBC. How would slashing attacks on light clients work? “If a fault gets recorded in Chain B’s light client, it can be reported slashed on Chain A.”
Game of Zones:
An incentivized testing ground for IBC
Zaki Manian was one of the lead architects of Game of Stakes (GoS), the Cosmos adversarial testnet, which I regard as having been a fairly big success in its ability to recruit for and prepare the validator set. So what learnings will Dean and Zaki bring to its successor, Game of Zones (GoZ)?
Zaki found that the biggest thing they learned from Game of Stakes was that incentivized testnets are huge opportunities to improve operator competence. While part of GoS was building a validator community, GoZ is more about teaching a new conceptual framework to an existing community.
This training will be important because IBC is going to require new forms of expertise, like tracking the security of origin chains and relaying packets. The goal of Game of Zones (GoZ) will be to train the first set of experienced operators of the protocol who will become familiar with this new abstraction.
This time, however, rather than being one big competition, GoZ will focus on one kind of challenge at a time. GoZ will have independent stages, each with their associated prizes. Beyond training operators, these stages will provide data points and observations about how protocol faults play out in real-world approximations, such as double-spends from malicious blockchains.
Who will participate?
The player set will be some combination of validators, wallet operators, and app developers. Since the first objective is to ensure that chains interoperate, validators will be critical for standing up zones (blockchains) that engage in the protocols, according to Dean. Zaki mentioned that standing up a zone can be done on a single server.
Zaki doesn’t expect existing zones to participate as a unit in GoZ, and Dean told us that individual validators can participate directly without any particular coordination with the rest of their zone. He expects that some validators will participate with different zone variants in order to ensure interoperability between the different zones that they operate. There will also be some challenges specific to app developers.
GoZ is expected to last three weeks. Can the competition be expanded to test new things as the need arises? Unlikely, since the minimum viable product (MVP) is fairly set.
The rules and requirements have not yet been posted, but we can expect them in the next few weeks. The rules will be posted on the webpage, and I will update this article when they become available.
Each stage will focus on a different area, in order to teach different things. Here are some examples:
- Interoperability – there can be more surprises for interoperability than just testing a distributed system. What does it take to make two consensus systems communicate?
- Hostile fuzzing – are there ways that a chain can be confused about another’s state, thus preventing interoperability?
- Economic attack – can a chain be confused about who has what pegged tokens?
To test and teach operators about interoperability, here’s what the phases of Stage 1 could look like:
- Spin up a chain;
- Open a connection between the chain and a central hub;
- Compete to send the greatest number of packets to the hub within 24 hours;
- Create connections with artificially short timeouts. How long can you keep a connection from timing out?
We can expect a few different roles. Primarily we’ll see challenges involving validators running relayers to connect chains, with value and data being transferred across chains, and wallet operators supporting value transfer. App developers will likely be building a malicious bank module, for example.
There are going to be winners for each stage, and multiple prizes for each stage. The prizes will total 100,000 ATOMs. Zaki and Dean will likely be the judges, with funding coming from the Interchain Foundation (ICF).
The metrics by which prize-winners will be selected will be published on the GoZ webpage.
Anyone can participate, and we don’t expect an upper limit on the number of participants, since there’s no advantage to Sibyl attacks. Winners, however, will need to pass KYC (know your customer) compliance checks with the ICF in order to claim their prizes.
Preparing for GoZ
How should potential participants prepare for GoZ?
Dean recommends a few things:
– get the code (this branch)
– run the demo yourself & practice sending IBC transactions between testnets
– read the specs, at least the IBC architecture parts
– start to integrate your zone with the IBC branch (if you have zone-specific code)
Zaki recommends 1) Pick a chain-id and cosmos address for your team; 2) Keep up with the IBC alpha branch and 3) start thinking about potential malicious bank module build designs. Regarding #3, you’ll likely want to be familiar with the with the IBC branches of the Cosmos SDK.
Comprehensive IBC technical information can be found in the Interchain Standards repo (more than what you’ll need to participate). I know that Jack Zampolin is currently leading an IBC testnet, so consider reaching out to him on Twitter or Telegram to join. This is the URL for the canonical IBC alpha branch: https://github.com/cosmos/cosmos-sdk/pull/5277
Stay tuned for the second part of this article, The Future of IBC!
Special thanks to Zaki and Dean for spending an hour with Staking Hub to answer our many questions. Thank you to Andrew Cronk for co-hosting.
Thanks to our Staking Hub community for the thoughtful and impactful questions that inspired high-quality answers. Since you’ve read this far, you might as well join us over in the Staking Hub Telegram channel
Hopefully you found this useful. Feedback is always welcome! I’m on Twitter.