Inovação Binius: Análise Profunda da Solução de Otimização dos Domínios Binários STARKs

Análise dos princípios STARKs da Binius e reflexão sobre a sua otimização

1 Introdução

Uma das principais razões para a baixa eficiência dos STARKs é que a maioria dos valores em programas reais é relativamente pequena, como índices em loops for, valores booleanos, contadores, etc. No entanto, para garantir a segurança da prova baseada em árvores de Merkle, muitos valores de redundância adicionais ocupam todo o domínio ao usar codificação de Reed-Solomon para expandir os dados, mesmo que o valor original em si seja muito pequeno. Para resolver esse problema, reduzir o tamanho do domínio tornou-se uma estratégia chave.

A largura de codificação dos STARKs de 1ª geração é de 252 bits, a largura de codificação dos STARKs de 2ª geração é de 64 bits, e a largura de codificação dos STARKs de 3ª geração é de 32 bits, mas a largura de codificação de 32 bits ainda apresenta um grande desperdício de espaço. Em comparação, o campo binário permite operações diretas sobre os bits, com uma codificação compacta e eficiente, sem qualquer desperdício de espaço, ou seja, os STARKs de 4ª geração.

Comparado com os domínios finitos descobertos em pesquisas recentes como Goldilocks, BabyBear e Mersenne31, a pesquisa sobre domínios binários remonta à década de 1980. Atualmente, os domínios binários são amplamente aplicados na criptografia, exemplos típicos incluem:

  • Padrão de Criptografia Avançada (AES), baseado no domínio F28;

  • Galois Message Authentication Code ( GMAC ), baseado no domínio F2128;

  • Código QR, usando codificação Reed-Solomon baseada em F28;

  • Protocólos FRI originais e zk-STARK, assim como a função de hash Grøstl que chegou à final do SHA-3, que é baseada no domínio F28, sendo um algoritmo de hash muito adequado para recursão.

Quando se utilizam domínios menores, a operação de extensão de domínio torna-se cada vez mais importante para garantir a segurança. O domínio binário utilizado pela Binius depende completamente da extensão de domínio para garantir sua segurança e viabilidade prática. A maioria dos polinómios envolvidos nos cálculos do Prover não precisa entrar na extensão de domínio, operando apenas no domínio base, conseguindo assim alta eficiência em domínios pequenos. No entanto, a verificação de pontos aleatórios e os cálculos FRI ainda precisam aprofundar-se em uma extensão de domínio maior para garantir a segurança necessária.

Ao construir um sistema de provas baseado em domínios binários, existem 2 problemas práticos: ao calcular a representação da trace em STARKs, o tamanho do domínio utilizado deve ser maior do que o grau do polinômio; ao comprometer a árvore Merkle em STARKs, é necessário fazer a codificação de Reed-Solomon, e o tamanho do domínio utilizado deve ser maior do que o tamanho após a expansão da codificação.

A Binius propôs uma solução inovadora que trata esses dois problemas separadamente e realiza a representação dos mesmos dados de duas maneiras diferentes: primeiro, usando polinómios multivariáveis (especificamente polinómios multilineares) em vez de polinómios univariáveis, representando toda a trajetória computacional através dos seus valores no "hipercubo"; em segundo lugar, dado que o comprimento de cada dimensão do hipercubo é 2, não é possível realizar uma extensão padrão de Reed-Solomon como nos STARKs, mas pode-se considerar o hipercubo como um quadrado, realizando a extensão de Reed-Solomon com base nesse quadrado. Este método, ao garantir a segurança, aumenta significativamente a eficiência da codificação e o desempenho computacional.

2 Análise de Princípios

