Cashu es un protocolo abierto de e-cash con firmas ciegas, usado a menudo con Bitcoin mediante Lightning Network. La cartera conserva pruebas emitidas por una ceca concreta, no la facultad de firmar sobre su reserva de bitcoin.
Cashu no es una única ceca compartida. Un token identifica al emisor, la unidad y el conjunto de claves de firma; la misma cifra no implica la misma moneda ni obligación. Los tokens de una ceca no se canjean automáticamente en otra. El formato V4 usa CBOR y contiene pruebas de una sola ceca. [Cashu — NUT-00: Protocol and tokens] [Cashu — NUT-02: Keysets and fees] [Cashu — Project introduction]
El protocolo básico utiliza BDHKE sobre secp256k1. La cartera crea un secreto y ciega su punto, la ceca lo firma y la cartera elimina el cegamiento. Las denominaciones tienen claves distintas: la ceca conoce los valores de las pruebas emitidas, aunque no debería conocer su futura forma sin cegar. [Cashu — NUT-00: Protocol and tokens]
Un token ordinario sin condiciones se puede copiar. El receptor lo intercambia mediante swap por nuevas pruebas con sus propios secretos; la ceca invalida las entradas anteriores. UNSPENT solo describe el estado en ese momento, no reserva el token al receptor. PENDING indica procesamiento en curso y SPENT una prueba ya canjeada. [Cashu — NUT-03: Swap tokens] [Cashu — NUT-07: Token state check]
La extensión opcional NUT-12 añade una prueba DLEQ de que la firma corresponde a la clave pública de la ceca. Con los datos adecuados, el receptor puede verificarla sin conexión. Esto no revela si alguien ya gastó el token, si la ceca responde o si dispone de reservas. La verificación sin conexión no sustituye la recepción mediante swap. [Cashu — NUT-12: Offline signature validation]
NUT-02 distingue active=false del campo opcional final_expiry. Un conjunto inactivo ya no emite nuevos tokens, pero sus pruebas siguen aceptándose como entradas; tras la caducidad final, la especificación deja de exigir que la ceca las honre. La comisión de entrada input_fee_ppk se suma según el número de pruebas y sus tarifas, redondeando hacia arriba. [Cashu — NUT-02: Keysets and fees]
En melt, la cartera entrega pruebas a cambio de un pago externo, a menudo por Lightning Network. La cotización especifica importe, unidad, vencimiento y posible reserva de comisión; también pueden aplicarse comisiones de entrada. HTTP 200 con PENDING no confirma el pago. El resultado final debe distinguirse de la aceptación de la solicitud. [Cashu — NUT-05: Melting tokens]
El cegamiento no elimina la información sobre importes, tiempos o conexiones. NUT-03 recomienda ordenar las denominaciones solicitadas para que su orden no revele la división entre pago y cambio. Las consultas del emisor sobre el estado de las pruebas transferidas pueden facilitar que la ceca vincule a emisor y receptor. [Cashu — NUT-03: Swap tokens] [Cashu — NUT-07: Token state check]
NUT-13 deriva secretos y factores de cegamiento de la semilla según el conjunto de claves y el contador. La versión 01 usa HMAC-SHA256; la antigua 00, BIP32. Recuperar requiere los conjuntos originales y las firmas obtenidas mediante NUT-09, seguidos de la comprobación de gasto. Sin una ceca que coopere, la semilla no garantiza recuperar las firmas ni retirar la reserva. [Cashu — NUT-13: Deterministic secrets] [Cashu — NUT-09: Restore signatures]
Para obtener la imagen más completa, lee esta entrada junto con Fedimint, eCash chaumiano, Firma ciega, Lightning Network, Riesgo de contraparte, Satoshi. También enlazan con esta entrada eCash chaumiano, Firma ciega, Fedimint, Fiduciary Media.