Esquema de Compromiso KZG

Uno de los esquemas de compromiso polinómico más utilizados es el esquema de compromiso KZG. El esquema fue originalmente publicado en 2010 por Kate, Zaverucha y Goldberg.

KZG se utiliza en Proto-Danksharding de Ethereum, y también se utiliza en el sistema de pruebas de Scroll.

Este artículo dará una visión general del esquema de compromiso KZG.ç

Preliminares y notaciones

Recordemos la premisa de los esquemas de compromiso polinómico. Tenemos algún polinomio P(x)P(x) que nos gustaría comprometer. Asumiremos que el polinomio tiene un grado menor que ll.

KZG compromisos se basan en una curva elíptica de pares. Sean G1\mathbb{G}_1 y G2\mathbb{G}_2 dos grupos de curvas elípticas de orden pp, con un no trivial mapeo bilineal e:G1×G2GTe: \mathbb{G}_1 \times \mathbb{G}_2 \rightarrow \mathbb{G}_T. Sea gg un generador de G1\mathbb{G}_1, y hh un generador de G2\mathbb{G}_2. Utilizaremos la notación [x]1:=xg[x]_1 := x \cdot g y [x]2:=xh[x]_2 := x \cdot h, donde xFpx \in \mathbb{F}_p.

1. Ceremonia o Trusted Setup

Antes de calcular cualquier compromiso KZG, se debe realizar una única trusted setup. Una vez completada, puede reutilizarse para comprometer y revelar tantos polinomios diferentes como se desee. La trusted setup funciona de la siguiente manera:

  • Elija algún elemento de campo aleatorio τFp\tau \in \mathbb{F}_p
  • Sea lZl \in \mathbb{Z} el grado máximo de los polinomios que queremos comprometer a
    • La trusted setup sólo permitirá compromisos con polinomios de grado l\leq l
  • Se calcula ([τ0]1,[τ1]1,[τ2]1,[τl]1)([\tau^0]_1,[\tau^1]_1,[\tau^{2}]_1\ldots,[\tau^{l}]_1) y ([τ]2)([\tau]_2), y se dan a conocer estos valores públicamente.

Ten en cuenta que τ\tau no debe ser revelado - es un parámetro secreto de la configuración, y debe ser desechado después de la ceremonia haya sido completada para que nadie pueda averiguar su valor.

Existen métodos establecidos para llevar a cabo trusted setups con suposiciones de confianza débiles (suposición de confianza 1-de-N) utilizando multi-party computation (MPC). Para más información sobre cómo funcionan las trusted setups, véase este post de Vitalik.

2. Compromiso con un polinomio

  • Dado un polinomio P(x)=i=0lpixiP(x) = \sum_{i=0}^{l} p_i x^i
  • Se computa y emite el compromiso c=[P(τ)]1c = [P(\tau)]_1.
  • Aunque el committer no puede computar P(τ)P(\tau) directamente (ya que no conoce τ\tau), puede computarlo utilizando la salida de la trusted setup:
    • [P(τ)]1=[i=0lpiτi]1=i=0lpi[τi]1[P(\tau)]_1 = [\sum_{i=0}^{l} p_i \tau^i]_1 = \sum_{i=0}^{l} p_i [\tau^i]_1.

3. Probar una evaluación

  • Dada una evaluación P(a)=bP(a) = b
  • Se computa y emite la prueba π=[Q(τ)]1\pi = [Q(\tau)]_1
    • Donde Q(x):=P(x)bxaQ(x) := \frac{P(x)-b}{x-a}
      • Obsérvese que tal Q(x)Q(x) existe si y sólo si P(a)=bP(a) = b. Por tanto, la existencia de este polinomio cociente sirve como prueba de la evaluación.

4. Verificación de una prueba de evaluación

  • Dado un compromiso c=[P(τ)]1c = [P(\tau)]_1, una evaluación P(a)=bP(a) = b, y una prueba π=[Q(τ)]1\pi = [Q(\tau)]_1
  • Se Verifica que e(π,[τa]2)=e(c[b]1,h)e(\pi, [\tau - a]_2) = e(c - [b]_1, h)
    • Algo de álgebra muestra que esto es equivalente a comprobar que el polinomio cociente está correctamente formado en τ\tau: Q(τ)=P(τ)bτaQ(\tau) = \frac{P(\tau) -b}{\tau-a} e(π,[τa]2)=e(c[b]1,h)    e([Q(τ)]1,[τa]2)=e([P(τ)]1[b]1,h)    Q(τ)(τa)e(g,h)=(P(τ)b)e(g,h)    Q(τ)(τa)=P(τ)b\begin{align*} & e(\pi, [\tau - a]_2) = e(c - [b]_1, h) \\ \iff & e([Q(\tau)]_1, [\tau -a]_2) = e([P(\tau)]_1 - [b]_1, h) \\ \iff & Q(\tau) \cdot (\tau - a) \cdot e(g, h) = (P(\tau)-b) \cdot e(g,h) \\ \iff & Q(\tau) \cdot (\tau -a) = P(\tau) - b \end{align*}
    • El mapeo bilineal ee nos permite comprobar esta propiedad sin conocer el parámetro secreto de configuración τ\tau
  • Una vez realizada esta comprobación, podemos concluir que (con una probabilidad abrumadoramente alta) el polinomio cociente está correctamente formado, y por tanto que la evaluación es correcta.

Aprende Más

¿Qué sigue?

Mantente actualizado con las más recientes noticias sobre el Desarrollo de Scroll
Roadmap, actualizaciones, eventos virtuales y presenciales, oportunidades en el ecosistema y más
¡Gracias por suscribirte!

Recursos

Síguenos