A construção da maioria dos sistemas SNARKs atualmente geralmente inclui as seguintes duas partes:

  • Prova de Oráculo Interativa Polinomial Teórica da Informação (Information-Theoretic Polynomial Interactive Oracle Proof, PIOP): O PIOP, como o núcleo do sistema de prova, transforma as relações computacionais de entrada em igualdades polinomiais verificáveis. Diferentes protocolos PIOP, através da interação com o verificador, permitem que o provador envie polinômios gradualmente, de modo que o verificador possa validar se o cálculo está correto consultando os resultados da avaliação de um número reduzido de polinômios. Os protocolos PIOP existentes incluem: PLONK PIOP, Spartan PIOP e HyperPlonk PIOP, que diferem na forma como lidam com as expressões polinomiais, afetando assim o desempenho e a eficiência de todo o sistema SNARK.

  • Esquema de Compromisso Polinomial (Polynomial Commitment Scheme, PCS): O esquema de compromisso polinomial é utilizado para provar se a igualdade polinomial gerada por PIOP é válida. O PCS é uma ferramenta criptográfica que permite ao provador comprometer-se a um determinado polinômio e verificar posteriormente o resultado da avaliação desse polinômio, enquanto oculta outras informações sobre o polinômio. Os esquemas de compromisso polinomial mais comuns incluem KZG, Bulletproofs, FRI (Fast Reed-Solomon IOPP) e Brakedown, entre outros. Diferentes PCS têm diferentes desempenhos, segurança e cenários de aplicação.

De acordo com as necessidades específicas, escolha diferentes PIOP e PCS, e combine com domínios finitos ou curvas elípticas apropriadas, para construir sistemas de prova com diferentes atributos. Por exemplo:

• Halo2: combinado com PLONK PIOP e Bulletproofs PCS, baseado na curva Pasta. O Halo2 foi projetado com foco na escalabilidade e na remoção do trusted setup do protocolo ZCash.

• Plonky2: utiliza PLONK PIOP combinado com FRI PCS e é baseado no domínio Goldilocks. Plonky2 foi projetado para implementar recursão eficiente. Ao projetar esses sistemas, o PIOP e o PCS escolhidos devem corresponder ao domínio finito ou à curva elíptica utilizada, para garantir a correção, desempenho e segurança do sistema. A escolha dessas combinações não só afeta o tamanho da prova e a eficiência de verificação do SNARK, mas também determina se o sistema pode alcançar transparência sem a necessidade de uma configuração confiável, bem como se pode suportar funcionalidades de extensão, como provas recursivas ou provas agregadas.

Binius: HyperPlonk PIOP + Brakedown PCS + domínio binário. Especificamente, Binius inclui cinco tecnologias-chave para atingir sua eficiência e segurança. Primeiro, a aritmética baseada em torres de domínios binários constitui a base de seus cálculos, permitindo operações simplificadas dentro do domínio binário. Em segundo lugar, Binius adaptou a verificação de produtos e permutações do HyperPlonk em seu protocolo de prova Oracle interativa (PIOP), garantindo uma verificação de consistência segura e eficiente entre variáveis e suas permutações. Terceiro, o protocolo introduziu uma nova prova de deslocamento multilinear, otimizando a eficiência da verificação de relações multilineares em pequenos domínios. Quarto, Binius utilizou uma versão aprimorada da prova de busca Lasso, proporcionando flexibilidade e forte segurança ao mecanismo de busca. Por fim, o protocolo emprega um esquema de compromisso polinomial de pequeno domínio (Small-Field PCS), permitindo um sistema de provas eficiente sobre o domínio binário e reduzindo as sobrecargas normalmente associadas a grandes domínios.

2.1 Domínios finitos: aritmética baseada em torres de campos binários

Os domínios binários em torre são a chave para a implementação de cálculos rápidos e verificáveis, devido a dois aspectos principais: cálculo eficiente e aritmética eficiente. Os domínios binários suportam operações aritméticas altamente eficientes, tornando-os uma escolha ideal para aplicações criptográficas sensíveis ao desempenho. Além disso, a estrutura do domínio binário suporta um processo de aritmética simplificada, ou seja, as operações realizadas sobre o domínio binário podem ser representadas em uma forma algébrica compacta e fácil de verificar. Essas características, juntamente com a capacidade de tirar pleno proveito de suas propriedades hierárquicas através da estrutura em torre, tornam o domínio binário particularmente adequado para sistemas de prova escaláveis como o Binius.

