Wei Dai es criptógrafo y autor original de la biblioteca Crypto++. En b-money, una propuesta de 1998, describió cómo personas con seudónimos digitales podrían llevar cuentas monetarias y celebrar contratos. Bitcoin cita su trabajo, pero utiliza su propio diseño de red y sus propias reglas.
Para cifrar un mensaje o verificar una firma digital, un programador no necesita escribir todos los procedimientos desde cero. Puede recurrir a una biblioteca criptográfica: un conjunto de funciones para trabajar con datos protegidos. Wei Dai escribió originalmente una de ellas, Crypto++, en C++. Es software que se puede integrar en una aplicación. b-money es una aportación distinta: una propuesta escrita de sistema monetario. La existencia de una biblioteca funcional no demuestra que también funcionara una red basada en aquella propuesta. Para entender su contribución conviene seguir ambas líneas por separado. [3]
En noviembre de 1998, Wei Dai planteó una cuestión reconocible incluso al comprar por internet: ¿cómo cooperar sin revelar la identidad? En b-money propuso dos protocolos, es decir, dos conjuntos de reglas para llevar cuentas compartidas y celebrar contratos. Las claves públicas servirían de seudónimos y los mensajes llevarían firmas digitales. Sin embargo, una red que impidiera rastrear a los participantes era un supuesto inicial, no algo que la propuesta garantizara. El propio autor calificó la primera versión de poco práctica por sus exigencias de difusión de mensajes. Estamos ante un diseño razonado, no ante instrucciones para un servicio anónimo ya operativo. [1]
Imaginemos que Ana tiene 5 unidades de b-money y envía 2 a Tomás. En la primera versión, cada participante conserva una copia de las cuentas. El mensaje firmado de Ana indica que se descuente el pago de su cuenta y se abone en la de Tomás; a ella le quedan 3 unidades. Si un mensaje produjera un saldo negativo, se ignoraría. La firma permite comprobar la autorización, pero una contabilidad compartida también necesita reglas para entregar los mensajes. Bitcoin empleó después el modelo UTXO: registra salidas concretas de transacciones que todavía pueden gastarse. Un objetivo parecido no implica el mismo método contable. [1]
La segunda versión de b-money encarga la contabilidad a una parte de los participantes, llamados servidores. Los demás tienen menos trabajo, pero hay que supervisar a quienes llevan los registros. Los servidores deben aportar depósitos de los que se puedan descontar sanciones y publicar periódicamente sus bases de datos, comprometiéndose públicamente con su contenido. Los usuarios comprueban sus saldos y que la suma de las cuentas no supere el dinero emitido. Quien recibe un pago también verifica su procesamiento con servidores elegidos al azar. El depósito no elimina la confianza por arte de magia: forma parte del control propuesto sobre las personas y máquinas que gestionan las cuentas. [1]
En el b-money original se crean unidades al resolver un problema computacional. Su cantidad dependería del coste del cálculo, expresado en una cesta estándar de bienes. La cesta ofrece una medida común de costes; no fija el precio que alguien pagará por una unidad en el mercado. Pero los ordenadores mejoran y sus costes reales no son conocidos por todos. Dai señaló esta dificultad y propuso en un apéndice una alternativa mediante subasta: los encargados de las cuentas negocian cuánto dinero nuevo crear y los aspirantes compiten con ofertas de trabajo computacional. No es el calendario de emisión de BTC. Reconocer el problema y explorar otra solución también forma parte del valor del texto. [1]
La propuesta va más allá de los pagos. Pensemos en un encargo de traducción: una firma puede demostrar la aceptación del contrato, pero no la calidad del texto entregado. Por eso, los contratos de b-money contemplan depósitos, compensaciones pactadas por incumplimiento y un árbitro. Si las partes no logran acordar una solución con su ayuda, presentan argumentos y cada participante que lleva las cuentas decide por sí mismo. Esto muestra lo difícil que es trasladar los conflictos humanos a un sistema digital. Bitcoin Script, el lenguaje que expresa las condiciones para gastar una salida, evalúa condiciones técnicas precisas. Por sí solo no juzga si una traducción es buena. [1]
Satoshi Nakamoto incluyó b-money, de 1998, como referencia 1 en el whitepaper de Bitcoin, el documento que explica su diseño. Así podemos seguir un vínculo intelectual concreto: antes de Bitcoin ya se investigaba el dinero digital sin un administrador común. La cita no significa que Bitcoin adoptara todos los mecanismos propuestos. Las cuentas, la emisión y la resolución de disputas de b-money difieren de las de Bitcoin. Tampoco revela quién estaba detrás del nombre Satoshi Nakamoto. Para estudiar esta historia resulta más útil comparar los textos documentados que deducir una identidad a partir de una cita. [2]
La historia de Crypto++ sigue con correcciones, pruebas y el trabajo de otros desarrolladores. El proyecto registra que Wei Dai entregó la gestión cotidiana a la comunidad en junio de 2015. Para quienes usan la biblioteca, importa tanto el autor original como la versión concreta y el uso correcto de sus funciones. Una biblioteca aporta herramientas de firma o cifrado, pero no resuelve por sí sola el almacenamiento seguro de claves ni el diseño completo de una cartera. Quien construye una aplicación debe leer la documentación, seguir las correcciones y verificar su propio uso. Reconocer la aportación del autor y examinar el software actual son tareas complementarias. [3]
Para obtener la imagen más completa, lee esta entrada junto con Adam Back, Nick Szabo, b-money, Satoshi Nakamoto. También enlazan con esta entrada b-money, Bit Gold, Adam Back, Nick Szabo.