Lightning Network je pravděpodobně nejočekávanější technologická inovace, která bude nasazena na bitcoiny. Platební vrstva, kterou poprvé navrhli Joseph Poon a Tadge Dryja asi před rokem, slibuje podporu prakticky neomezeného počtu transakcí mimo řetězec mezi uživateli, a to téměř bez nákladů – při využití zabezpečení nabízeného bitcoiny.
Nejméně tři společnosti – Poon a Dryja’s Blesk, Blockstream a Blockchain – v současné době pracují na implementaci technologie. Ale jen málo lidí mimo tuto malou technologickou linii plně pochopí, jak je nastavena „budoucnost mikroplatby“, která posílí schopnosti bitcoinu.
V této třídílné sérii stanoví Bitcoin Magazine základní stavební kameny Lightning Network a ukazuje, jak do sebe zapadají, aby realizovaly tuto nadcházející vrstvu protokolu.
Tato první část série zavádí nezbytné stavební bloky a ukazuje, jak je lze kombinovat a vytvořit „inteligentní smlouvy“, které lze použít k realizaci prvního požadavku Lightning Network: obousměrného platebního kanálu.
(Poznámka: Kdokoli, kdo dobře rozumí bitcoinu, může stavební bloky přeskočit.)
Stavební blok # 1: Nepotvrzené transakce
Bitcoinový protokol se skládá z transakcí, které jsou obvykle spojeny s předchozími transakcemi a potenciálně s budoucími transakcemi. Každá transakce obsahuje vstupy, které odkazují na adresy, ze kterých jsou odesílány bitcoiny, a výstupy, které odkazují na adresy, na které jsou odesílány bitcoiny. Kromě toho musí vstupy zahrnovat požadavky na odesílání bitcoinů, jako jsou podpisy, které prokazují „vlastnictví“ vstupních adres. Výstupy mezitím stanoví nové požadavky, které musí být zahrnuty do vstupu následné transakce.
Jako jedna ze svých klíčových funkcí je Lightning Network vybudován z víceméně pravidelných bitcoinových transakcí. Jde jen o to, že tyto transakce obvykle nejsou ve skutečnosti vysílány v bitcoinové síti. Místo toho jsou uloženy lokálně na uzlech uživatelů – lze je však kdykoli vysílat po síti.
Building Block # 2: Double-Spend Protection
Druhý stavební blok pro Lightning Network pravděpodobně nevyžaduje příliš mnoho vysvětlování, protože jde pravděpodobně o raison d’être pro samotný bitcoin: ochrana dvojitého utrácení. Pokud se dvě transakce (nebo: vstupy) spoléhají na stejný výstup, může potvrdit pouze jedna.
Důležité je zde mít na paměti, že i nepotvrzené transakce mohou být konfliktní, což znamená, že je možné potvrdit pouze jednou.
Building Block # 3: Multisig
Třetí stavební blok Lightning Network je také přímočarý: multisignature (multisig) adresy. (Nebo obecněji: P2SH-adresy.)
Multisig adresy jsou bitcoinové adresy, které – jak název napovídá – vyžadují více soukromých klíčů k „odemknutí“ a utrácení bitcoinů. Multisig adresy lze nastavit za nejrůznějších podmínek. Například vyžadovat dva ze tří možných klíčů nebo patnáct z patnácti, nebo téměř jakoukoli jinou kombinaci.
Síť Lightning často používá dvě ze dvou (2 ze 2) multisig nastavení. Odemknutí bitcoinů z multisig adres 2 na 2 vyžaduje dva podpisy ze dvou vyhrazených klíčů.
Building Block # 4: Time-Locks
Čtvrtým stavebním kamenem je časový zámek. Časové zámky mohou „uzamknout“ bitcoiny ve výstupu, aby byly utratitelné (budou zahrnuty v následném vstupu) až v určitém okamžiku v budoucnosti.
Existují dva různé typy časových zámků: absolutní typ, nazývaný CheckLockTimeVerify (CLTV), a relativní typ, CheckSequenceVerify (CSV). CLTV uzamkne bitcoiny až do (více či méně) konkrétního času v budoucnosti: skutečného času a data nebo konkrétní výšky bloku. CSV místo toho používá relativní čas. Jakmile je výstup CVS zaznamenán na blockchainu, trvá od tohoto okamžiku určité množství bloků, než mohou být bitcoiny znovu použity.
Building Block # 5: Hash Values and Secrets
Pátý a poslední stavební blok – kryptografie – je nejzákladnějším stavebním kamenem samotného bitcoinu. Ale v Lightning Network se používá novým způsobem.
Stručně řečeno, „hodnota“ nebo „tajemství“ je dlouhý a jedinečný řetězec čísel, který je prakticky nemožné uhodnout, dokonce ani pro počítač s nekonečnými pokusy. Pomocí speciálního výpočtu lze tuto hodnotu (nebo tajemství) „hashovat“ do jiného řetězce čísel, „hash“. A tady je trik: hash může snadno reprodukovat každý, kdo zná hodnotu. Ale to nefunguje obráceně; je to jednosměrná ulice.
Tento trik lze použít v samotném bitcoinu, opět k „uzamčení bitcoinů“. (Ve skutečnosti to tak skutečně je, jak bitcoiny fungují.) Například hash může být zahrnut do výstupu a vyžaduje následující vstup, aby zahrnoval odpovídající hodnotu, aby byl použitelný.
První výzva: obousměrné platební kanály
Ještě předtím, než byla představena Lightning Network, koncept platebních kanálů už nějakou dobu existoval. Typické platební kanály jsou užitečné pro určité účely, ale také omezené: jsou jednosměrné. Alice může zaplatit Bobovi několik transakcí mimo řetězec, ale Bob nemůže platit Alici přes stejný kanál vůbec.
Jako klíčovou vlastnost Lightning Network navrhli Poon a Dryja důvěryhodné obousměrné platební kanály.
Otevření kanálu
Chcete-li nastavit obousměrný platební kanál, musí se obě zúčastněné strany nejprve dohodnout na zahajovací transakci. Tato otevírací transakce určuje, kolik bitcoinů každý vloží do kanálu.
Řekněme, že Alice chce Bobovi poslat jeden bitcoin. Vzhledem k tomu, že Alice a Bob očekávají častější transakce, rozhodli se otevřít obousměrný platební kanál a pomocí něj poslat bitcoin. (Odeslání celého bitcoinu je pro platební kanál pravděpodobně hodně, protože tyto by mohly být užitečnější pro mikroplatby – ale je to naprosto možné.)
Chcete-li otevřít kanál, Alice a Bob pošlou každý pět bitcoinů na multisig adresu 2 ze 2. Toto je „otevírací transakce“. Bitcoiny lze z této adresy utratit, pouze pokud Alice a Bob podepíší následnou transakci.
Navíc Alice a Bob vytvoří tajemství (řetězec čísel) a vymění si hash.
Alice nyní okamžitě vytvoří následnou transakci z otevírací transakce. Toto je „transakce závazku“. Při transakci se závazky si Alice pošle čtyři bitcoiny sama sobě a šest bitcoinů na druhou multisig adresu. Tato druhá multisig adresa je trochu funky. Může si ho Bob odemknout sám, ale až poté, co bylo vytěženo dalších 1000 bloků poté, co je zahrnuto do blockchainu; obsahuje zámek CSV. Nebo ji může Alice otevřít sama, ale pouze pokud obsahuje i tajemství, za které jí Bob právě teď dal hash. (Alice samozřejmě netuší, co je to za tajemství – ví jen hash – takže neexistuje žádný způsob, jak tuto možnost hned využít.)
Alice podepisuje svůj konec této transakce závazku. Ale ona to nevysílá! Místo toho to dává Bobovi.
Mezitím Bob dělá totéž, ale zrcadlově. Vytvoří také transakci závazku, ze které pošle šest bitcoinů sobě a čtyři na novou funky multisig adresu. Alice může odemknout tuto adresu, pokud čeká dalších 1000 bloků, nebo Bob ji odemkne s Alicí pomocí jejího tajemství.
Bob podepíše tuto polovinu a dá ji Alici.
Po celé této výměně „napůl platných“ transakcí se závazky a hash tajemství podepisují a vysílají zahajovací transakci, aby se ujistil, že je zaznamenána na blockchainu. Kanál je nyní oficiálně otevřen.
V tomto okamžiku mohli Alice i Bob podepsat a vyslat poloplatnou transakci závazku, kterou dostali od druhého. Pokud to Alice udělá, Bob okamžitě získá šest bitcoinů. Pokud ano, Alice okamžitě získá čtyři bitcoiny. Ale kdokoli transakci podepíše a odešle, bude muset počkat 1 000 bloků, aby odemkl následnou multisig-adresu, a vyzvednout zbývající bitcoiny.
A toto je klíčový trik platebního kanálu: vůbec nepodepisujte a nevysílejte svou polovinu transakce.
Aktualizace kanálu
O něco později chce Bob poslat Alici jeden bitcoin zpět. Chtějí aktualizovat stav kanálu, aby byla rovnováha opět pět na pět. Aby toho dosáhli, udělají Alice a Bob dvě věci.
Nejprve oba opakujte postup, jak je popsáno výše (kromě toho, že otevírací transakce je již zaznamenána na blockchainu; tato část je přeskočena). Tentokrát si Alice i Bob připisují pět bitcoinů a oba si připisují pět bitcoinů funky multisig-adresy. Podmínky pro tyto multisig-adresy jsou podobné, až na to, že vyžadují nová tajemství: Alice i Bob si navzájem poskytují nový hash. Oba podepíší svou novou napůl platnou transakci závazku a navzájem si ji předají.
Zadruhé, Alice a Bob si navzájem předávají svá první tajemství, jak byla použita v prvním nastavení.
V tomto okamžiku mohli Alice i Bob znovu podepsat a vyslat novou „poloplatnou“ transakci závazku, kterou právě dostali. Jejich protistrana by okamžitě získala pět bitcoinů, zatímco vysílatel by musel čekat 1000 bloků. Jako takový je kanál aktualizován.
Co ale brání Bobovi ve vysílání starší transakce se závazky? Tato transakce se závazky vedla k cestě, která mu zaplatila šest bitcoinů, místo pěti ….
To, co Bobovi brání, je samozřejmě jeho první tajemství, které nyní prozradil Alici.
Bob už nemůže bezpečně podepsat a vysílat starší transakci se závazky, protože Alice nyní zná Bobovo první tajemství. Pokud by měl Bob tuto závazkovou transakci podepsat a vyslat, okamžitě by poslal Alici čtyři bitcoiny… a musel by čekat 1 000 bloků, aby získal svých šest bitcoinů. To je problém, protože teď, když Alice zná jeho tajemství, mohla tentokrát využít k tomu, aby porazila Boba, a získala dalších šest bitcoinů!
A protože Bob má Alicino tajemství také, platí to i opačně. Pokud se Alice pokusí podepsat a vyslat starou transakci závazku, může Bob ukrást všechny bitcoiny v kanálu.
To samozřejmě znamená, že jak Alice, tak Bob jsou silně motivováni k tomu, aby hráli fér, a pouze podepisují a vysílají nejnovější stav kanálu..
Dále je třeba toto nastavení obousměrného platebního kanálu rozšířit, aby umožňovalo platby přes síť. Tomu se věnuje druhý článek této série.
Děkujeme Rusty Russellovi a Josephovi Poonovi za přidanou zpětnou vazbu.