Entre os quais "canonical" refere-se à representação única e direta de elementos no domínio binário. Por exemplo, no domínio binário mais básico F2, qualquer string de k bits pode ser mapeada diretamente para um elemento do domínio binário de k bits. Isso é diferente do domínio primo, que não pode fornecer essa representação canônica dentro de um número fixo de bits. Embora o domínio primo de 32 bits possa ser contido em 32 bits, nem toda string de 32 bits pode corresponder de forma única a um elemento do domínio, enquanto o domínio binário possui essa conveniência de mapeamento um-para-um. No domínio primo Fp, os métodos de redução comuns incluem a redução de Barrett, a redução de Montgomery e métodos especiais de redução para domínios finitos específicos como Mersenne-31 ou Goldilocks-64. No domínio binário F2k, os métodos de redução comuns incluem a redução especial (como a utilizada em AES), a redução de Montgomery (como a utilizada em POLYVAL) e a redução recursiva (como a Tower). O artigo "Exploring the Design Space of Prime Field vs. Binary Field ECC-Hardware Implementations" aponta que no domínio binário, tanto a adição quanto a multiplicação não requerem a introdução de transporte, e a operação de quadrado no domínio binário é extremamente eficiente, pois segue a regra simplificada (X + Y )2 = X2 + Y2.

Como mostrado na Figura 1, uma string de 128 bits: esta string pode ser interpretada de várias maneiras no contexto de um domínio binário. Pode ser vista como um elemento único no domínio binário de 128 bits, ou ser analisada como dois elementos de domínio torre de 64 bits, quatro elementos de domínio torre de 32 bits, 16 elementos de domínio torre de 8 bits, ou 128 elementos do domínio F2. Essa flexibilidade de representação não requer nenhum custo computacional, sendo apenas uma conversão de tipo da string de bits, o que é uma propriedade muito interessante e útil. Ao mesmo tempo, elementos de domínio menores podem ser empacotados em elementos de domínio maiores sem a necessidade de custo computacional adicional. O protocolo Binius aproveita essa característica para aumentar a eficiência computacional. Além disso, o artigo "On Efficient Inversion in Tower Fields of Characteristic Two" explora a complexidade computacional da multiplicação, quadrados e operações de inversão em domínios binários de torre de n bits (que podem ser decompostos em subdomínios de m bits).

Bitlayer Research: Análise dos princípios STARKs da Binius e reflexões sobre a sua otimização

2.2 PIOP: versão adaptada do Produto HyperPlonk e Verificação de Permutação ------ aplicável a campos binários

O design do PIOP no protocolo Binius inspira-se no HyperPlonk e utiliza uma série de mecanismos de verificação essenciais para validar a correção de polinómios e conjuntos multivariados. Esses mecanismos de verificação essenciais incluem:

  1. GateCheck: Verifica se o testemunho confidencial ω e a entrada pública x satisfazem a relação de operação do circuito C(x,ω)=0, para garantir que o circuito funcione corretamente.

  2. PermutationCheck: verifica se os resultados da avaliação de dois polinómios multivariáveis f e g no hipercubo booleano são uma relação de permutação f(x) = f(π(x)), para garantir a consistência na permutação entre as variáveis do polinómio.

  3. LookupCheck: Verifica se a avaliação do polinómio está na tabela de pesquisa dada, ou seja, f(Bµ) ⊆ T(Bµ), garantindo que certos valores estão dentro do intervalo especificado.

  4. MultisetCheck: verifica se dois conjuntos multivariáveis são iguais, ou seja, {(x1,i,x2,)}i∈H={(y1,i,y2,)}i∈H, garantindo a consistência entre vários conjuntos.

  5. ProductCheck: Verifica se a avaliação de um polinómico com coeficientes racionais no hipercubo booleano é igual a um valor declarado ∏x∈Hµ f(x) = s, para garantir a correção do produto do polinómico.

  6. ZeroCheck: Verifica se um polinómio multivariável em um hipercubo booleano em um ponto qualquer é zero ∏x∈Hµ f(x) = 0, ∀x ∈ Bµ, para garantir a distribuição dos zeros do polinómio.

  7. SumCheck: Verifica se a soma de um polinómio multivariável é igual ao valor declarado ∑x∈Hµ f(x) = s. Ao transformar o problema de avaliação de polinómios multivariáveis numa avaliação de polinómios univariáveis, reduz a complexidade computacional do verificador. Além disso, o SumCheck também permite o processamento em lote, introduzindo números aleatórios para construir combinações lineares que realizam o processamento em lote de várias instâncias de verificação de soma.

  8. BatchCheck: baseado no SumCheck, valida a correção da avaliação de múltiplos polinômios multivariados, para melhorar a eficiência do protocolo.

