Z coho sa sklada Ring Signature transakcia?

OtázkyCategory: MoneroZ coho sa sklada Ring Signature transakcia?
Adam asked 10 mesiacov ago

Keď sa robí Ring signature, tak odkiaľ sú tí zvyšný členovia / tie ostatné public keys? Sú to nejaké čakajúce transakcie v poole alebo je to nejaký random či PK z predchádzajúcich transakcií?

2 Answers
mr.x Staff answered 10 mesiacov ago

Všechny výstupy všech transakcí jsou očíslované podle toho, jak jsou za sebou v blockchainu. Ty znáš číslo „svého“ výstupu, a jako ostatní klíče prostě zvolíš jiná čísla. Ideálně taková, aby pravděpodobnostní rozložení zůstalo stejné (tj. bude tam více nových výstupů a méně starých, protože utrácení starých výstupů je celkem vzácné).

Resp. nedáš tam jen ty čísla, ale samozřejmě použiješ pro výpočet podpisu i příslušné výstupy. Rozhodně není třeba, aby byli ostatní účastníci nějak „online“ - ring signatures fungují tak, že cizí výstupy můžeš použít zcela bez asistence kohokoli jiného.

V podstatě se dá vybrat jakýkoli výstup v RingCT době (po lednu 2017).

mr.x Staff answered 10 mesiacov ago

Adam Čiže napr. vyberiem si výstupy 102,501,83,654 a môj 555. Potom to podpíšem tak aby nebolo vidieť, ktorý výstup to podpísal, vytvorím tak nový výstup 777. Aby bolo zabránené double spendu, tak môj 555 už nebudem môcť použiť znova?
Aleš Double spendu je zabráněno tak, že součástí podpisu je tzv. key image. Ten je vypočítán ze správného výstupu. A musí být vypočítán z nějakého z výstupů, jinak by ten celý podpis nešel zkonstruovat.
Síť pak jen ověří, zda se daný key image už někdy v síti objevil, nebo ne. Pokud se objevil, jedná se o double spend. Pokud ne, je to OK. Nevýhoda toho celého je, že ověřující uzly musí udržovat seznam utracených key images navždy. Nelze to nijak prořezávat, protože nevíš, co k čemu patří. Tahle databáze jen bobtná (stejně jako blockchain).
Jedním z jiných důsledků také je, že pokud by nějaký odesílatel špatně použil stealth address a na jednu adresu by poslal něco dvakrát (třeba by měl špatný generátor náhodnosti), vedlo by to k tomu, že kdybys je chtěl utratit, oba výstupy by generovaly stejný key image. Tedy šlo by utratit jen jeden z nich. Peněženka příjemce by se v takovém případě měla chovat tak, že by měla brát v úvahu jen ten největší z nich. A pokud už by byl v minulosti utracen, tak nové stejné výstupy ignorovat.

Adam čiže tie stelth adresy sú generované z mojej adresy, dajú sa použiť iba raz a moja peňaženka keď prečesava blockchain tak ich hľadá ? Každá stelth adresa produkuje pri rôznych fake vstupoch(mixinoch) ten istý key image?
Aleščiže tie stelth adresy sú generované z mojej adresy, dajú sa použiť iba raz a moja peňaženka keď prečesava blockchain tak ich hľadá ?
Přesně tak. Stealth adresu odesílatel vygeneruje z obou tvých veřejných klíčů (view key, spend key), které jsou zakódované v adrese. Pro zjištění, který z výstupů pak patří tobě, pak musíš peněženka použije soukromý view key.
Pokud používáš remote node, tak se tě tvoje peněženka zeptá jen na nové výstupy všech transakcí od posledního bloku, a pak si ty výstupy musí proskenovat sama.
AlešKaždá stelth adresa produkuje pri rôznych fake vstupoch(mixinoch) ten istý key image?
Ano. Do výpočtu key image vstupuje jen ten samotný správný klíč, jiné mixiny se tam neprojevují.
Technicky vzato se to počítá takhle:

k * H(K)

kde

‚k‘ je privátní klíč odpovídající dané jednorázové adrese

‚H‘ je hashovací funkce Keccak-256

‚K‘ je veřejný klíč jednorázové adresy (K = k * G, kde ‚G‘ je generátor definovaný pro celé Monero).