Tras la caída del imperio de FTX, se ha descubierto que Sam estaba haciendo lo que quería con el dinero de los clientes. Esto ha llevado a que la mayoría de los exchanges, añadan el sistema «proof of reserve». Sin embargo, se ciernen varias preguntas sobre este sistema. ¿Es esto suficiente? ¿Se puede falsificar? ¿Hay otra solución? Estas respuestas bajo las siguientes líneas.
La diferencia entre lo que se tiene y lo que se debe
El proof of reserve es el sistema que han empleado los exchanges para mostrar de manera transparente y pública los fondos que poseen bajo su custodia en una instantánea de tiempo. Se pueden visualizar estos balances tanto en Coinmarketcap como en DefiLlama.
Esta prueba está muy bien, pero está incompleta. Por ejemplo, de que me sirve saber cuánto dinero tiene Binance si ni siquiera sé cuánto debería tener. En este caso, nos falta el concepto de cuánto dinero han depositado sus clientes. A esto se le denomina «proof of liabilities.
Por tanto, si el proof of liabilities y proof of reserve son iguales (o proof of reserve es mayor), significa que el Exchange tiene el mismo o más dinero disponible del que debería tener. A esta prueba se le llamará «proof of solvency». Esta demostrará la solvencia del Exchange.
El problema de Proof of Solvency
Un problema que presenta esta prueba de solvencia es cómo presentar esto a los clientes. Por ejemplo, si Kucoin cuenta que tiene 50 mil millones de $ en su tesorería, en teoría es solvente. Pero estaríamos confiando en lo que nos dice el tercero y no sigue la filosofía blockchain. Además, se añaden dos obstáculos añadidos.
Falsificación del Proof of Reserve
Para demostrar cuánto dinero tiene un Exchange, lo más sencillo es realizar una transferencia hacia una wallet, que se conoce previamente, y así se demuestra la cantidad que esa plataforma maneja. Esto es lo que hizo MT GOX en junio del 2011.
Pero este método tiene un problema. El Exchange podría pedir un préstamo días antes para pedir este préstamo o bien con ayuda de terceros, que le destinen una cantidad y días posteriores la devuelvan. Estos movimientos extraños se han producido entre algunos exchanges como Crypto.com y Gate.io
Protección de datos en el Proof of Liability
Para conocer el dinero de los clientes, un buen método sería publicar una lista de todos los clientes con sus balances. De esta forma, un cliente puede buscarse y comprobar si su balance coincide. Sin embargo, por temas de privacidad y seguridad, no pueden estar al descubierto todos estos datos por las implicaciones legales que tendría.
¿Qué posible solución encontramos?
Los árboles de Merkle tienen la respuesta. Para que se entienda perfectamente, imaginémonos un exchange con 8 clientes y un saldo de 1480 $ETH. Supongamos que yo soy Charlie y tengo 10 $ ETH, pero quiero saber si mi exchanges los tiene disponibles. Para ello, el Exchange me da el hash de los recuadros azules y, además, me dice cuántos $ETH tiene en total.
El hash se saca con un identificador de usuario más un número aleatorio. Además, puedo generar un hash a partir de información, pero no puedo conseguir esa información a través del hash. Sabiendo esto, tan solo se debe ir calculando hashes con la función que indique el Exchange y listo. Los pasos se reflejan en la siguiente captura.
Con esto, se consigue ser más eficiente y no vulnerar ningún derecho de privacidad y seguridad. Aunque es preciso recordar también que este árbol de Merkle puede ser falsificado. Por último, esto es un resumen de un artículo del propio Vitalik Buterin.