Apesar de Binius e HyperPlonk terem muitas semelhanças no design do protocolo, Binius fez melhorias nas seguintes 3 áreas:

  • Otimização do ProductCheck: No HyperPlonk, o ProductCheck requer que o denominador U seja diferente de zero em todo o hipercubo, e o produto deve ser igual a um valor específico; Binius simplificou esse processo de verificação especializando esse valor para 1, reduzindo assim a complexidade computacional.

  • Tratamento do problema da divisão por zero: o HyperPlonk não conseguiu lidar adequadamente com a situação de divisão por zero, resultando na incapacidade de afirmar que U é não nulo no hipercubo; o Binius tratou corretamente desse problema, mesmo quando o denominador é zero, o ProductCheck do Binius pode continuar a processar, permitindo a promoção para qualquer valor de produto.

  • Verificação de Permutação entre Colunas: HyperPlonk não possui esta funcionalidade; Binius suporta a Verificação de Permutação entre várias colunas, o que permite que Binius lide com situações de arranjos polinomiais mais complexas.

Assim, a Binius melhorou a flexibilidade e a eficiência do protocolo através da melhoria do mecanismo existente PIOPSumCheck, especialmente ao lidar com a verificação de polinómios multivariáveis mais complexos, oferecendo um suporte funcional mais robusto. Essas melhorias não apenas solucionaram as limitações do HyperPlonk, mas também estabeleceram uma base para sistemas de prova baseados em domínios binários no futuro.

Bitlayer Research: Análise dos princípios dos STARKs da Binius e reflexões sobre otimização

2.3 PIOP: novo argumento de mudança multilinhar ------ aplicável ao hipercubo booleano

No protocolo Binius, a construção e manipulação de polinómios virtuais é uma das tecnologias chave, permitindo gerar e operar de forma eficaz polinómios derivados de manipuladores de entrada ou de outros polinómios virtuais. Abaixo estão dois métodos chave:

  • Embalagem:
Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • 7
  • Compartilhar
Comentário
0/400
LiquiditySurfervip
· 07-21 04:57
Está muito desperdiçado, já vai na terceira geração e ainda assim.
Ver originalResponder0
RetailTherapistvip
· 07-20 05:05
Isto é demasiado complicado, não?
Ver originalResponder0
CryptoSourGrapevip
· 07-20 00:28
Se eu tivesse estudado isso antes, em vez de me acomodar... Ai, quanto mais olho, mais azedo fica.
Ver originalResponder0
gas_fee_therapistvip
· 07-20 00:24
Reduzir a largura da banda pela metade realmente é uma forma de reduzir custos e aumentar a eficiência?
Ver originalResponder0
ImpermanentLossEnjoyervip
· 07-20 00:20
32 bits vai ser desprezado novamente
Ver originalResponder0
MEVHuntervip
· 07-20 00:19
heh, outro protocolo ineficiente pronto para exploração... truques de campo binário não te salvarão dos tubarões do pool de mem
Ver originalResponder0
MEV_Whisperervip
· 07-20 00:14
A otimização ainda não chegou ao fim, 32 bits ainda ocupam muito espaço.
Ver originalResponder0
  • Marcar
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)