183 / 736NEUTRINO

Neutrino

Jak peněženka hledá platby bez stahování celého řetězce

Telefon nemusí uchovávat všechny bitcoinové bloky, aby peněženka našla vlastní platby. Neutrino jí pomáhá nejprve vybrat bloky, které stojí za prohlédnutí, a potřebná data získat ze sítě. Šetří prostředky zařízení, ale nenabízí stejnou míru samostatného ověřování jako plný uzel.

Neutrino je lehký bitcoinový klient od Lightning Labs, napsaný v jazyce Go a navržený i pro mobilní aplikace s Lightning Network. Používá BIP 157 a BIP 158 pro práci s kompaktními filtry bloků. Je to konkrétní softwarová knihovna, nikoli obecný název lehkých peněženek nebo náhrada za Full Node, který sám kontroluje všechna pravidla.

Anna si otevře peněženku a čeká, že uvidí přijatou platbu. Aby jí aplikace mohla ukázat správný stav, musí získat a zpracovat údaje z bitcoinové sítě. Neutrino může být částí aplikace, která tuto práci zajišťuje, aniž telefon trvale ukládá celý řetězec bloků. Blok je skupina transakcí zapsaná do společné historie bitcoinové sítě. V Neutrinu získávání dat zajišťuje služba ChainService: spravuje připojení, místní databázi a synchronizaci hlaviček. Hlavička je krátký souhrn základních údajů bloku. Soukromý klíč je tajné číslo, kterým se vytváří digitální podpis pro schválení utracení. Samotné použití Neutrina ovšem neříká, kdo drží Anniny soukromé klíče nebo kdo schvaluje odeslání. O správu klíčů, uživatelské rozhraní a zálohy se stará peněženka, která knihovnu používá. [1]

Kompaktní filtr si lze představit jako malý vyhledávací rejstřík k jednomu bloku. Peněženka si jej stáhne a na vlastním zařízení zkusí, zda odpovídá tomu, co hledá. Ve skutečnosti porovnává skripty, tedy podmínky, za kterých lze konkrétní bitcoinové výstupy utratit. Výstup je část transakce, která určuje částku a podmínky jejího dalšího utracení. Peněženka tedy nemusí protistraně posílat celý seznam svých adres. Když se objeví shoda, stáhne příslušný blok a hledá skutečnou transakci. Správně vytvořený filtr může dát i falešně pozitivní shodu: blok se stáhne zbytečně, protože hledanou položku nakonec neobsahuje. Samotná shoda proto nepotvrzuje příjem, částku ani možnost peněženky dané peníze utratit. [1] [2] [3]

Anna vymění telefon a obnoví peněženku. Nestačí však znovu hledat až od dnešních bloků, pokud přijímala platby už dříve. Aplikace musí dodat správné sledované skripty i dostatečně časný začátek prohledávání. Funkce Rescan podle dokumentace bez zadaného počátečního bloku začíná u posledního známého bloku, nikoli automaticky na začátku celé historie. Dobře fungující filtr nenajde adresu, kterou peněženka vůbec nehledá, ani nepřinese přeskočené staré platby. Je proto potřeba odlišit dokončenou obnovu od probíhajícího skenování. Prázdný přehled během obnovy sám o sobě nedokazuje, že jsou prostředky pryč. [1]

Neutrino synchronizuje hlavičky bloků a hlavičky filtrů. U blokových hlaviček lze kontrolovat návaznost a Proof of Work, tedy důkaz výpočetní práce, a sledovat řetězec s největší souhrnnou prací. To je podstatně víc než slepě převzít číslo zůstatku ze serveru, ale stále méně než samostatně ověřit všechny transakce a pravidla jako Full Node. Navíc jde o dva odlišné řetězce hlaviček. Bitcoinové blokové hlavičky přímo nezavazují ke správnosti těchto filtrů. Pouhá kontrola hashů, kryptografických otisků, proto nevyloučí podvodnou, ale vnitřně konzistentní sadu filtrů. Úspora práce má svou konkrétní hranici důvěry. [2] [4]

Peer je další počítač v síti, od kterého klient získává data. BIP 157 počítá s porovnáváním odpovědí a alespoň jedním poctivým peerem, díky němuž lze odhalit chybné filtry. Pokud však všechna spojení ovládá stejný útočník, počet připojených počítačů sám nepomůže. Mohou se shodnout na stejné nepravdivé odpovědi nebo klientovi zatajit novější stav. Takové odříznutí od poctivých zdrojů souvisí s Eclipse Attack. Peněženka potřebuje nejen spojení, ale i dostupné a dostatečně nezávislé zdroje. Zelená ikona připojení není důkazem, že už zná aktuální a úplný přehled plateb. [2]

Představme si, že Jan Anně právě poslal peníze. Jeho transakce může nejprve čekat v Mempool, místním souboru nepotvrzených transakcí některého uzlu, než ji těžař zařadí do bloku. Dokumentovaná oznámení Neutrina recvtx a redeemingtx přicházejí při potvrzení v bloku, nikoli už při vstupu do Mempool. Aplikace, která chce ukazovat i příchozí nepotvrzené platby, potřebuje další odpovídající mechanismus. To není něco, co by samotný filtr bloku mohl zjistit dříve, než blok vznikne. Odeslání, přijetí peerem a potvrzení jsou různé události; chybějící oznámení ještě nedokazuje, že Jan nic neposlal. [1]

Shoda filtru je použitelná jen tehdy, když klient získá i potřebný blok. Pokud jej síť zrovna nedodá, správný závěr je „data zatím chybějí“, ne „zůstatek je nula“. Stav se může změnit také při reorganizaci, kdy síť přijme jinou větev s větší souhrnnou prací a některé dříve připojené bloky odpojí. Rescan hlásí připojení i odpojení bloků, aby aplikace mohla své záznamy přepočítat. Ani soukromí není absolutní: peer sice nedostává seznam hledaných adres, ale vidí požadavky na konkrétní bloky a síťové údaje o spojení. Na způsobu získávání dat proto stále záleží. [1] [2]

Lightning Network je platební síť nad Bitcoinem. V platebním kanálu si dva účastníci průběžně aktualizují, jak se mezi ně dělí společné prostředky, místo aby každou platbu zapisovali do bitcoinového bloku. Neutrino dodává data z blockchainu; samo za uživatele neuchovává údaje potřebné k obnově aktuálního stavu těchto kanálů. Obnova historie peněženky a obnova kanálů jsou proto různé úlohy. README popisuje ukládání vyžádaných filtrů a načítání bloků bez jejich trvalého uložení; konkrétní nároky je vždy potřeba posuzovat podle verze a konfigurace aplikace. Než se člověk na takovou peněženku spolehne, měl by znát její vlastní postup zálohy a obnovy a chování při výpadku zdrojů. Menší databáze v telefonu tyto povinnosti neodstraňuje. [1] [4]

Pro nejúplnější obraz čtěte toto heslo společně s Compact Block Filters, Compact Block Filters, Full Node, Lightning Network, Eclipse Attack, Bitcoin. Opačným směrem na něj odkazují také Compact Block Filters, Compact Block Filters.

DOC · 001Lightning Labs — Neutrino READMEPrimární zdroj DOC · 002BIP 157 — Client Side Block FilteringSpecifikace DOC · 003BIP 158 — Compact Block FiltersSpecifikace DOC · 004Bitcoin developer guide — Operating ModesDokumentace
Revidováno: Primární zdroje · Nejde o investiční doporučení