驴Qu茅 es Mimble Wimble?

Una implementaci贸n de un protocolo llamado Mimblewimble, que es una forma diferente de dise帽ar una blockchain que se comparti贸 de forma an贸nima en julio de 2016.

Pero, 驴en qu茅 se diferencia de todos los dem谩s dise帽os de blockchain? La blockchain de MWC es realmente solo una gran transacci贸n 煤nica. Esto no tiene sentido cuando se escucha por primera vez y parece dif铆cil de creer al principio, pero resulta ser cierto. Exploraremos el mundo de las transacciones de MWC y c贸mo se unen para formar una blockchain.

Simplificaremos algunas cosas intencionalmente para no perderte en los detalles, pero prometemos que no ser谩 nada demasiado importante. El prop贸sito es explicar el panorama general del protocolo y por qu茅 muchos cript贸grafos lo consideran el dise帽o de blockchain m谩s interesante hasta la fecha.

Introducci贸n a las transacciones confidenciales

MWC se basa en mucha investigaci贸n previa realizada en el espacio de Bitcoin. Utiliza transacciones confidenciales en el n煤cleo de su dise帽o, lo que significa que todos los montos est谩n ocultos. Pero no utiliza la idea tal como se describi贸 originalmente en el documento, sino que la mejora. Una salida en una transacci贸n confidencial se describe como un mont贸n de caracteres y n煤meros aleatorios para cualquier persona que lo observe, por ejemplo, 09fe4d4d2aa97ba9c52ea494c967bddb12d1e394bbe91692e53.

Lo que Mimblewimble hace de manera diferente es que esta secuencia aleatoria contiene la informaci贸n tanto del monto como del propietario, pero no revela ninguno de ellos; en el documento original, solo contiene la informaci贸n sobre los montos. No existe noci贸n de un script o una direcci贸n en Mimblewimble, una salida es solo una secuencia aleatoria de caracteres. La idea principal detr谩s de las transacciones confidenciales es que demuestra que la suma de los montos de entrada menos la suma de los montos de salida es cero, pero lo hace de una manera que no revela los montos. Este equilibrio entre las sumas tambi茅n debe mantenerse para todas las transacciones de Bitcoin (ignoramos las tarifas por simplicidad). Bitcoin demuestra esto al tener los montos p煤blicos para que cualquiera pueda verificar que la transacci贸n est谩 equilibrada y no se cre贸 dinero nuevo. No profundizaremos en la criptograf铆a detr谩s de las transacciones confidenciales, lo importante es saber que prueba que el balance de la transacci贸n es v谩lido sin revelar los montos. Ahora que sabemos c贸mo lucen las salidas, veamos c贸mo es una transacci贸n de MWC.

Hay cierta molestia al demostrar que 危input.amount - 危output.amount = 0 sin revelar los montos, porque es posible que alguien intente codificar en esta secuencia aleatoria una cantidad negativa que permitir铆a la creaci贸n de monedas de la nada. Para evitar esto, necesitamos demostrar que el monto que oculta la salida est谩 dentro de un cierto rango de n煤meros no negativos, pero debemos hacerlo de una manera que no revele el monto en s铆. Esto se logra con algo que se conoce como prueba de rango de conocimiento cero y cada salida viene con esta prueba de rango. No hablaremos sobre las pruebas de rango en esta publicaci贸n porque no ayudan a comprender Mimblewimble, es suficiente saber que deben incluirse debido a algunos detalles.

Transacci贸n MWC

Una transacci贸n en MWC se compone de 3 conjuntos. Un conjunto de entradas, un conjunto de salidas y un conjunto de n煤cleos. Ya estamos familiarizados con la idea de una salida de Bitcoin: se puede pensar en ella como un mont贸n de dinero que se ve p煤blicamente y tiene un propietario. Una entrada es realmente solo una salida que se est谩 gastando, la representaci贸n es la misma. Como se mencion贸 en la secci贸n anterior, las salidas (y por lo tanto tambi茅n las entradas) no muestran sus montos, por lo que se pueden considerar bolsas de dinero donde la cantidad no es visible para nadie. Los n煤cleos son algo que se introdujo en el libro blanco de Mimblewimble, pero el autor lo llam贸 el Exceso en el documento. Realmente no necesitamos saber c贸mo es un n煤cleo, solo necesitamos saber que sirve como prueba de que la transacci贸n es v谩lida. Un n煤cleo de la transacci贸n:

  • prueba que la transacci贸n no pierde ninguna moneda ni crea nuevas de la nada - 危input.amount - 危output.amount = 0
  • prueba la autenticidad de la transacci贸n, lo que significa que todos los propietarios de entradas y salidas acordaron esta transacci贸n

