Unified Polling: Testing BetaNet on AlphaNet

The xx network teams are working hard to get BetaNet ready for deployment in the next few months. We have completed and will be deploying to the AlphaNet one of the hardest sub-projects of the BetaNet process: Unified Polling.

Unified Polling exemplifies our approach to building something as complex as the xx network, which is well characterized by Gall’s law:

A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work.

Essentially, the xx network isn’t built by getting it right on the first try, but in small pieces and iteration. This approach has resulted in one of, if not the most stable AlphaNets ever made.

With BetaNet, we can look back at what we have built and look forward to what we will build. We are able to plan integration between xx consensus and cMix and fully understand what complexity is unnecessary in what we have already built.

The Unified Polling project has solidified our network stack and communications hierarchy, unified and simplified interactions between layers, and has overhauled the networks core state machines to be simpler and ready for consensus. The name “Unified Polling” refers to the core change to the network, the solidification of a communications pattern where every level polls the one above it for overall state changes in the network, and the technical process of unifying those communications.

Clients poll gateways for new blocks and messages, gateways poll servers for the same. Currently, servers then poll the centralized permissioning server for membership and operations information. That responsibility will very soon be filled by the xx consensus mechanism being built by the Praxxis Technical Team.

Next week, we will be deploying Unified Polling as the last major update to AlphaNet. By deploying Unified Polling, we will increase the likelihood of a smooth and painless BetaNet launch. The primary purpose of the AlphaNet is to allow testing on a live network, as there is no more effective way to learn how anything really functions and works until you see it actually function and work. The AlphaNet and the xx messenger (which drives realtime usage of the network) have allowed for rapid deployments to test and iterate on fixes and accommodations for live conditions as well as the fundamental human element. All of which is core to efficiently moving toward MainNet.

Unfortunately, the other two Elixxir BetaNet projects, GPU integration (nearly complete) and teaming*(well on its way), are fundamentally incompatible with AlphaNet due to its lack of GPUs and small number of nodes, which is why we have built the NodeLab to test them.

This is the beginning of an end; with this deployment we start to close the AlphaNet chapter of the xx network, and we begin the next. BetaNet represents a new level of maturity where the xx network is driven by true community engagement and the participation of publicly run nodes. If you would like to participate, please join the BetaNet Forum where you can join the discussion or the xx network discord, where we regularly involve the community in testing and discussion.

*Teaming is the process of randomly and ephemerally grouping nodes to process cMix batches. Details can be found in the Elixxir Architecture Brief.