Los sistemas blockchain son inherentemente un estado. Por ejemplo, capturan información sobre las claves públicas de los usuarios, sus saldos o los datos de contratos inteligentes.
Posteriormente, los validadores confían en la información del estado para verificar las transacciones.
Sin embargo, a largo plazo, este estado se vuelve inmanejable y causa múltiples problemas de escalabilidad.
Además, los altos requisitos de almacenamiento agregan fricción a la descentralización, ya que solo los validadores que pueden asignar grandes cantidades de almacenamiento pueden participar en el consenso.
Un modelo de blockchain sin estado reemplaza el almacenamiento en cadena con compromisos criptográficos. Por ejemplo, un usuario puede comprometerse con los datos de su contrato inteligente y luego agregar a su transacción los valores que desea actualizar con las pruebas criptográficas asociadas.
La forma tradicional de comprometerse con un conjunto de datos, tomada por Ethereum y otras cadenas de bloques, es utilizando Merkle Trees.
Desafortunadamente, se sabe que los árboles de Merkle tienen pruebas muy largas. Por ejemplo, un usuario que se compromete con 1000 valores en un contrato inteligente necesitaría propagar 320 bytes de datos adicionales (prueba criptográfica) para cambiar solo uno de estos valores.
En redes distribuidas, donde cada transacción se propaga a través de todos los nodos, esto puede consumir mucho ancho de banda de la red y agregar costos sustanciales para los nodos que participan en el consenso.
Para resolver estos problemas, diseñamos un nuevo esquema de compromiso: Pointproofs [1].
Pointproofs es un nuevo esquema de compromiso de vectores que admite la agregación no interactiva de pruebas en múltiples compromisos.
Permiten a un usuario comprometerse con una secuencia de valores V1, …, V_n, y revelar uno o varios valores en posiciones específicas más adelante.
Tanto el compromiso como el tamaño de la prueba son solo 48 bytes.
Además, Pointproofs permite a cualquier tercero agregar una colección de pruebas con respecto a diferentes compromisos calculados independientemente (generados, por ejemplo, por distintos usuarios) en una sola pruebarepresentado por un punto de curva elíptica de 48 bytes!
La agregación de compromisos cruzados es una propiedad nueva que ninguna de las construcciones anteriores logró.
Las pruebas puntuales también satisfacen las propiedades de ocultación: un compromiso y pruebas para algunos valores no revelan información sobre los valores restantes.
Cuando se aplica a contratos inteligentes de blockchain, Pointproofs permite eliminar esencialmente cualquier sobrecarga criptográfica para las pruebas en un bloque.
Un proponente de bloque que recibe una colección de transacciones con pruebas individuales puede agregar todas las pruebas en un único punto de curva de 48 bytes.
En particular, Pointproofs puede reducir los gastos generales de ancho de banda para propagar un bloque de transacciones en al menos un 60% en comparación con los compromisos de vectores de estado de la técnica anteriores (en instancias específicas; los ahorros varían según el caso de uso).
Los Pointproofs también son eficientes: en un solo subproceso, lleva 0.08 segundos generar una prueba para 8 valores con respecto a un compromiso, 0.25 segundos para agregar 4000 pruebas de este tipo a través de múltiples compromisos en una prueba, y 23 segundos (0.7 ms por valor probado) para verificar la prueba agregada.
En resumen, Pointproofs se puede utilizar para reducir el almacenamiento en cadena y minimizar los requisitos de ancho de banda de la red, permitiendo redes descentralizadas más eficientes.
Eche un vistazo al documento técnico y la implementación de código abierto de Algorand .
[1] «Pointproofs : pruebas agregadas para múltiples compromisos de vectores» por Sergey Gorbunov, Leonid Reyzin, Hoeteck Wee y Zhenfei Zhang. El documento aparecerá en la Conferencia ACM sobre Seguridad Informática y Comunicaciones 2020.