Gossamer Update: September 2020

Gossamer Update: September 2020

Authored by Edward Mack

Since we published our last blog post, Gossamer Update: August 2020, we've continued making progress towards our goal of completing implementation of the Polkadot Host.

For those who are unfamiliar, Gossamer is an implementation of the Polkadot Host, formerly known as the Polkadot Runtime Environment. To learn more about what exactly that is, watch our introductory talk from DotCon during Berlin Blockchain Week.

The main focus of the Gossamer team has been on completing the implementation of requirements outlined in the Polkadot Host Protocol Specification. Implementation of this specification helps to insure that the Gossamer node will be able to interact with other nodes that also implement this specification. This sets the groundwork for our ultimate goal of fully interacting with other Polkadot nodes

Updates

Features that received attention this month include:

  • Consensus Catch Up process, the process that is followed when a Polkadot node joins or re-joins the network. We've implemented algorithms for GRANDPA as outlined in the spec (Polkadot Host Protocol Specification, Section 6.4.1) that define how catch-up requests are generated and processed.

  • Updates to how BABE and GRANDPA handle authority data, and handling of Block Verification and GRANDPA messages. These updates enhance the syncing process to bring the node more in congruence with the Polkadot specification.

  • Implemented managing multiple variants of state, which is necessary for nodes participating in block production and finalization. This involves keeping multiple versions on the state trie for each block that is currently unfinalized. Details for this are outlined in the Polkadot Host Protocol Specification, Section 3.3.3 and 3.1.2.4

  • Creation of separate keystores for different key types depending on it's use-case. Different use-cases include: Babe functionality, GRANDPA functionality, controlling an account, and testing functionality.

  • Implementing WASM external functions necessary for runtime version 0.6. These functions are implemented by the host to be executed by the runtime as needed.

  • There has also been routine code maintenance and bug fixes, including adding Flush function to the Writer interface of the chaindb package.

  • We are continuing to work toward a resolution of the bug discovered in the WASM interpreter that we're using.

Next Steps

As we near completion of implementing the remaining parts of the Polkadot Host Protocol Specification, and implementation of version 0.6 of the runtime, we look forward to stress testing the node and interacting with the Alexander testnet. Looking ahead, we'll start implementation of version 0.7 for the runtime which will interact with the Kusama network. We'll also start implementation for the Polkadot.js API which will further enable interaction with the node via Javascript.

Contributions

This is an open source project, so we're open and eager to hear from you. You can reach us on Discord, or check out our progress on github. Or better yet, why not contribute directly to this project. The git repository outlines steps for getting started.