Cashu é um protocolo aberto de e-cash com assinaturas cegas, frequentemente usado com Bitcoin através da Lightning Network. A carteira guarda provas emitidas por uma casa emissora específica, não a autorização para assinar sobre a sua reserva de bitcoin.
Cashu não é uma única casa emissora partilhada. O token identifica emissor, unidade e conjunto de chaves de assinatura; o mesmo valor numérico não implica a mesma moeda ou obrigação. Tokens de um emissor não são automaticamente resgatáveis noutro. O formato V4 usa CBOR e contém provas de um só emissor. [Cashu — NUT-00: Protocol and tokens] [Cashu — NUT-02: Keysets and fees] [Cashu — Project introduction]
O protocolo básico usa BDHKE em secp256k1. A carteira cria um segredo e cega o seu ponto, o emissor assina-o e a carteira remove o cegamento. As denominações têm chaves distintas: o emissor conhece os valores das provas emitidas, embora não deva conhecer a sua futura forma sem cegamento. [Cashu — NUT-00: Protocol and tokens]
Um token comum sem condições pode ser copiado. O destinatário troca-o por swap por novas provas com os seus próprios segredos; o emissor invalida as entradas antigas. UNSPENT é apenas o estado naquele instante, não uma reserva para o destinatário. PENDING indica processamento em curso e SPENT uma prova já resgatada. [Cashu — NUT-03: Swap tokens] [Cashu — NUT-07: Token state check]
A extensão opcional NUT-12 acrescenta uma prova DLEQ de que a assinatura corresponde à chave pública do emissor. Com os dados certos, o destinatário pode verificá-la offline. Isso não revela se alguém entretanto gastou o token, se o emissor responde ou se tem reservas. A verificação offline não substitui a receção por swap. [Cashu — NUT-12: Offline signature validation]
NUT-02 distingue active=false do campo opcional final_expiry. Um conjunto inativo deixa de emitir novos tokens, mas as suas provas continuam a ser aceites como entradas; após a expiração final, a especificação já não obriga o emissor a honrá-las. A taxa de entrada input_fee_ppk soma-se segundo o número de provas e as respetivas tarifas, com arredondamento para cima. [Cashu — NUT-02: Keysets and fees]
Num melt, a carteira entrega provas para um pagamento externo, frequentemente pela Lightning Network. A proposta especifica montante, unidade, validade e eventual reserva para taxas; podem ainda existir taxas de entrada. HTTP 200 com PENDING não confirma o pagamento. É preciso distinguir o resultado final da aceitação do pedido. [Cashu — NUT-05: Melting tokens]
O cegamento não elimina dados sobre montantes, horários ou ligações de rede. NUT-03 recomenda ordenar as denominações pedidas para que a sua ordem não revele a divisão entre pagamento e troco. Consultas do remetente sobre o estado das provas transferidas podem facilitar ao emissor a ligação entre remetente e destinatário. [Cashu — NUT-03: Swap tokens] [Cashu — NUT-07: Token state check]
NUT-13 deriva segredos e fatores de cegamento da seed segundo o conjunto de chaves e o contador. A versão 01 usa HMAC-SHA256; a antiga 00, BIP32. A recuperação exige os conjuntos originais e as assinaturas obtidas por NUT-09, seguidos da verificação de gastos. Sem cooperação do emissor, a seed não garante recuperar assinaturas nem levantar a reserva. [Cashu — NUT-13: Deterministic secrets] [Cashu — NUT-09: Restore signatures]
Para ter uma visão mais completa, leia este verbete junto com Fedimint, Chaumian eCash, Blind signature, Lightning Network, Counterparty risk, Satoshi. Também há referências a este verbete em Chaumian eCash, Blind signature, Fedimint, Fiduciary Media.