Anoma Research & Development Update: October 2021

Alexander Miles
Anoma | Intent-centric Architecture
4 min readNov 9, 2021

--

As there is a lot of consistent progress in the research and development areas of Anoma, we believe it’s important to communicate this progression to the community. Thus, we are introducing a new article series aimed at highlighting the evolution of the project more distinctively and in more detail. The monthly Research and Development Update series will provide a monthly recap of notable technical developments, giving a more accessible overview on the status of Anoma and related projects.

October 2021 in review

October was a distinguished month for Anoma, concluding with the release of the first public testnet: Feigenbaum. In parallel to Feigenbaum preparations, Anoma’s Research and Development teams continued to progress in other areas. The analysis of private bartering circuits and advancement of a protocol design suitable for the flexibility of validity predicates occupied most of our cryptographic activities. More improvements were made to Juvix, an advanced programming language aimed to help developers write code in a dependently typed functional language to ensure more inclusive validity predicate deployment. Lastly, work on Heterogeneous Paxos for atomic, multi-chain transactions were examined against real world conditions to discover certain aspects of its feasibility.

Launch of Anoma’s first public testnet and networking level improvements

As Feigenbaum was released on November 1st, an immense amount of effort went toward final touch ups, ensuring that the Anoma ledger and intent gossip layer were testnet-ready. A user guide was drafted to help early users easily install and interact with the ledger, intent gossip nodes, matchmaker, client and wallet, catalyzing the first operations on Anoma. Further progress was made to improve usability with the integration of two helpers — one to configure a network for any number of ledger nodes and the other to setup ledger and intent gossip layer for a released network. Although the release of Feigenbaum didn’t come without its challenges, diligent steps have already been taken to maintain the infrastructure, designating resources to ensure the network runs smoothly and bug fixes can be managed promptly.

In addition to testnet-related activities, networking-level progress was made with transaction encryption for ABCI++ integration for front running protection and IBC integration — adding transaction events and queries with proofs. Early design and development for NFT token validity predicates and transactions were also initiated. Anoma’s codebase is open-source, feel free to take a look at the project’s repository to follow the development closely here:

Analysis of private barter circuits and other cryptographic developments

As zero-knowledge proofs are intrinsic to Anoma, a significant amount of focus is delegated to this cryptographic backdrop of the project. This month, more analysis was conducted around private bartering circuits and its various applications. Although past efforts have focused on specific examples, the current goal is developing a comprehensive ledger and protocol design that is flexible enough to accommodate the programmability that validity predicates provide users. While the current design needs more refinement and optimization, the next step will be a proof-of-concept specification and implementation.

Furthermore, we are in the process of writing two papers — one about distributed key generation and threshold public key encryption schemes, focusing on both theoretical and practical aspects and the other on the Plonkup protocol, where we have been investigating the differences and similarities between Halo2 and Plonkup. This has triggered more detailed examination about an intermediate representation that can target both Plonkup and Halo2.

Juvix stability and core language expansion

One of the most exciting projects in the Anoma ecosystem is Juvix, an advanced programming language already implemented as a project in Haskell and used to develop highly efficient and secure validity predicate deployment. This month, the team focused on the stability of the Juvix language, ultimately laying the groundwork for the novel features that Juvix brings to the ecosystem, such as dependent, linear types and its multiple backends. On the Core language front (i.e. that part of the language that defines the canonical syntax and semantics on which all compilers and interpreters must agree), we’ve simplified the elaborator steps and started working on the compilation of clauses to case trees and the unifier, which will enable us to compile pattern matching and integrate some parts of the program verification tool (Witch) into Juvix, respectively.

As codebases grow, complexity increases and debugging stagnates. In order to ensure Juvix continues to develop holistically, the team designed a new pipeline architecture that will enable us to inspect the compiler in a more efficient way. Check out the updated documentation to get more details on Juvix and follow the project’s progression.

Anoma & Heterogeneous Paxos

Interoperability is foundational to Anoma, as the integration of IBC allows heterogeneous chains to transfer value. Yet, we are trying to extend the capabilities of IBC with Heterogeneous Paxos that would allow for arbitrary communication between chains and enable atomic, cross-domain transactions. We have been working on upgrading the consensus based on Heterogeneous Paxos, exploring what the protocol’s trust assumptions necessitate in real world conditions and whether or not it requires a fee model. Other possible improvements for the upgraded consensus based on Heterogeneous Paxos is in the works, including the draft of a specification. For more in-depth background, check out this blog article on Heterogeneous Paxos and Multi-Chain Atomic Commits.

Stay tuned for more Research and Development Updates!

Keep an eye out for our next update, summarizing our work in November. For more daily news, follow us on Twitter or join the community on Discord.

--

--