Masato Tsutsumi (Universidade Waseda) (X: neto)
versão mais recente: GKRFold: compressão de prova GKR baseada em SumFold – HackMD
Isenção de responsabilidade: Esta postagem está em um estágio inicial de ideia e as formulações lógicas e matemáticas podem não ser totalmente rigorosas. Agradecemos quaisquer comentários ou feedback sobre a ideia em si, bem como sugestões sobre a estrutura lógica.
Resumo
Neste artigo, apresentamos o GKRFold, um protocolo para compactar o tamanho da prova e o custo de verificação de n Provas SNARK baseadas em GKR. GKRFold incorpora SumFold – um componente originalmente proposto em NeutronNova (KS24) – para obter essa compactação. Em última análise, o processo de compactação produz uma única instância do Sumcheck junto com um compromisso. Como resultado, o verificador é obrigado a realizar apenas um Sumcheck e duas avaliações polinomiais aleatórias. Além disso, o protocolo é aplicável a instâncias uniformes e não uniformes do protocolo GKR.
1. Introdução
1.1. Protocolo GKR
O sistema de prova GKR (GKR15, XZZ19), um proeminente SNARK (Succinct Non-interactive ARgument of Knowledge) devido ao seu tempo de prova eficiente, tem sido empregado em sistemas como Expander e Ceno. Seu projeto é baseado na representação de cada camada do circuito como um polinômio da camada correspondente. A partir da saída, o protocolo retransmite sequencialmente uma afirmação sobre uma camada para uma afirmação sobre a camada subsequente, executando um protocolo Sumcheck na avaliação do polinômio da camada em um ponto escolhido aleatoriamente.
Mais precisamente, o polinômio da camada ( V_i ) é definido como
V_i(z) = \sum_{x,y \in \{0,1\}^{S_i}} \Bigl\{ add_{i+1}(z,x,y)\bigl(V_{i+1}(x)+V_{i+1}(y)\bigr) + mult_{i+1}(z,x,y)\bigl(V_{i+1}(x) \cdot V_{i+1}(y)\bigr) \Bigr\},
onde as funções add_i(z,x,y) e mult_i(z,x,y) retorne 1 se o portão (z,x,y) em camada eu é uma porta de adição ou multiplicação, respectivamente, e 0 caso contrário.
Uma visão geral do protocolo GKR é a seguinte:
- O provador envia a avaliação do circuito C(x,w)=y ao verificador.
- Para cada camada eu = 1,\pontos,d-1 (excluindo a camada de entrada), o verificador lança um desafio selecionando um ponto aleatório r_i e então inicia o protocolo Sumcheck em V_i(r_i).
- O verificador avalia diretamente a camada de entrada V_d(r_d).
Embora o provador possa gerar provas em SOBRE) tempo sem se comprometer com resultados intermediários ou depender de FFTs, o tempo de verificação e o tamanho da prova exibem uma complexidade de O(D\log N). Consequentemente, alcançar uma compressão de prova eficiente continua a ser um desafio importante.
1.2. NeutronNova e SumFold
SumFold, conforme introduzido em NeutronNova(KS24), é uma técnica que dobra um número arbitrário de instâncias de Sumcheck em uma única instância. Ao aplicar SumFold ao protocolo GKR, é possível compactar as múltiplas instâncias Sumcheck inerentes às provas GKR, reduzindo assim o tamanho geral da prova e o tempo de verificação.
1.3. Contribuições
Neste trabalho, propomos GKRFold, um novo método que aplica SumFold para compactar eficientemente n instâncias de provas GKR. As principais contribuições deste estudo são as seguintes:
- Demonstramos que o SumFold pode ser utilizado de forma eficaz para compactar instâncias GKR, levando a melhorias substanciais no tamanho da prova e na eficiência da verificação.
- Mostramos que GKRFold pode comprimir n Provas GKR, cada uma compreendendo d camadas (totalizando 6 \vezes n \vezes d instâncias Sumcheck), em uma única instância Sumcheck.
Este resultado reduz significativamente a sobrecarga associada à verificação de múltiplas provas GKR, tornando o protocolo mais prático para aplicações que requerem verificação sucinta e eficiente.
2. SumFold: ideia de alto nível
A explicação de MLE, Sumcheck e GKR é omitida aqui. Aqueles que desejam estudar os detalhes devem consultar os seguintes documentos.
Suponha que desejamos provar, via Sumcheck, uma função definida por uma composição
F(\vec{g}(x)),
onde F é um polinômio em t variáveis e \vec{g} é um vetor de t polinômios em eu variáveis. Por exemplo, pode-se considerar o caso
F(\vec{g}(x)) = g_0(x) \cdot g_1(x) \cdots g_{t-1}(x),
que representa o produto dos componentes de \vec{g}(x).
O objetivo do SumFold é reduzir as provas de n Instâncias de verificação de soma
(T_i = \sum_x F(\vec{g}(x)))_{i \in (n)}
para uma única prova Sumcheck.
Definimos uma instância Sumcheck \mathsf{SC} que contém todas as informações necessárias para uma prova Sumcheck da seguinte forma:
SumFold dobra o n instâncias de \mathsf{SC} em um. A ideia principal por trás do SumFold consiste nas seguintes etapas:
- Para todos eu = 1,\ldots,ndado
T_i = \soma_x F(\vec{g}_i(x)),
construir um polinômio Q(b) por interpolação tal que, para qualquer entrada b,
Q(b) = T_b.
Isto é conseguido da seguinte forma:
- (a) Construir t polinômios f_j(b,x) via interpolação polinomial, onde cada polinômio gera g_{bj}(x) correspondente à $b$ésima instância.
- (b) Reconstruir Q(b) aplicando a função F para a coleção \{f_1(b,x), \pontos, f_t(b,x)\}.
- Comprometa-se com o polinômio Q(b). Este compromisso agrega efetivamente os compromissos de todos n Instâncias de verificação de soma.
- O verificador seleciona um desafio aleatório r_b e designa a instância $r_b$th Sumcheck como a instância dobrada.
Verifica-se (ver Apêndice B do artigo NeutronNova (KS24)) que
Q(r_b) = T_{r_b}.
Protocolo (citado de (KS24)):
3. GKR Dobrar
3.0. Protocolo GKR Linear (Libra(XZZ19))
Nesta seção, descrevemos o algoritmo de tempo linear para o protocolo GKR. Primeiro, suponha que o seguinte polinômio de camada seja dado:
V_i(z) = \sum_{x,y \in \{0,1\}^{S_i}} \Bigl\{ add_{i+1}(z,x,y)\bigl(V_{i+1}(x)+V_{i+1}(y)\bigr) + mult_{i+1}(z,x,y)\bigl(V_{i+1}(x) \cdot V_{i+1}(y)\bigr) \Bigr\}.
Particionamos esta expressão em três termos:
V_i(z) = \sum_{x,y \in \{0,1\}^{S_i}} add_{i+1}(z,x,y)V_{i+1}(x) \;+\;
\sum_{x,y \in \{0,1\}^{S_i}} add_{i+1}(z,x,y)V_{i+1}(y) \;+\;
\sum_{x,y \in \{0,1\}^{S_i}} mult_{i+1}(z,x,y)\bigl(V_{i+1}(x) \cdot V_{i+1}(y)\bigr).
Para cada termo, um protocolo Sumcheck bifásico é executado. Por exemplo, considere o terceiro termo:
\sum_{x,y \in \{0,1\}^{S_i}} mult_{i+1}(z,x,y)\bigl(V_{i+1}(x) \cdot V_{i+1}(y)\bigr) =\sum_{x \in \{0,1\}^{S_i}} h_{i+1}(x)V_{i+1}(x),
onde
h_{i+1}(x) = \sum_{y \in \{0,1\}^{S_i}} mult_{i+1}(z,x,y)V_{i+1}(y).
O protocolo Sumcheck bifásico é então executado da seguinte forma:
- Prove a correção de h_{i+1}(x) via Sumcheck.
- Prove a exatidão do termo \sum_{x \in \{0,1\}^{S_i}} h_{i+1}(x)V_{i+1}(x) via Sumcheck.
Assim, para cada camada, um total de 2 \ vezes 3 = 6 As instâncias Sumcheck são executadas em paralelo.
3.1. GKRFold: Visão geral
Suponha que nos seja dado n Instâncias GKR, e que cada instância compreende d camadas. Então existe um total de n \vezes d polinômios de camada. Para cada camada, o protocolo requer 6 instâncias Sumcheck (conforme descrito acima), resultando em um total de
6 \vezes n \vezes d
Instâncias de verificação de soma.
Esses seis tipos de instâncias Sumcheck estão resumidos na tabela a seguir:
| Verificação de soma 1 (h_{1,i+1}(x)) | Verificação de soma 2 (h_{2,i+1}(y)) | Verificação de soma 3 (h_{3,i+1}(x)) | Verificação de soma 4 (1º período) | Verificação de soma 5 (2º período) | Verificação de soma 6 (3º mandato) | |
|---|---|---|---|---|---|---|
| Expressão | \sum_{y \in \{0,1\}^{S_i}} add_{i+1}(z,x,y) | \sum_{x \in \{0,1\}^{S_i}} add_{i+1}(z,x,y) | \sum_{y \in \{0,1\}^{S_i}} mult_{i+1}(z,x,y)V_{i+1}(y) | \sum_{x \in \{0,1\}^{S_i}} h_{1,i+1}(x)V_{i+1}(x) | \sum_{y \in \{0,1\}^{S_i}} h_{2,i+1}(y)V_{i+1}(y) | \sum_{x \in \{0,1\}^{S_i}} h_{3,i+1}(x)V_{i+1}(x) |
| Forma de F | F(g_1(x),g_2(x)) = g_1(x) \cponto g_2(x) | mesmo | mesmo | mesmo | mesmo | mesmo |
| Vetor \vec{g} | \{ add_{i+1}(z,x,y),\, g_e(x,y,z) \} | \{ add_{i+1}(z,x,y),\, g_e(x,y,z) \} | \{ mult_{i+1}(z,x,y),\, V_{i+1}(y) \} | \{ h_{1,i+1}(x),\, V_{i+1}(x) \} | \{ h_{2,i+1}(y),\, V_{i+1}(y) \} | \{ h_{3,i+1}(x),\, V_{i+1}(x) \} |
Observe que Sumcheck 1 e Sumcheck 2 têm naturalmente a forma
F(g_1(x)) = g_1(x).
No entanto, ao introduzir a função identidade constante g_e(x) = 1 (que sempre retorna 1), eles podem ser expressos de forma equivalente como
F(g_1(x), g_e(x)) = g_1(x) \cdot g_e(x).
Assim, todas as instâncias do Sumcheck compartilham a mesma forma funcional
F(g_1(x), g_2(x)) = g_1(x) \cdot g_2(x).
A correspondência entre essas instâncias do Sumcheck e a estrutura SumFold é fornecida na tabela acima.
Consequentemente, aplicando SumFold, o total de
6 \vezes n \vezes d
As instâncias Sumcheck podem ser dobradas em uma única instância Sumcheck.
3.2. GKRFold: Protocolo
Entrada:
n Instâncias GKR, representadas como
\Bigl\{\{SC_{i1}, SC_{i2}, SC_{i3}, SC_{i4}, SC_{i5}, SC_{i6}\}_{i \in (n \times d)},\, (\vec{x}_i, \vec{w}_i)_{i \in (n \times d)},\, (\vec{u}_i)_{i \in (n \times d)}\Bigr\} \in GKR^{n},
Saída:
(SC,\, r_b,\, \bar{Q}(r_b),(\vec{x}_i, \vec{w}_i), (\vec{u}_i))
Protocolo:
-
O provador envia os resultados da avaliação C_i(x,w) = y para cada instância ao verificador.
-
Com base nos polinômios da camada V_iatribua as seis instâncias do Sumcheck (SC1 a SC6) para cada camada.
-
Execute SumFold nas seguintes condições:
-
A função é definida como
F(g_1(x), g_2(x)) = g_1(x) \cdot g_2(x).
-
O vetor \vec{g} é instanciado da seguinte forma:
- SC$_1$: \{ add_{i+1}(z,x,y),\, g_e(x,y,z) \}
- SC$_2$: \{ add_{i+1}(z,x,y),\, g_e(x,y,z) \}
- SC$_3$: \{ mult_{i+1}(z,x,y),\, V_{i+1}(y) \}
- SC$_4$: \{ h_{1,i+1}(x),\, V_{i+1}(x) \}
- SC$_5$: \{ h_{2,i+1}(y),\, V_{i+1}(y) \}
- SC$_6$: \{ h_{3,i+1}(x),\, V_{i+1}(x) \}
-
-
Verifique isso para todos eu = 1, \pontos, n,
Q(6d \cdot i) = v_{i,d}(r_d),
onde P é o polinômio construído via SumFold e v_{i,d}(r_d) denota a avaliação do polinômio da camada correspondente no desafio r_d.
-
O verificador avalia a camada de entrada V_d(r_d).
3.3. Prova do Teorema
Descreveremos os detalhes em um artigo posterior, mas deve ser possível provar que as propriedades de completude, solidez e conhecimento zero são satisfeitas de acordo com SumFold.
3.4. Custo
Deixar
- d denotar o número de camadas GKR,
- t = 2 denota o número de variáveis em F,
- D denotar o grau de F,
- n denota o número de instâncias GKR, e
- eu denota o número de variáveis em g.
As complexidades estão resumidas na tabela a seguir:
| Redondo | Complexidade da comunicação | Complexidade do tempo do provador | Complexidade de tempo do verificador |
|---|---|---|---|
| 1+\log(nd) | O(D\log(nd)) elementos de campo | O(nd \cdot t \cdot 2^l) elementos de campo | O(D\log(nd)) elementos de campo |
Seguindo o Teorema 2 no artigo NeutronNova (KS24):
Reconhecimento
Agradecimentos especiais a yugo por discutir a recursão do GKR durante o hackathon e fornecer feedback sobre ideias nos estágios iniciais desta pesquisa.
Referência
- KS24
- GKR15
- XZZ19
Fontesethresear


