Cashu je otevřený protokol e-cash se slepými podpisy, často používaný s Bitcoinem přes Lightning Network. Peněženka drží důkazy vydané konkrétní mincovnou, nikoli podpisové oprávnění k její bitcoinové rezervě.
Cashu není jedna společná mincovna. Token identifikuje vydavatele, jednotku a sadu podpisových klíčů; stejná číselná částka neznamená stejnou měnu ani závazek. Token jedné mincovny nelze automaticky uplatnit u jiné. Formát V4 používá CBOR a obsahuje důkazy jediné mincovny. [Cashu — NUT-00: Protocol and tokens] [Cashu — NUT-02: Keysets and fees] [Cashu — Project introduction]
Základní protokol používá BDHKE na secp256k1. Peněženka vytvoří tajemství a zaslepí jeho bod, mincovna jej podepíše a peněženka odstraní zaslepení. Pro nominální hodnoty existují odlišné klíče: mincovna zná hodnoty vydávaných důkazů, přestože nemá znát jejich budoucí nezaslepenou podobu. [Cashu — NUT-00: Protocol and tokens]
Běžný nepodmíněný token lze zkopírovat. Příjemce jej přes swap vymění za nové důkazy se svými tajemstvími; mincovna staré vstupy zneplatní. Stav UNSPENT je pouze okamžitá informace, nikoli rezervace pro příjemce. PENDING označuje probíhající zpracování a SPENT již uplatněný důkaz. [Cashu — NUT-03: Swap tokens] [Cashu — NUT-07: Token state check]
Volitelné NUT-12 přidává DLEQ důkaz, že podpis odpovídá veřejnému klíči mincovny. Příjemce se správnými údaji může podpis ověřit offline. Tím nezjistí, zda někdo mezitím token utratil, zda mincovna odpovídá ani zda má rezervy. Offline ověření tedy nenahrazuje přijetí přes swap. [Cashu — NUT-12: Offline signature validation]
NUT-02 rozlišuje active=false a volitelné final_expiry. Neaktivní sada už nevydává nové tokeny, ale její důkazy se dál přijímají jako vstupy; po konečné expiraci mincovna podle specifikace závazek plnit nemusí. Vstupní poplatek input_fee_ppk se sčítá podle počtu a sazeb důkazů a zaokrouhluje nahoru. [Cashu — NUT-02: Keysets and fees]
Při melt peněženka předá důkazy za vnější platbu, často přes Lightning Network. Nabídka určuje částku, jednotku, platnost a případnou rezervu na poplatek; navíc mohou platit vstupní poplatky. HTTP 200 se stavem PENDING není potvrzená platba. Je nutné rozlišit konečný výsledek od přijetí požadavku. [Cashu — NUT-05: Melting tokens]
Zaslepení neodstraňuje informace o částkách, časování či síťovém spojení. NUT-03 doporučuje seřadit požadované nominální hodnoty, aby pořadí neprozrazovalo rozdělení platby a vráceného zbytku. Dotazy odesílatele na stav předaných důkazů mohou mincovně usnadnit propojení odesílatele s příjemcem. [Cashu — NUT-03: Swap tokens] [Cashu — NUT-07: Token state check]
NUT-13 odvozuje tajemství a zaslepení ze seedu podle sady klíčů a čítače. Verze 01 používá HMAC-SHA256, starší 00 postup BIP32. Obnova potřebuje původní sady a podpisy získané přes NUT-09, pak kontrolu útrat. Seed bez spolupracující mincovny nezajistí obnovu podpisů ani výběr rezervy. [Cashu — NUT-13: Deterministic secrets] [Cashu — NUT-09: Restore signatures]
Pro nejúplnější obraz čtěte toto heslo společně s Fedimint, Chaumovská eCash, Slepý podpis, Lightning Network, Riziko protistrany, Satoshi. Opačným směrem na něj odkazují také Chaumovská eCash, Slepý podpis, Fedimint, Fiduciary Media.