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 que nos gustaría comprometer. Asumiremos que el polinomio tiene un grado menor que .
KZG compromisos se basan en una curva elíptica de pares. Sean y dos grupos de curvas elípticas de orden , con un no trivial mapeo bilineal . Sea un generador de , y un generador de . Utilizaremos la notación y , donde .
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
- Sea el grado máximo de los polinomios que queremos comprometer a
- La trusted setup sólo permitirá compromisos con polinomios de grado
- Se calcula y , y se dan a conocer estos valores públicamente.
Ten en cuenta que 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
- Se computa y emite el compromiso .
- Aunque el committer no puede computar directamente (ya que no conoce ), puede computarlo utilizando la salida de la trusted setup:
- .
3. Probar una evaluación
- Dada una evaluación
- Se computa y emite la prueba
- Donde
- Obsérvese que tal existe si y sólo si . Por tanto, la existencia de este polinomio cociente sirve como prueba de la evaluación.
- Donde
4. Verificación de una prueba de evaluación
- Dado un compromiso , una evaluación , y una prueba
- Se Verifica que
- Algo de álgebra muestra que esto es equivalente a comprobar que el polinomio cociente está correctamente formado en :
- El mapeo bilineal nos permite comprobar esta propiedad sin conocer el parámetro secreto de configuración
- 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
- https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html
- https://alinush.github.io/2020/05/06/kzg-polynomial-commitments.html
- https://www.iacr.org/archive/asiacrypt2010/6477178/6477178.pdf