Distinguido dos SNARKs baseados em curvas elípticas, os STARKs podem ser vistos como SNARKs baseados em hash. Um dos principais desafios que contribuem para a atual ineficiência dos STARKs é que a maioria dos valores em programas reais são relativamente pequenos, como índices em loops, valores booleanos e contadores. No entanto, para garantir a segurança das provas baseadas em árvores de Merkle, a codificação Reed-Solomon é usada para estender os dados, resultando em muitos valores redundantes ocupando todo o campo, mesmo quando os valores originais são pequenos. Abordar essa ineficiência, reduzindo o tamanho do campo, tornou-se uma estratégia-chave.
Como mostrado na Tabela 1, a primeira geração de STARKs tinha uma largura de codificação de 252 bits, a segunda geração 64 bits e a terceira geração 32 bits. Apesar da redução da largura de codificação na terceira geração, ainda há significativa perda de espaço. Em contraste, os campos binários permitem a manipulação direta de bits, possibilitando a codificação compacta e eficiente com mínimo de perda. Essa eficiência é alcançada na quarta geração de STARKs.
Tabela 1: Caminho de Derivação STARKs
Em comparação com campos finitos como Goldilocks, BabyBear e Mersenne31, que têm recebido atenção recentemente, a pesquisa em campos binários remonta aos anos 80. Hoje, os campos binários são amplamente utilizados em criptografia, com exemplos notáveis incluindo:
Quando são usados campos menores, as operações de extensão de campo se tornam cada vez mais importantes para garantir a segurança. O campo binário usado pela Binius depende inteiramente da extensão do campo para garantir tanto a segurança quanto a usabilidade prática. A maioria dos cálculos polinomiais envolvidos nas operações do Prover não precisa entrar no campo estendido, pois eles só precisam operar no campo base, alcançando assim alta eficiência no campo pequeno. No entanto, verificações de ponto aleatório e cálculos FRI ainda devem ser realizados em um campo estendido maior para garantir o nível necessário de segurança.
Existem dois desafios práticos ao construir um sistema de prova baseado em campos binários: Primeiro, o tamanho do campo usado para representação de rastreamento em STARKs deve ser maior do que o grau do polinômio. Segundo, o tamanho do campo usado para o compromisso da árvore de Merkle em STARKs deve ser maior do que o tamanho após a extensão de codificação Reed-Solomon.
Binius é uma solução inovadora para abordar esses dois problemas, representando os mesmos dados de duas maneiras diferentes: Primeiro, usando polinômios multivariados (especificamente multilineares) em vez de polinômios univariados, representando todo o traço computacional através de suas avaliações sobre "hipercubos". Em segundo lugar, como cada dimensão do hipercubo tem um comprimento de 2, não é possível realizar extensões padrão de Reed-Solomon como em STARKs, mas o hipercubo pode ser tratado como um quadrado, e uma extensão Reed-Solomon pode ser realizada com base neste quadrado. Este método não só garante a segurança, mas também melhora muito a eficiência da codificação e o desempenho computacional.
A construção da maioria dos sistemas SNARK modernos geralmente consiste nos seguintes dois componentes:
Selecionando diferentes esquemas PIOPs e PCS e combinando-os com campos finitos ou curvas elípticas adequadas, é possível construir sistemas de prova com propriedades distintas. Por exemplo:
Ao projetar esses sistemas, a compatibilidade entre o PIOP, PCS e campo finito ou curva elíptica escolhidos é fundamental para garantir a correção, o desempenho e a segurança. Essas combinações influenciam o tamanho da prova SNARK, a eficiência da verificação e determinam se o sistema pode alcançar transparência sem uma configuração confiável, além de oferecer suporte a recursos avançados como provas recursivas ou agregação de provas.
Binius combina HyperPlonk PIOP com Brakedown PCS e opera num campo binário. Especificamente, Binius incorpora cinco tecnologias-chave para alcançar eficiência e segurança:
Estas inovações permitem que Binius ofereça um sistema SNARK compacto e de alto desempenho, otimizado para campos binários, mantendo ao mesmo tempo segurança robusta e escalabilidade.
As torres de campos binários desempenham um papel crítico na realização de cálculos rápidos e verificáveis devido a dois fatores principais: cálculo eficiente e aritmetização eficiente. Os campos binários suportam inerentemente operações aritméticas altamente eficientes, tornando-os ideais para aplicações criptográficas sensíveis ao desempenho. Além disso, a sua estrutura permite um processo de aritmetização simplificado, onde as operações realizadas em campos binários podem ser representadas em formas algébricas compactas e facilmente verificáveis. Essas características, combinadas com a estrutura hierárquica das torres de campos binários, tornam-nas particularmente adequadas para sistemas de prova escaláveis como Binius.
O termo "canônico" refere-se à representação única e direta de elementos num campo binário. Por exemplo, no campo binário mais básico $\mathbb{F}2
,anyk−bitstringcanbedirectlymappedtoak−bitbinaryfieldelement.Thisdiffersfrom primefields,which donotsuchacanonicalrepresentationwithinagiven numberofbits.Althougha32−bitprimefieldcanfitwithin32bits,notevery32−bitstringcanuniquelycorrespondto a afieldelement,while binaryfields provide thisone−to−onemapping.Inprimefields
Para campos finitos $\mathbb{F}_p$ , os métodos comuns de redução incluem a redução de Barrett, a redução de Montgomery, bem como métodos de redução especializados para certos campos finitos como Mersenne-31 ou Goldilocks-64. Em campos binários $\mathbb{F}{2^k}$ , os métodos comuns de redução incluem redução especial (como usada em AES), redução de Montgomery (como usada em POLYVAL) e redução recursiva (como usada em campos Tower). O artigo Explorando o Espaço de Design de Implementações de Hardware ECC de Campo Primo vs. Campo Binárioobserva que campos binários não requerem propagação de transporte em adição ou multiplicação, e o quadrado em campos binários é altamente eficiente devido à regra de simplificação
(𝑋+𝑌)2=𝑋2+𝑌2
.
Figura 1. Torres do Campo Binário
Conforme mostrado na Figura 1, uma sequência de 128 bits pode ser interpretada de várias maneiras no contexto de um campo binário. Ela pode ser vista como um elemento único no campo binário de 128 bits, ou pode ser analisada como dois elementos do campo de torre de 64 bits, quatro elementos do campo de torre de 32 bits, dezesseis elementos do campo de torre de 8 bits ou 128 elementos de
𝐹2
Esta flexibilidade na representação não incorre em sobrecarga computacional, pois é apenas uma conversão de tipo da sequência de bits. Esta é uma propriedade muito interessante e útil, pois elementos de campo menores podem ser agrupados em elementos de campo maiores sem custo computacional adicional. O protocolo Binius aproveita essa propriedade para aumentar a eficiência computacional. Além disso, o artigo Em Inversão Eficiente em Campos de Torre de Característica Dois explora a complexidade computacional da multiplicação, quadratura e inversão em
𝑛
campos binários da torre de bit (decomponíveis em
m
-bit subfields).
O design PIOP no protocolo Binius é inspirado no HyperPlonk e incorpora uma série de verificações principais para verificar a correção de polinómios e conjuntos multivariados. Estas verificações são essenciais para garantir a integridade dos cálculos dentro do sistema de prova, especialmente ao operar sobre campos binários. As verificações principais incluem:
Embora Binius e HyperPlonk compartilhem várias semelhanças em seus projetos de protocolo, Binius introduz as seguintes melhorias-chave:
Assim, Binius melhora a flexibilidade e a eficiência do protocolo ao aprimorar o mecanismo PIOP SumCheck existente, especialmente fornecendo funcionalidade mais forte para verificar polinômios multivariados mais complexos. Essas melhorias não apenas abordam as limitações do HyperPlonk, mas também lançam as bases para sistemas à prova de futuro baseados em campos binários.
No protocolo Binius, a manipulação e construção de polinômios virtuais desempenham um papel crucial na capacidade de manipulação eficiente de polinômios. Duas técnicas principais são empregadas para essas operações:
O protocolo Lasso em Binius oferece um método altamente eficiente para provar que elementos em um vetor.
𝑎∈𝐹𝑚
estão contidos dentro de uma tabela predefinida
t∈Fn
. Este argumento de pesquisa introduz o conceito de "Singularidade de Pesquisa" e é adequado para esquemas de compromisso polinomial multilinear. A eficiência de Lasso é destacada em dois aspetos principais:
O protocolo Lasso consiste em três componentes principais:
O protocolo Binius adapta o Lasso para operações em campos binários, assumindo que o campo atual é um campo primo de grande característica (muito maior do que o comprimento da coluna que está sendo procurada). Binius introduz uma versão multiplicativa do protocolo Lasso, exigindo que o provador e o verificador incrementem a operação do "contador de memória" do protocolo não apenas adicionando 1, mas incrementando usando um gerador multiplicativo dentro do campo binário. No entanto, essa adaptação multiplicativa introduz complexidade adicional: diferentemente de um incremento aditivo, o gerador multiplicativo não incrementa em todos os casos, em vez disso, tendo uma única órbita em 0, o que pode apresentar um vetor de ataque. Para mitigar esse ataque potencial, o provador deve se comprometer com um vetor de contagem de leitura que seja diferente de zero em todos os lugares para garantir a segurança do protocolo.
A ideia central por trás da construção do Binius PCS (Polynomial Commitment Scheme) é a compactação. O artigo do Binius apresenta dois esquemas Brakedown PCS baseados em campos binários: um instanciado usando códigos concatenados, e outro usando codificação de nível de bloco, que suporta o uso independente de códigos Reed-Solomon. O segundo esquema Brakedown PCS simplifica o processo de prova e verificação, embora produza um tamanho de prova ligeiramente maior do que o primeiro; no entanto, esse compromisso vale a pena devido às vantagens de simplificação e implementação que oferece.
O compromisso polinomial Binius utiliza principalmente o compromisso polinomial de campo pequeno com avaliações em um campo estendido, construção universal de campo pequeno e codificação de nível de bloco com técnicas de código Reed-Solomon.
Compromisso Polinomial de Campo Pequeno com Avaliação de Campo Estendido No protocolo Binius, compromissos polinomiais são realizados em um campo pequeno
𝐾
, com avaliações a decorrer num campo expandido
𝐿/𝐾
. Esta técnica garante que um polinómio multilinear
t(X0,...,Xl−1)
pertence ao domínio
𝐾[𝑋0,…,𝑋ℓ−1]
, enquanto os pontos de avaliação estão no campo maior
𝐿
. Esta estrutura de compromisso permite consultas eficientes no campo estendido, equilibrando segurança e eficiência computacional.
Construção Universal de Pequeno Campo Esta construção define parâmetros-chave como o campo
𝐾
, sua dimensão
ℓ
, e o código de bloco linear associado
𝐶
, assegurando simultaneamente que o campo alargado
𝐿
é grande o suficiente para avaliações seguras. Aproveitando as propriedades do campo estendido, o Binius alcança compromissos robustos através de códigos de bloco lineares, mantendo um equilíbrio entre eficiência computacional e segurança.
Codificação de nível de bloco com códigos de Reed-Solomon para polinómios definidos sobre campos pequenos como $\mathbb{F}2
,theBiniusprotocolemploysblock−levelencodingusingReed−Solomoncodes.Thisschemeallowspatientcommitmentoflyssmall−fieldpolynomialsbyencodingthemrow−by−rowintolargerfields(tais como:
\mathbb{F}{2^{16}}$ ), utilizando a eficiência e as propriedades separáveis de distância máxima dos códigos de Reed-Solomon. Após a codificação, estas linhas são comprometidas utilizando uma árvore de Merkle, o que simplifica a complexidade operacional dos compromissos polinomiais de campo pequeno. Esta abordagem permite o tratamento eficiente de polinómios em campos pequenos sem o encargo computacional normalmente associado a campos maiores.
Para melhorar ainda mais o desempenho, a Binius incorpora quatro grandes otimizações:
No protocolo original Binius, a multiplicação de campo binário é tratada através de um esquema baseado em pesquisa, que associa a multiplicação às operações de adição linear com base no número de membros em uma palavra. Embora este método otimize a multiplicação binária até certo ponto, ainda introduz compromissos auxiliares linearmente relacionados ao número de membros. Ao adotar uma abordagem baseada em GKR, o protocolo Binius pode reduzir significativamente o número de compromissos necessários, levando a uma maior eficiência nas operações de multiplicação de campo binário.
A ideia central do protocolo GKR (Goldwasser-Kalai-Rothblum) é alcançar um acordo entre o Provador (P) e o Verificador (V) sobre um circuito aritmético em camadas em um campo finito.
𝐹
Cada nó neste circuito tem duas entradas para computar a função requerida. Para reduzir a complexidade computacional do Verificador, o protocolo utiliza o protocolo SumCheck, que reduz progressivamente as alegações sobre os valores da saída do circuito para valores de porta de camada inferior, simplificando as alegações para afirmações sobre as entradas. Dessa forma, o Verificador só precisa verificar a correção das entradas do circuito.
O Algoritmo de multiplicação de inteiros baseado em GKRem Binius transforma a verificação de se dois inteiros de 32 bits
𝐴
e
𝐵
satisfazer
𝐴⋅𝐵=?𝐶
em verificar se
(𝑔𝐴)𝐵=?𝑔𝐶
mantém em
𝐹264∗
. Esta transformação, combinada com o protocolo GKR, reduz significativamente os custos associados aos compromissos polinomiais. Comparado ao esquema baseado em pesquisa Binius anterior, a abordagem de multiplicação baseada em GKR requer apenas um compromisso auxiliar e reduz o custo de SumChecks, tornando o algoritmo mais eficiente, especialmente em casos em que os SumChecks são mais econômicos do que compromissos adicionais. Este método está se tornando uma solução promissora para minimizar os custos de compromisso polinomial de campo binário à medida que as otimizações Binius progridem.
O artigo Algumas melhorias para o PIOP para ZeroCheckpropõe estratégias para equilibrar os custos computacionais entre o Prover (P) e o Verifier (V), com foco na redução da transmissão de dados e na complexidade computacional. Abaixo estão técnicas-chave de otimização:
Ao transferir parte da carga computacional para o Verificador, a transmissão de dados do Provador pode ser minimizada. Por exemplo, em rodada
𝑖
, o provador envia
𝑣𝑖+1(𝑋)
para
𝑋=0,…,𝑑+1
e o Verificador verifica se
vi=vi+1(0)+vi+1(1)
mantém.
Otimização: O Prover pode evitar o envio
𝑣𝑖+1(1)
, como o Verificador pode calculá-lo como
𝑣𝑖+1(1)=𝑣𝑖−𝑣𝑖+1(0)
.
Na rodada inicial, o Prover envia
𝑣1(0)=𝑣1(1)=0
, eliminando alguns cálculos de avaliação, o que reduz tanto os custos computacionais quanto os de transmissão para
𝑑2𝑛−1𝐶𝐹+(𝑑+1)2𝑛−1𝐶𝐺
.
Durante a rodada
𝑖
, o provador deve enviar
𝑣𝑖+1(𝑋)
, calculado como
𝑣𝑖+1(𝑋)=∑𝑥∈𝐻𝑛−𝑖−1𝛿^𝑛(𝛼,(𝑟,𝑋,𝑥))𝐶(𝑟,𝑋,𝑥)
.
Otimização: Em vez disso, o Prover pode enviar
𝑣𝑖+1′(𝑋)=∑𝑥∈𝐻𝑛−𝑖−1𝛿^𝑛(𝛼𝑖+1,…,𝛼𝑛−1,𝑥)𝐶(𝑟,𝑋,𝑥),
onde $v_i(X) = v_i'(X) \cdot \hat{\delta}{i+1}((\alpha_0, \dots, \alpha_i), (r, X))
.AstheVerifiertem acesso a
\alpha
𝑎𝑛𝑑
r
,𝑡ℎ𝑒𝑑𝑒𝑔𝑟𝑒𝑒𝑜𝑓
v_i’(X)
𝑖𝑠𝑙𝑜𝑤𝑒𝑟𝑡ℎ𝑎𝑛𝑡ℎ𝑎𝑡𝑜𝑓
v_i(X)
, reduzindo os pontos de avaliação necessários.O controlo intercalar pode ser simplificado
(1 - \alphai)v{i+1}’(0) + \alpha_i v{i+1}’(1) = v_i’(X),
O terceiro aniversário com os eventos, o verallcostisapprovementos, theoverallcostisaproximadamente
2^{n-1}(d - 1)C_F + 2^{n-1}dC_G.
𝐹𝑜𝑟
d = 3$, essas otimizações geram uma redução de custos por um fator de 5/3.
Para um Provador honesto, o polinômio
𝐶(𝑥0,…,𝑥𝑛−1)
é zero em
Hn
e pode ser expresso como
𝐶(𝑥0,…,𝑥𝑛−1)=∑𝑖=0𝑛−1𝑥𝑖(𝑥𝑖−1)𝑄𝑖(𝑥0,…,𝑥𝑛−1)
. Onde
𝑄𝑖
é calculado através da divisão polinomial ordenada, a iniciar a partir de
𝑅𝑛=𝐶
. Divisão sequencial por
𝑥𝑖(𝑥𝑖−1)
computa
𝑄𝑖
e
𝑅𝑖
, com
𝑅0
representando a extensão multilinear de
𝐶
em
𝐻𝑛
, suposto ser zero.
Analisando os Graus de
𝑄𝑖
. Para
𝑗 > 𝑖
,
𝑄𝑗
mantém o mesmo grau em
𝑥𝑖
como
𝐶
. Para
𝑗=𝑖
, o grau é reduzido em 2 e para
𝑗<𝑖
, o grau é no máximo 1. Dado um vetor
𝑟=(𝑟0,…,𝑟𝑖)
,
𝑄𝑗(𝑟,𝑋)
é multilinear para todos
𝑗≤𝑖
. Além disso,
𝑄𝑖(𝑟,𝑋)=∑𝑗=0𝑖𝑟𝑗(𝑟𝑗−1)𝑄𝑗(𝑟,𝑋)
é o polinômio multilinear único correspondente
𝐶(𝑟,𝑋)
em
𝐻𝑛−𝑖
. Para qualquer
𝑋
e ainda
𝑥∈𝐻𝑛−𝑖−1
, pode ser representado como
𝐶(𝑟,𝑋,𝑥)−𝑄𝑖(𝑟,𝑋,𝑥)=𝑋(𝑋−1)𝑄𝑖+1(𝑟,𝑋,𝑥).
Assim, durante cada rodada do protocolo, um novo
𝑄
é introduzido, e a sua avaliação pode ser derivada de
𝐶
e o anterior
𝑄
, permitindo a otimização da interpolação.
No protocolo STARKs implementado por Binius, o principal gargalo para o provador costuma ser o protocolo de verificação de soma, em vez do Esquema de Compromisso Polinomial (PCS), devido ao baixo custo de compromisso.
Figura 2. Relação entre a rodada de troca e a melhoria do fator
Em 2024, Ingonyama propôsmelhorias para protocolos de Sumcheck baseados em pequenos campos, com foco nos Algoritmos 3 e 4. Essas melhorias foram implementadas e disponibilizadas publicamenteaquiO Algoritmo 4 incorpora o algoritmo de Karatsuba no Algoritmo 3, reduzindo o número de multiplicações de campo de extensão em troca de mais multiplicações de campo base. Esta abordagem é mais eficiente quando as multiplicações de campo de extensão são mais caras do que as de campo base.
𝑡
, que marca quando o protocolo reverte da versão otimizada para o algoritmo ingênuo. Experimentos indicam que o fator de melhoria atinge o pico no ponto de transição ótimo e segue uma tendência parabólica. Quando este ponto é excedido, a eficiência diminui porque a relação entre a multiplicação de campos de base e campos de extensão é maior em campos menores, tornando necessária uma reversão oportuna para o algoritmo ingênuo.
Para certas aplicações, como o Cubic Sumcheck (
𝑑=3
), o protocolo Sumcheck de campo pequeno proporciona uma melhoria de ordem de grandeza em relação à abordagem ingênua. Por exemplo, no campo base
GF[2]2. Impacto do Tamanho do Campo Base no Desempenho Campos base menores (por exemplo,
, O Algoritmo 4 supera o algoritmo ingênuo em quase 30 vezes.
𝐺𝐹[2]
) aumenta significativamente a eficiência do algoritmo otimizado devido à maior disparidade entre os custos de multiplicação do campo de extensão e do campo base. Isso leva a um fator de melhoria mais substancial para o algoritmo otimizado.
𝐺𝐹[2]
, O Algoritmo 4 atinge fatores de melhoria máxima de 6 para o Algoritmo 3 e 30 para o Algoritmo 4, indicando que o Algoritmo 4 é cinco vezes mais eficiente que o Algoritmo 3. O algoritmo Karatsuba aprimora a eficiência de tempo de execução e otimiza o ponto de transição para ambos os algoritmos, com pontos ótimos em
𝑡=5
para Algoritmo 3 e
𝑡=8
para o Algoritmo 4.
𝑂(𝑑⋅𝑡)
memória, enquanto o Algoritmo 3 precisa
O(2d⋅t)
memória. Para
𝑡=8
O Algoritmo 4 usa apenas 0,26 MB de memória, em comparação com os 67 MB necessários pelo Algoritmo 3. Isso torna o Algoritmo 4 particularmente adequado para ambientes com restrição de memória, como provas do lado do cliente com recursos limitados.
Um dos principais desafios do protocolo Binius é o seu tamanho de prova relativamente grande, que escala com a raiz quadrada do tamanho da testemunha em
𝑂(𝑁)
. Esta escala de raiz quadrada limita a sua competitividade quando comparada a sistemas que oferecem provas mais sucintas. Em contraste, tamanhos de prova polilogarítmicos, como os alcançados por sistemas avançados como Plonky3 através de técnicas como FRI, são essenciais para garantir verificadores verdadeiramente "sucintos". A otimização FRI-Binius visa reduzir o tamanho da prova de Binius e melhorar o seu desempenho geral em comparação com sistemas mais eficientes.
O papelProvas polilogarítmicas para multilinear em torres binárias, referido como FRI-Binius, introduz um mecanismo de dobragem FRI (Prova Interativa do Oráculo de Reed-Solomon Rápido de Proximidade) baseado em campo binário com quatro inovações-chave:
Processo central do esquema de compromisso polinomial multilinear (PCS) FRI-Binius
O protocolo FRI-Binius otimiza esquemas de compromisso polinomial multilinear (PCS) de campo binário, transformando o polinômio multilinear inicial, definido sobre o campo binário
𝐹2
, em um polinômio multilinear sobre um campo maior
𝐾
.
Benefícios do FRI-Binius
Ao aplicar este método, a Binius é capaz de reduzir o tamanho da sua prova em uma ordem de grandeza, aproximando-se do desempenho dos sistemas criptográficos de última geração, enquanto continua compatível com campos binários. O método de dobragem FRI, otimizado para campos binários, combinado com o empacotamento algébrico e as otimizações SumCheck, ajuda a Binius a gerar provas menores sem comprometer a eficiência da verificação.
Esta transformação marca um passo significativo em direção à melhoria do tamanho da prova em Binius, garantindo que ele se torne mais competitivo com outros sistemas de ponta, especialmente aqueles focados em tamanhos de prova polilogarítmicos.
Tabela 2: Comparação do Tamanho da Prova Binius vs. FRI-Binius
Tabela 3: Comparação Plonky3 FRI vs. FRI-Binius
A proposta de valor inteira do Binius reside na sua capacidade de utilizar o menor tamanho de campo de potência de dois para testemunhas, selecionando o tamanho do campo conforme necessário. Binius é um esquema de co-design para “protocolos de Sumcheck acelerados por hardware, software e FPGA”, permitindo provas rápidas com uso muito baixo de memória.
Sistemas de prova como o Halo2 e o Plonky3 envolvem quatro etapas principais intensivas em computação: gerar dados de testemunho, comprometer-se com os dados de testemunho, realizar um argumento de desaparecimento e gerar a prova de abertura.
Por exemplo, com a função de hash Keccak em Plonky3 e a função de hash Grøstl em Binius, a distribuição computacional para essas quatro etapas-chave é ilustrada na Figura 3.
Figura 3. Menor Custo de Compromisso
Esta comparação mostra que Binius essencialmente eliminou o gargalo de compromisso do provador. O novo gargalo é o protocolo Sumcheck, onde questões como numerosas avaliações polinomiais e multiplicações de campo podem ser abordadas de forma eficiente com hardware especializado.
O esquema FRI-Binius, uma variante de FRI, oferece uma opção altamente atrativa ao remover a sobrecarga de incorporação da camada de prova do campo sem causar um aumento significativo de custo na camada de prova agregada.
Atualmente, a equipe Irreducible está desenvolvendo sua camada recursiva e temanunciou uma parceria com a equipe Polygon para construir um zkVM baseado em Binius; o Jolt zkVM está a transitar de Lasso para Binius para melhorar o seu desempenho recursivo; e o A equipe Ingonyama está implementando uma versão FPGA do Binius.
Distinguido dos SNARKs baseados em curvas elípticas, os STARKs podem ser vistos como SNARKs baseados em hash. Um dos principais desafios que contribuem para a atual ineficiência dos STARKs é que a maioria dos valores em programas reais são relativamente pequenos, como índices em loops, valores booleanos e contadores. No entanto, para garantir a segurança das provas baseadas em árvores de Merkle, a codificação Reed-Solomon é usada para estender os dados, resultando em muitos valores redundantes ocupando todo o campo, mesmo quando os valores originais são pequenos. Abordar essa ineficiência, reduzindo o tamanho do campo, tornou-se uma estratégia-chave.
Como mostrado na Tabela 1, a primeira geração de STARKs tinha uma largura de codificação de 252 bits, a segunda geração 64 bits e a terceira geração 32 bits. Apesar da redução da largura de codificação na terceira geração, ainda há significativa perda de espaço. Em contraste, os campos binários permitem a manipulação direta de bits, possibilitando a codificação compacta e eficiente com mínimo de perda. Essa eficiência é alcançada na quarta geração de STARKs.
Tabela 1: Caminho de Derivação STARKs
Em comparação com campos finitos como Goldilocks, BabyBear e Mersenne31, que têm recebido atenção recentemente, a pesquisa em campos binários remonta aos anos 80. Hoje, os campos binários são amplamente utilizados em criptografia, com exemplos notáveis incluindo:
Quando são usados campos menores, as operações de extensão de campo se tornam cada vez mais importantes para garantir a segurança. O campo binário usado pela Binius depende inteiramente da extensão do campo para garantir tanto a segurança quanto a usabilidade prática. A maioria dos cálculos polinomiais envolvidos nas operações do Prover não precisa entrar no campo estendido, pois eles só precisam operar no campo base, alcançando assim alta eficiência no campo pequeno. No entanto, verificações de ponto aleatório e cálculos FRI ainda devem ser realizados em um campo estendido maior para garantir o nível necessário de segurança.
Existem dois desafios práticos ao construir um sistema de prova baseado em campos binários: Primeiro, o tamanho do campo usado para representação de rastreamento em STARKs deve ser maior do que o grau do polinômio. Segundo, o tamanho do campo usado para o compromisso da árvore de Merkle em STARKs deve ser maior do que o tamanho após a extensão de codificação Reed-Solomon.
Binius é uma solução inovadora para abordar esses dois problemas, representando os mesmos dados de duas maneiras diferentes: Primeiro, usando polinômios multivariados (especificamente multilineares) em vez de polinômios univariados, representando todo o traço computacional através de suas avaliações sobre "hipercubos". Em segundo lugar, como cada dimensão do hipercubo tem um comprimento de 2, não é possível realizar extensões padrão de Reed-Solomon como em STARKs, mas o hipercubo pode ser tratado como um quadrado, e uma extensão Reed-Solomon pode ser realizada com base neste quadrado. Este método não só garante a segurança, mas também melhora muito a eficiência da codificação e o desempenho computacional.
A construção da maioria dos sistemas SNARK modernos geralmente consiste nos seguintes dois componentes:
Selecionando diferentes esquemas PIOPs e PCS e combinando-os com campos finitos ou curvas elípticas adequadas, é possível construir sistemas de prova com propriedades distintas. Por exemplo:
Ao projetar esses sistemas, a compatibilidade entre o PIOP, PCS e campo finito ou curva elíptica escolhidos é fundamental para garantir a correção, o desempenho e a segurança. Essas combinações influenciam o tamanho da prova SNARK, a eficiência da verificação e determinam se o sistema pode alcançar transparência sem uma configuração confiável, além de oferecer suporte a recursos avançados como provas recursivas ou agregação de provas.
Binius combina HyperPlonk PIOP com Brakedown PCS e opera num campo binário. Especificamente, Binius incorpora cinco tecnologias-chave para alcançar eficiência e segurança:
Estas inovações permitem que Binius ofereça um sistema SNARK compacto e de alto desempenho, otimizado para campos binários, mantendo ao mesmo tempo segurança robusta e escalabilidade.
As torres de campos binários desempenham um papel crítico na realização de cálculos rápidos e verificáveis devido a dois fatores principais: cálculo eficiente e aritmetização eficiente. Os campos binários suportam inerentemente operações aritméticas altamente eficientes, tornando-os ideais para aplicações criptográficas sensíveis ao desempenho. Além disso, a sua estrutura permite um processo de aritmetização simplificado, onde as operações realizadas em campos binários podem ser representadas em formas algébricas compactas e facilmente verificáveis. Essas características, combinadas com a estrutura hierárquica das torres de campos binários, tornam-nas particularmente adequadas para sistemas de prova escaláveis como Binius.
O termo "canônico" refere-se à representação única e direta de elementos num campo binário. Por exemplo, no campo binário mais básico $\mathbb{F}2
,anyk−bitstringcanbedirectlymappedtoak−bitbinaryfieldelement.Thisdiffersfrom primefields,which donotsuchacanonicalrepresentationwithinagiven numberofbits.Althougha32−bitprimefieldcanfitwithin32bits,notevery32−bitstringcanuniquelycorrespondto a afieldelement,while binaryfields provide thisone−to−onemapping.Inprimefields
Para campos finitos $\mathbb{F}_p$ , os métodos comuns de redução incluem a redução de Barrett, a redução de Montgomery, bem como métodos de redução especializados para certos campos finitos como Mersenne-31 ou Goldilocks-64. Em campos binários $\mathbb{F}{2^k}$ , os métodos comuns de redução incluem redução especial (como usada em AES), redução de Montgomery (como usada em POLYVAL) e redução recursiva (como usada em campos Tower). O artigo Explorando o Espaço de Design de Implementações de Hardware ECC de Campo Primo vs. Campo Binárioobserva que campos binários não requerem propagação de transporte em adição ou multiplicação, e o quadrado em campos binários é altamente eficiente devido à regra de simplificação
(𝑋+𝑌)2=𝑋2+𝑌2
.
Figura 1. Torres do Campo Binário
Conforme mostrado na Figura 1, uma sequência de 128 bits pode ser interpretada de várias maneiras no contexto de um campo binário. Ela pode ser vista como um elemento único no campo binário de 128 bits, ou pode ser analisada como dois elementos do campo de torre de 64 bits, quatro elementos do campo de torre de 32 bits, dezesseis elementos do campo de torre de 8 bits ou 128 elementos de
𝐹2
Esta flexibilidade na representação não incorre em sobrecarga computacional, pois é apenas uma conversão de tipo da sequência de bits. Esta é uma propriedade muito interessante e útil, pois elementos de campo menores podem ser agrupados em elementos de campo maiores sem custo computacional adicional. O protocolo Binius aproveita essa propriedade para aumentar a eficiência computacional. Além disso, o artigo Em Inversão Eficiente em Campos de Torre de Característica Dois explora a complexidade computacional da multiplicação, quadratura e inversão em
𝑛
campos binários da torre de bit (decomponíveis em
m
-bit subfields).
O design PIOP no protocolo Binius é inspirado no HyperPlonk e incorpora uma série de verificações principais para verificar a correção de polinómios e conjuntos multivariados. Estas verificações são essenciais para garantir a integridade dos cálculos dentro do sistema de prova, especialmente ao operar sobre campos binários. As verificações principais incluem:
Embora Binius e HyperPlonk compartilhem várias semelhanças em seus projetos de protocolo, Binius introduz as seguintes melhorias-chave:
Assim, Binius melhora a flexibilidade e a eficiência do protocolo ao aprimorar o mecanismo PIOP SumCheck existente, especialmente fornecendo funcionalidade mais forte para verificar polinômios multivariados mais complexos. Essas melhorias não apenas abordam as limitações do HyperPlonk, mas também lançam as bases para sistemas à prova de futuro baseados em campos binários.
No protocolo Binius, a manipulação e construção de polinômios virtuais desempenham um papel crucial na capacidade de manipulação eficiente de polinômios. Duas técnicas principais são empregadas para essas operações:
O protocolo Lasso em Binius oferece um método altamente eficiente para provar que elementos em um vetor.
𝑎∈𝐹𝑚
estão contidos dentro de uma tabela predefinida
t∈Fn
. Este argumento de pesquisa introduz o conceito de "Singularidade de Pesquisa" e é adequado para esquemas de compromisso polinomial multilinear. A eficiência de Lasso é destacada em dois aspetos principais:
O protocolo Lasso consiste em três componentes principais:
O protocolo Binius adapta o Lasso para operações em campos binários, assumindo que o campo atual é um campo primo de grande característica (muito maior do que o comprimento da coluna que está sendo procurada). Binius introduz uma versão multiplicativa do protocolo Lasso, exigindo que o provador e o verificador incrementem a operação do "contador de memória" do protocolo não apenas adicionando 1, mas incrementando usando um gerador multiplicativo dentro do campo binário. No entanto, essa adaptação multiplicativa introduz complexidade adicional: diferentemente de um incremento aditivo, o gerador multiplicativo não incrementa em todos os casos, em vez disso, tendo uma única órbita em 0, o que pode apresentar um vetor de ataque. Para mitigar esse ataque potencial, o provador deve se comprometer com um vetor de contagem de leitura que seja diferente de zero em todos os lugares para garantir a segurança do protocolo.
A ideia central por trás da construção do Binius PCS (Polynomial Commitment Scheme) é a compactação. O artigo do Binius apresenta dois esquemas Brakedown PCS baseados em campos binários: um instanciado usando códigos concatenados, e outro usando codificação de nível de bloco, que suporta o uso independente de códigos Reed-Solomon. O segundo esquema Brakedown PCS simplifica o processo de prova e verificação, embora produza um tamanho de prova ligeiramente maior do que o primeiro; no entanto, esse compromisso vale a pena devido às vantagens de simplificação e implementação que oferece.
O compromisso polinomial Binius utiliza principalmente o compromisso polinomial de campo pequeno com avaliações em um campo estendido, construção universal de campo pequeno e codificação de nível de bloco com técnicas de código Reed-Solomon.
Compromisso Polinomial de Campo Pequeno com Avaliação de Campo Estendido No protocolo Binius, compromissos polinomiais são realizados em um campo pequeno
𝐾
, com avaliações a decorrer num campo expandido
𝐿/𝐾
. Esta técnica garante que um polinómio multilinear
t(X0,...,Xl−1)
pertence ao domínio
𝐾[𝑋0,…,𝑋ℓ−1]
, enquanto os pontos de avaliação estão no campo maior
𝐿
. Esta estrutura de compromisso permite consultas eficientes no campo estendido, equilibrando segurança e eficiência computacional.
Construção Universal de Pequeno Campo Esta construção define parâmetros-chave como o campo
𝐾
, sua dimensão
ℓ
, e o código de bloco linear associado
𝐶
, assegurando simultaneamente que o campo alargado
𝐿
é grande o suficiente para avaliações seguras. Aproveitando as propriedades do campo estendido, o Binius alcança compromissos robustos através de códigos de bloco lineares, mantendo um equilíbrio entre eficiência computacional e segurança.
Codificação de nível de bloco com códigos de Reed-Solomon para polinómios definidos sobre campos pequenos como $\mathbb{F}2
,theBiniusprotocolemploysblock−levelencodingusingReed−Solomoncodes.Thisschemeallowspatientcommitmentoflyssmall−fieldpolynomialsbyencodingthemrow−by−rowintolargerfields(tais como:
\mathbb{F}{2^{16}}$ ), utilizando a eficiência e as propriedades separáveis de distância máxima dos códigos de Reed-Solomon. Após a codificação, estas linhas são comprometidas utilizando uma árvore de Merkle, o que simplifica a complexidade operacional dos compromissos polinomiais de campo pequeno. Esta abordagem permite o tratamento eficiente de polinómios em campos pequenos sem o encargo computacional normalmente associado a campos maiores.
Para melhorar ainda mais o desempenho, a Binius incorpora quatro grandes otimizações:
No protocolo original Binius, a multiplicação de campo binário é tratada através de um esquema baseado em pesquisa, que associa a multiplicação às operações de adição linear com base no número de membros em uma palavra. Embora este método otimize a multiplicação binária até certo ponto, ainda introduz compromissos auxiliares linearmente relacionados ao número de membros. Ao adotar uma abordagem baseada em GKR, o protocolo Binius pode reduzir significativamente o número de compromissos necessários, levando a uma maior eficiência nas operações de multiplicação de campo binário.
A ideia central do protocolo GKR (Goldwasser-Kalai-Rothblum) é alcançar um acordo entre o Provador (P) e o Verificador (V) sobre um circuito aritmético em camadas em um campo finito.
𝐹
Cada nó neste circuito tem duas entradas para computar a função requerida. Para reduzir a complexidade computacional do Verificador, o protocolo utiliza o protocolo SumCheck, que reduz progressivamente as alegações sobre os valores da saída do circuito para valores de porta de camada inferior, simplificando as alegações para afirmações sobre as entradas. Dessa forma, o Verificador só precisa verificar a correção das entradas do circuito.
O Algoritmo de multiplicação de inteiros baseado em GKRem Binius transforma a verificação de se dois inteiros de 32 bits
𝐴
e
𝐵
satisfazer
𝐴⋅𝐵=?𝐶
em verificar se
(𝑔𝐴)𝐵=?𝑔𝐶
mantém em
𝐹264∗
. Esta transformação, combinada com o protocolo GKR, reduz significativamente os custos associados aos compromissos polinomiais. Comparado ao esquema baseado em pesquisa Binius anterior, a abordagem de multiplicação baseada em GKR requer apenas um compromisso auxiliar e reduz o custo de SumChecks, tornando o algoritmo mais eficiente, especialmente em casos em que os SumChecks são mais econômicos do que compromissos adicionais. Este método está se tornando uma solução promissora para minimizar os custos de compromisso polinomial de campo binário à medida que as otimizações Binius progridem.
O artigo Algumas melhorias para o PIOP para ZeroCheckpropõe estratégias para equilibrar os custos computacionais entre o Prover (P) e o Verifier (V), com foco na redução da transmissão de dados e na complexidade computacional. Abaixo estão técnicas-chave de otimização:
Ao transferir parte da carga computacional para o Verificador, a transmissão de dados do Provador pode ser minimizada. Por exemplo, em rodada
𝑖
, o provador envia
𝑣𝑖+1(𝑋)
para
𝑋=0,…,𝑑+1
e o Verificador verifica se
vi=vi+1(0)+vi+1(1)
mantém.
Otimização: O Prover pode evitar o envio
𝑣𝑖+1(1)
, como o Verificador pode calculá-lo como
𝑣𝑖+1(1)=𝑣𝑖−𝑣𝑖+1(0)
.
Na rodada inicial, o Prover envia
𝑣1(0)=𝑣1(1)=0
, eliminando alguns cálculos de avaliação, o que reduz tanto os custos computacionais quanto os de transmissão para
𝑑2𝑛−1𝐶𝐹+(𝑑+1)2𝑛−1𝐶𝐺
.
Durante a rodada
𝑖
, o provador deve enviar
𝑣𝑖+1(𝑋)
, calculado como
𝑣𝑖+1(𝑋)=∑𝑥∈𝐻𝑛−𝑖−1𝛿^𝑛(𝛼,(𝑟,𝑋,𝑥))𝐶(𝑟,𝑋,𝑥)
.
Otimização: Em vez disso, o Prover pode enviar
𝑣𝑖+1′(𝑋)=∑𝑥∈𝐻𝑛−𝑖−1𝛿^𝑛(𝛼𝑖+1,…,𝛼𝑛−1,𝑥)𝐶(𝑟,𝑋,𝑥),
onde $v_i(X) = v_i'(X) \cdot \hat{\delta}{i+1}((\alpha_0, \dots, \alpha_i), (r, X))
.AstheVerifiertem acesso a
\alpha
𝑎𝑛𝑑
r
,𝑡ℎ𝑒𝑑𝑒𝑔𝑟𝑒𝑒𝑜𝑓
v_i’(X)
𝑖𝑠𝑙𝑜𝑤𝑒𝑟𝑡ℎ𝑎𝑛𝑡ℎ𝑎𝑡𝑜𝑓
v_i(X)
, reduzindo os pontos de avaliação necessários.O controlo intercalar pode ser simplificado
(1 - \alphai)v{i+1}’(0) + \alpha_i v{i+1}’(1) = v_i’(X),
O terceiro aniversário com os eventos, o verallcostisapprovementos, theoverallcostisaproximadamente
2^{n-1}(d - 1)C_F + 2^{n-1}dC_G.
𝐹𝑜𝑟
d = 3$, essas otimizações geram uma redução de custos por um fator de 5/3.
Para um Provador honesto, o polinômio
𝐶(𝑥0,…,𝑥𝑛−1)
é zero em
Hn
e pode ser expresso como
𝐶(𝑥0,…,𝑥𝑛−1)=∑𝑖=0𝑛−1𝑥𝑖(𝑥𝑖−1)𝑄𝑖(𝑥0,…,𝑥𝑛−1)
. Onde
𝑄𝑖
é calculado através da divisão polinomial ordenada, a iniciar a partir de
𝑅𝑛=𝐶
. Divisão sequencial por
𝑥𝑖(𝑥𝑖−1)
computa
𝑄𝑖
e
𝑅𝑖
, com
𝑅0
representando a extensão multilinear de
𝐶
em
𝐻𝑛
, suposto ser zero.
Analisando os Graus de
𝑄𝑖
. Para
𝑗 > 𝑖
,
𝑄𝑗
mantém o mesmo grau em
𝑥𝑖
como
𝐶
. Para
𝑗=𝑖
, o grau é reduzido em 2 e para
𝑗<𝑖
, o grau é no máximo 1. Dado um vetor
𝑟=(𝑟0,…,𝑟𝑖)
,
𝑄𝑗(𝑟,𝑋)
é multilinear para todos
𝑗≤𝑖
. Além disso,
𝑄𝑖(𝑟,𝑋)=∑𝑗=0𝑖𝑟𝑗(𝑟𝑗−1)𝑄𝑗(𝑟,𝑋)
é o polinômio multilinear único correspondente
𝐶(𝑟,𝑋)
em
𝐻𝑛−𝑖
. Para qualquer
𝑋
e ainda
𝑥∈𝐻𝑛−𝑖−1
, pode ser representado como
𝐶(𝑟,𝑋,𝑥)−𝑄𝑖(𝑟,𝑋,𝑥)=𝑋(𝑋−1)𝑄𝑖+1(𝑟,𝑋,𝑥).
Assim, durante cada rodada do protocolo, um novo
𝑄
é introduzido, e a sua avaliação pode ser derivada de
𝐶
e o anterior
𝑄
, permitindo a otimização da interpolação.
No protocolo STARKs implementado por Binius, o principal gargalo para o provador costuma ser o protocolo de verificação de soma, em vez do Esquema de Compromisso Polinomial (PCS), devido ao baixo custo de compromisso.
Figura 2. Relação entre a rodada de troca e a melhoria do fator
Em 2024, Ingonyama propôsmelhorias para protocolos de Sumcheck baseados em pequenos campos, com foco nos Algoritmos 3 e 4. Essas melhorias foram implementadas e disponibilizadas publicamenteaquiO Algoritmo 4 incorpora o algoritmo de Karatsuba no Algoritmo 3, reduzindo o número de multiplicações de campo de extensão em troca de mais multiplicações de campo base. Esta abordagem é mais eficiente quando as multiplicações de campo de extensão são mais caras do que as de campo base.
𝑡
, que marca quando o protocolo reverte da versão otimizada para o algoritmo ingênuo. Experimentos indicam que o fator de melhoria atinge o pico no ponto de transição ótimo e segue uma tendência parabólica. Quando este ponto é excedido, a eficiência diminui porque a relação entre a multiplicação de campos de base e campos de extensão é maior em campos menores, tornando necessária uma reversão oportuna para o algoritmo ingênuo.
Para certas aplicações, como o Cubic Sumcheck (
𝑑=3
), o protocolo Sumcheck de campo pequeno proporciona uma melhoria de ordem de grandeza em relação à abordagem ingênua. Por exemplo, no campo base
GF[2]2. Impacto do Tamanho do Campo Base no Desempenho Campos base menores (por exemplo,
, O Algoritmo 4 supera o algoritmo ingênuo em quase 30 vezes.
𝐺𝐹[2]
) aumenta significativamente a eficiência do algoritmo otimizado devido à maior disparidade entre os custos de multiplicação do campo de extensão e do campo base. Isso leva a um fator de melhoria mais substancial para o algoritmo otimizado.
𝐺𝐹[2]
, O Algoritmo 4 atinge fatores de melhoria máxima de 6 para o Algoritmo 3 e 30 para o Algoritmo 4, indicando que o Algoritmo 4 é cinco vezes mais eficiente que o Algoritmo 3. O algoritmo Karatsuba aprimora a eficiência de tempo de execução e otimiza o ponto de transição para ambos os algoritmos, com pontos ótimos em
𝑡=5
para Algoritmo 3 e
𝑡=8
para o Algoritmo 4.
𝑂(𝑑⋅𝑡)
memória, enquanto o Algoritmo 3 precisa
O(2d⋅t)
memória. Para
𝑡=8
O Algoritmo 4 usa apenas 0,26 MB de memória, em comparação com os 67 MB necessários pelo Algoritmo 3. Isso torna o Algoritmo 4 particularmente adequado para ambientes com restrição de memória, como provas do lado do cliente com recursos limitados.
Um dos principais desafios do protocolo Binius é o seu tamanho de prova relativamente grande, que escala com a raiz quadrada do tamanho da testemunha em
𝑂(𝑁)
. Esta escala de raiz quadrada limita a sua competitividade quando comparada a sistemas que oferecem provas mais sucintas. Em contraste, tamanhos de prova polilogarítmicos, como os alcançados por sistemas avançados como Plonky3 através de técnicas como FRI, são essenciais para garantir verificadores verdadeiramente "sucintos". A otimização FRI-Binius visa reduzir o tamanho da prova de Binius e melhorar o seu desempenho geral em comparação com sistemas mais eficientes.
O papelProvas polilogarítmicas para multilinear em torres binárias, referido como FRI-Binius, introduz um mecanismo de dobragem FRI (Prova Interativa do Oráculo de Reed-Solomon Rápido de Proximidade) baseado em campo binário com quatro inovações-chave:
Processo central do esquema de compromisso polinomial multilinear (PCS) FRI-Binius
O protocolo FRI-Binius otimiza esquemas de compromisso polinomial multilinear (PCS) de campo binário, transformando o polinômio multilinear inicial, definido sobre o campo binário
𝐹2
, em um polinômio multilinear sobre um campo maior
𝐾
.
Benefícios do FRI-Binius
Ao aplicar este método, a Binius é capaz de reduzir o tamanho da sua prova em uma ordem de grandeza, aproximando-se do desempenho dos sistemas criptográficos de última geração, enquanto continua compatível com campos binários. O método de dobragem FRI, otimizado para campos binários, combinado com o empacotamento algébrico e as otimizações SumCheck, ajuda a Binius a gerar provas menores sem comprometer a eficiência da verificação.
Esta transformação marca um passo significativo em direção à melhoria do tamanho da prova em Binius, garantindo que ele se torne mais competitivo com outros sistemas de ponta, especialmente aqueles focados em tamanhos de prova polilogarítmicos.
Tabela 2: Comparação do Tamanho da Prova Binius vs. FRI-Binius
Tabela 3: Comparação Plonky3 FRI vs. FRI-Binius
A proposta de valor inteira do Binius reside na sua capacidade de utilizar o menor tamanho de campo de potência de dois para testemunhas, selecionando o tamanho do campo conforme necessário. Binius é um esquema de co-design para “protocolos de Sumcheck acelerados por hardware, software e FPGA”, permitindo provas rápidas com uso muito baixo de memória.
Sistemas de prova como o Halo2 e o Plonky3 envolvem quatro etapas principais intensivas em computação: gerar dados de testemunho, comprometer-se com os dados de testemunho, realizar um argumento de desaparecimento e gerar a prova de abertura.
Por exemplo, com a função de hash Keccak em Plonky3 e a função de hash Grøstl em Binius, a distribuição computacional para essas quatro etapas-chave é ilustrada na Figura 3.
Figura 3. Menor Custo de Compromisso
Esta comparação mostra que Binius essencialmente eliminou o gargalo de compromisso do provador. O novo gargalo é o protocolo Sumcheck, onde questões como numerosas avaliações polinomiais e multiplicações de campo podem ser abordadas de forma eficiente com hardware especializado.
O esquema FRI-Binius, uma variante de FRI, oferece uma opção altamente atrativa ao remover a sobrecarga de incorporação da camada de prova do campo sem causar um aumento significativo de custo na camada de prova agregada.
Atualmente, a equipe Irreducible está desenvolvendo sua camada recursiva e temanunciou uma parceria com a equipe Polygon para construir um zkVM baseado em Binius; o Jolt zkVM está a transitar de Lasso para Binius para melhorar o seu desempenho recursivo; e o A equipe Ingonyama está implementando uma versão FPGA do Binius.