In blockchain technology, reducing computational complexity has always been one of its primary goals. One effective approach to achieving this is by reducing the bit width of the computation field. For example, SNARKs based on elliptic curves perform arithmetic operations in fields with bit widths of 256 or higher, while STARKs have evolved from using the 64-bit Goldilocks field to the 31-bit Mersenne31 and BabyBear fields. Beyond the efficiency of the prime numbers themselves during modular operations, the significant reduction in bit width has led to Plonky2 being hundreds of times faster than its predecessor, Plonky. Following this trajectory, one might wonder: is it possible to set the field width to 1, specifically
Since its release, Binius has garnered significant attention in the ZK (Zero-Knowledge) community. The LambdaClass team has provided several technical analyses [4][5][6], and Vitalik Buterin offered a more accessible explanation [7]. In this article, we will explore the foundations of Binius, focusing on the Towers of Binary Fields, from both a technical and implementation perspective.
The implementation of Binius is based on Binary Fields. In Binius, Binary Fields are constructed using towers of field extensions.
The simplest Binary Field is
While one method to extend fields involves taking remainders using irreducible polynomials, Binius employs a more efficient approach: the use of Multilinear Lagrange polynomials as a basis for tower extensions. This method allows for recursive field extensions, where each extension field is nested within the previous one.
The Specific Implementation of Tower Extensions is as Follows:
First,
Then,
Next,
From the construction process of the field extensions, it is clear that the extensions satisfy the following relationship:
Based on this implementation, different extensions can be obtained as follows:
From the Elements Contained in the Extended Field
It is evident that for an element
Additionally, for
Irreducible provides the open-source Rust implementation of Binius [3]. The source code includes complete implementations and operations for the Tower of Binary Fields [8,9,10].
Figure 1: Implementation of the Construction of the Tower of Binary Fields
In [8], as shown in Figure 1, the implementation includes the complete definition of operations for binary fields and the construction of the Tower of Binary Fields. The Tower of Binary Fields, supporting up to a 128-bit binary field, is defined as follows:
Figure 2: 128-bit Wide Tower of Binary Fields
Additionally, [8] provides test and verification code for the Tower of Binary Fields and related operations.
References
[1] https://eprint.iacr.org/2023/1784
[2] https://www.irreducible.com/posts/binius-hardware-optimized-snark
[3] https://gitlab.com/IrreducibleOSS/binius
[4] SNARKs on binary fields: Binius - Part 1 (lambdaclass.com)
[5] SNARKs on binary fields: Binius - Part 2 (lambdaclass.com)
[6] How Binius is helping move the ZK industry forward (lambdaclass.com)
[7] https://vitalik.eth.limo/general/2024/04/29/binius.html
[8] binius/crates/field/src/binary_field.rs at main · IrreducibleOSS/binius · GitHub
[9] binius/crates/field/src/binary_field_arithmetic.rs at main · IrreducibleOSS/binius · GitHub
[10] binius/crates/field/src/extension.rs at main · IrreducibleOSS/binius · GitHub