Skip to content

Binius's Arithmetization

Our approach to arithmetization, and how we depart from the status quo

In SNARK design, arithmetization refers to any among a number of techniques designed to reduce computational problems to mathematical problems. Computational problems are the ones we care about in day-to-day life. For example:

Mathematical problems are the ones amenable to treatment by SNARKs. These latter statements typically involve finite fields, tables and polynomials. For example:

Mathematical problems are the ones we can solve; computational problems are the ones we want to solve. Arithmetization amounts to bridging the gap between these two—ideally, in as efficient a way as we can.

In this section of the site, we explain Binius's approach to arithmetization.

Section Directory

This section contains the following subsections:

  • Background. Here, we informally review various previous approaches to arithmetization.
  • Data Types. Here, we explain the datatypes made available in our arithmetization scheme. Roughly, Binius's fundamental types are bit-strings of power-of-two width.
  • Multi-Multiset Matching. Binius introduces a new arithmetization schema, which is purely declarative. In this subsection, we explain our scheme, beginning with examples, and progressing into a more formal specification.
  • Merkle–Patricia Inclusion. Here, we train the full power of M3 onto a particular problem: generating proofs of Ethereum MPT membership.