161 / 691CASHU

Cashu

Tokeny e-cash konkretnej mennicy

Cashu umożliwia przekazywanie prywatnych tokenów e-cash; ich wymiana i wykup zależą od mennicy, która je wyemitowała.

Cashu to otwarty protokół e-cash ze ślepymi podpisami, często używany z Bitcoinem przez Lightning Network. Portfel przechowuje dowody wydane przez konkretną mennicę, a nie uprawnienie do podpisywania wydatków z jej rezerwy bitcoinów.

Cashu nie jest jedną wspólną mennicą. Token wskazuje emitenta, jednostkę i zestaw kluczy podpisujących; ta sama liczba nie oznacza tej samej waluty ani zobowiązania. Tokenów jednej mennicy nie można automatycznie wykupić w innej. Format V4 używa CBOR i zawiera dowody tylko jednej mennicy. [Cashu — NUT-00: Protocol and tokens] [Cashu — NUT-02: Keysets and fees] [Cashu — Project introduction]

Podstawowy protokół wykorzystuje BDHKE na secp256k1. Portfel tworzy sekret i zaślepia jego punkt, mennica go podpisuje, a portfel usuwa zaślepienie. Nominały mają odrębne klucze: mennica zna wartości wydawanych dowodów, choć nie powinna znać ich przyszłej niezaślepionej postaci. [Cashu — NUT-00: Protocol and tokens]

Zwykły bezwarunkowy token można skopiować. Odbiorca wymienia go przez swap na nowe dowody z własnymi sekretami; mennica unieważnia stare wejścia. UNSPENT to tylko chwilowy stan, nie rezerwacja dla odbiorcy. PENDING oznacza trwające przetwarzanie, a SPENT już wykorzystany dowód. [Cashu — NUT-03: Swap tokens] [Cashu — NUT-07: Token state check]

Opcjonalne NUT-12 dodaje dowód DLEQ zgodności podpisu z kluczem publicznym mennicy. Odbiorca mający odpowiednie dane może sprawdzić go offline. Nie ustali w ten sposób, czy ktoś już wydał token, czy mennica odpowiada i czy ma rezerwy. Weryfikacja offline nie zastępuje więc przyjęcia przez swap. [Cashu — NUT-12: Offline signature validation]

NUT-02 rozróżnia active=false i opcjonalne final_expiry. Nieaktywny zestaw nie emituje nowych tokenów, lecz jego dowody nadal są przyjmowane jako wejścia; po ostatecznym wygaśnięciu specyfikacja nie zobowiązuje mennicy do ich honorowania. Opłatę wejściową input_fee_ppk sumuje się według liczby i stawek dowodów, po czym zaokrągla w górę. [Cashu — NUT-02: Keysets and fees]

Przy melt portfel przekazuje dowody za płatność zewnętrzną, często przez Lightning Network. Oferta określa kwotę, jednostkę, ważność i ewentualną rezerwę na opłatę; mogą też wystąpić opłaty wejściowe. HTTP 200 ze stanem PENDING nie potwierdza płatności. Trzeba odróżnić końcowy wynik od przyjęcia żądania. [Cashu — NUT-05: Melting tokens]

Zaślepienie nie usuwa informacji o kwotach, czasie ani połączeniach sieciowych. NUT-03 zaleca sortowanie żądanych nominałów, aby kolejność nie zdradzała podziału na płatność i resztę. Zapytania nadawcy o stan przekazanych dowodów mogą ułatwić mennicy powiązanie nadawcy z odbiorcą. [Cashu — NUT-03: Swap tokens] [Cashu — NUT-07: Token state check]

NUT-13 wyprowadza sekrety i czynniki zaślepienia z seedu według zestawu kluczy i licznika. Wersja 01 używa HMAC-SHA256, starsza 00 — BIP32. Odzyskiwanie wymaga pierwotnych zestawów oraz podpisów uzyskanych przez NUT-09, a następnie sprawdzenia wydania. Bez współpracy mennicy seed nie zapewnia odzyskania podpisów ani wypłaty rezerwy. [Cashu — NUT-13: Deterministic secrets] [Cashu — NUT-09: Restore signatures]

Pełniejszy obraz uzyskasz, czytając to hasło razem z Fedimint, Chaumian eCash, Blind signature, Lightning Network, Counterparty risk, Satoshi. Do tego hasła prowadzą również odsyłacze z Chaumian eCash, Blind signature, Fedimint, Fiduciary Media.

DOC · 001Cashu — NUT-00: Protocol and tokensSpecyfikacja ↗DOC · 002Cashu — NUT-02: Keysets and feesSpecyfikacja ↗DOC · 003Cashu — NUT-03: Swap tokensSpecyfikacja ↗DOC · 004Cashu — NUT-05: Melting tokensSpecyfikacja ↗DOC · 005Cashu — NUT-07: Token state checkSpecyfikacja ↗DOC · 006Cashu — NUT-09: Restore signaturesSpecyfikacja ↗DOC · 007Cashu — NUT-12: Offline signature validationSpecyfikacja ↗DOC · 008Cashu — NUT-13: Deterministic secretsSpecyfikacja ↗DOC · 009Cashu — Project introductionŹródło pierwotne ↗
Najpierw źródła · To nie jest porada inwestycyjna