隆Esto es bastante ingenioso, tenemos una sola cosa llamada n煤cleo que se encarga de todos los aspectos importantes de una transacci贸n!

Un n煤cleo es una pieza de datos muy peque帽a ~100 bytes que contiene solo un punto de curva aleatorio y una firma. No necesitamos conocer estos detalles para entender la idea principal detr谩s de Mimblewimble y MWC, por lo que hemos omitido los detalles internos, pero estos 100 bytes de datos prueban tanto la no inflaci贸n como la autenticidad de la transacci贸n.

images/qr_code_anatomy.png

Como podemos ver en la imagen, esta es una transacci贸n que tiene una sola entrada, dos salidas y un n煤cleo que paga 0.011 de tarifa. Una persona que observ贸 esta transacci贸n no puede decir qui茅n es el remitente o el receptor ni qu茅 montos contienen las entradas y salidas. Podr铆an saberlo si tuvieran algunos metadatos sobre las entradas y salidas, pero es imposible saberlo solo mirando la transacci贸n.

Agregaci贸n de transacciones

MWC nos permite concatenar dos transacciones para obtener una sola transacci贸n. Llamamos a esto agregaci贸n de transacciones, pero en el espacio de Bitcoin se conoce como CoinJoin. Este CoinJoin es m谩s poderoso que el de la red de Bitcoin porque no necesitas hacer coincidir los montos ya que no son visibles y no requiere que los propietarios de las transacciones se re煤nan y realicen el CoinJoin de manera interactiva. Esto significa que cualquiera que vea dos transacciones de MWC puede simplemente concatenarlas en una sola transacci贸n. La transacci贸n, una vez agregada, no puede ser desagregada por nadie que no haya visto las transacciones antes de la agregaci贸n.

Digamos que tenemos las siguientes dos transacciones

images/qr_code_anatomy.png

Podemos agregarlas para obtener una nueva transacci贸n que no se puede desagregar en dos transacciones (podemos hacerlo ya que hemos visto las transacciones antes de su agregaci贸n).

images/qr_code_anatomy.png

Ahora tenemos una sola transacci贸n. N贸tese que las entradas, salidas y n煤cleos han cambiado un poco su orden. Esto se debe a que se ordenan de forma ascendente para evitar adivinar qu茅 podr铆a ser parte de la misma transacci贸n, por ejemplo, si simplemente las agregamos al final, entonces las dos 煤ltimas salidas y la 煤ltima entrada probablemente ser铆an de la misma transacci贸n. Tambi茅n tenemos dos n煤cleos ahora y esto est谩 bien porque una transacci贸n tiene un conjunto de n煤cleos y cuando agregamos dos transacciones v谩lidas, sus n煤cleos servir谩n como prueba de que la transacci贸n es v谩lida; necesitamos ambos n煤cleos para demostrar la validez de esta transacci贸n agregada. Como el resultado es solo otra transacci贸n de MWC, podemos agregarla con una nueva transacci贸n para obtener una transacci贸n a煤n m谩s grande; podemos repetir este proceso de agregaci贸n tantas veces como queramos.

Esto nos permite agregar todas las transacciones en un bloque en una sola transacci贸n. Ya no necesitamos representar el bloque como una secuencia de transacciones, simplemente podemos decir que contiene un conjunto de entradas, un conjunto de salidas y un conjunto de n煤cleos. 隆El bloque en s铆 es solo un par de encabezados y una sola transacci贸n!

Corte de transacciones

En Bitcoin, los nuevos nodos que se unen a la red necesitan descargar el historial de todas las transacciones y reproducirlas localmente para reproducir el estado del libro mayor. Mimblewimble y MWC mejoran esto. Veamos qu茅 sucede cuando se realiza una transacci贸n en este nuevo dise帽o de blockchain.

Digamos que tenemos la siguiente transacci贸n

images/qr_code_anatomy.png

Ahora consideremos otra transacci贸n que gasta una de las salidas de la primera transacci贸n

images/qr_code_anatomy.png

Ahora agregamos las dos transacciones juntas para obtener

images/qr_code_anatomy.png

驴Qu茅? 驴No es lo que esper谩bamos, verdad? 驴D贸nde desaparecieron la entrada y salida verde? Resulta que cuando se gasta una salida, podemos eliminar la entrada y salida correspondiente y olvidarnos de ellas como si nunca hubieran existido y la transacci贸n sigue siendo v谩lida. Esto significa que podemos gastar y olvidar incluso antes de que la transacci贸n se registre en la blockchain. Este proceso de reducir una transacci贸n a una m谩s simple donde eliminamos las entradas y salidas correspondientes se llama corte de transacciones y fue