Hlavní navigace

Jak odlehčit Bitcoinu a jako bonus získat víc soukromí

20. 1. 2020
Doba čtení: 6 minut

Sdílet

 Autor: Depositphotos
Když se dnes začne hovořit o škálování Bitcoinu, je řeč zpravidla o Lightning Network, tedy komplikovaném 2layer řešení. Skoro to vypadá, jako by se na první vrstvu rezignovalo. To ale není úplně pravda.

Debata o tom, jak nejlépe škálovat transakční kapacitu bitcoinové sítě, se táhne poměrně dlouho a sahá rozhodně mnohem hlouběji než do roku 2017, kdy eskalovala vlivem celosvětové mediální pozornosti a stupňujících se spamových útoků na síť s politickou agendou jedné části participantů sítě.

Ač je někdy Bitcoin srovnáván s počátky internetu, pokud jde o škálování, tak toto srovnání bohužel kulhá na obě nohy. Zatímco kapacita broadbandu rostla minimálně od komerčních počátků internetu geometrickou řadou (nedávno jsem doma při úklidu našel 16 kb/s modem a marně přemítal, jak jsem s tím vůbec kdy mohl něco stáhnout), u Bitcoinu nic takového očividně neplatí. To je nicméně nakonec vlastně dobře, protože u decentralizované sítě jde vždy o trade off a lepší škálovatelnost téměř vždy znamená i větší centralizaci a obráceně. 

To nicméně neznamená, že se neobjevují žádná řešení s nabídkou lepšího a efektivnějšího modelu práce s transakcemi, než jaký používá bitcoinová síť dnes. Jedno velmi zajímavé se začalo diskutovat na Bitcointalku v roce 2014. Hlavní pozornosti se mu ale dostalo až později, a to v okamžiku, kdy upoutalo pozornost prominentního bitcoinového vývojáře Pietera Wuille (který se mimo jiné podílel na zefektivnění toho, jak bitcoinový protokol využívá ECDSA) a vyvrcholilo v podobě Schnorr BIP. A ano, jedná se o Schnorr Signatures, elegantní řešení lineárního nakládání s podpisy, které zabíjí hned dvě mouchy jednou ranou – řeší úsporu kapacity v bloku díky zmenšení velikosti jednotlivých transakcí i lepší ochranu soukromí.

Samotnou ideu Schnorr Signatures vymyslel v 80. letech 20. století německý kryptograf Claus-Peter Schnorr (oficiální paper pochází z roku 1991) na základě prací Davida Chauma, Tahera EIgamala, Amose Fiata a Adi Shamira.

Schnorr Signatures coby podpisové schéma bylo nepochybně známé i Satoshimu v době, kdy pracoval na svém slavném textu Bitcoin: A Peer-to-Peer Electronic Cash System, nebo v pozdější době, kdy převáděl svoji ideu do praxe v podobě referenčního bitcoin klienta – Bitcoin Core.

Důvod, proč se rozhodl jít místo elegantnějších Schnorr Signatures cestou ECDSA, neznáme, neboť zatím nikdo výlety do jeho hlavy nepořádá, ale pravděpodobně to bude mít co do činění s faktem, který Schnorr Signatures na dlouhá léta zazdil pro většinu okolního světa. Claus Schnorr si totiž dal tu práci a před samotným zveřejněním svého objevu vyplnil hned několik souvisejících patentů. Ty přestaly – trochu symbolicky – platit ve stejný rok, kdy Bitcoin spatři světlo světa. Svoji roli mohl sehrát i fakt, že ECDSA bylo nativně podporováno v OpenSSL.

V době počátků Bitcoinu byly tedy Schnorrovy podpisy pro většinu lidí spíše kuriozitou, dnes to ale již dávno neplatí a minimálně jedna implementace – schéma ed25519 – se stala v kryptoměnové komunitě poměrně oblíbená a úspěšně ji využívají některé altcoiny.  

Tím, že se však Bitcoin postavil kolem ECDSA, stala se od určitého momentu adopce debata ohledně alternativního podpisového schématu víceméně čistě akademickou, neboť se síť stala hardfork resistentní. Debata ale oživla poté, co v roce 2017 za poměrně dramatických okolností hlavní část bitcoinové komunity prosadila aktivaci SegWitu.  

Segregated Witness jako prekurzor

V srpnu 2017 aktivovaný softfork byl nejen asi dosud nejdramatičtější změnou v bitcoinovém protokolu (snad kolem žádné jiné změny neproběhly uvnitř komunity tak zuřivé politické boje), ale dodnes také největším upgradem protokolu v novodobé historii Bitcoinu.

Hlavní funkcí SegWitu je to, že odstraňuje možnost neúmyslné změny ID transakce oddělením (segregací – odtud název) podpisu do samostatné části, která je ignorována při počítání unikátního ID transakce. Kromě toho ale také mění transakční formát a trochu tak optimalizuje propustnost sítě a řeší snížení kvadratické složitosti ověřování a podepisování transakcí. Je tedy vlastně tak trochu škálovacím řešením první vrstvy sám o sobě.

Přestože se objevil už v Bitcoin Core verzi 0.13.0, jeho adopce byla první půlrok velmi pomalá, ještě koncem roku 2017 jej většina peněženek (včetně těch burzovních a platebních bran) navzdory zjevné ekonomické pobídce v podobě nižších transakčních poplatků v době, kdy byly nedaleko historických maxim, prostě ignorovala. To se zlomilo v průběhu roku 2018, když v období mezi březnem a listopadem začala SegWit podporovat významná část nejrozšířenějších bitcoinových peněženek a také některé z největších směnáren a burz.

SegWit ale přinesl změn více. Za prvé tím, že se Bitcoin zbavil tzv. transakční malleability, zmizela hlavní praktická překážka k tomu, aby mohlo dojít k ostré implementaci  Lightning Network. (Aby mohl bitcoinový Blockchain sloužit jako finální sudí, který vynucuje spravedlivé vypořádání transakce, bylo potřeba nejprve garantovat nezměnitelnost identifikátorů transakcí.)

Za druhé došlo ještě k jedné, zdánlivě banální věci. Protože s příchodem SegWitu došlo ke změně v podobě platebních skriptů (scriptPubKey), zavedl SegWit verzování skriptů. Tato zdánlivě jen dokumentační funkce v praxi umožňuje vytvářet zpětně nekompatibilní změny v platebních skriptech. Tedy, ne, že by k rozšiřování platebních skriptů nemohlo docházet a nedocházelo již před tím, ale nebylo to moc čisté, a už vůbec ne neproblematické (kvůli narůstající komplexitě). Každopádně s příchodem verzování skriptů přibyly nové možnosti, například (a tady se již dostáváme k Schnorrovým podpisům) změnit podpisový algoritmus, nebo přijít s úplně novým opcodem.

Co tedy vlastně Schnorr Signatures dělají

Shrnuto do pár vět, Schnorr Signatures optimalizují kapacitu bloků tím, že úsporněji pracují se vstupy a s podpisy transakcí – umožňují jejich agregaci do jednoho. Výsledkem pak je i to, že transakce Schnorr MultiSig jsou nerozeznatelné od běžných jednoduchých transakcí. Schnorr navíc MultiSig transakce na rozdíl od ECDSA podporuje nativně a nepotřebuje k nim extra smart kontrakt (Bitcoin dnes musí využívat Pay-to-ScriptHash). Trik je v tom, že se ověření provádí na kryptografické vrstvě, a nikoli ve vrstvě skriptovací, což s sebou navíc přináší i vyšší bezpečnost (vyloučení skriptovacích chyb).

Teď ale pro jistotu znovu s trochou kontextu. Abyste mohli provést bitcoinovou transakci, musíte každý neutracený výstup podepsat. To je v pořádku, tvoří to jeden z bezpečnostních prvků sítě, problém ale je, že všechny tyto podpisy zabírají místo v blocích bitcoinového blockchainu. Ty, jak víme, se udržují dlouhodobě poměrně velmi malé, aby nevznikala překážka pro vstup nových validačních nodů do sítě.

Pokud chceme odeslat velké množství transakcí z více našich adres na jinou, musíme podepsat každou z nich zvlášť. Tím ale naše transakce může nabobtnat i do té míry, že je pak transakční poplatek neúměrně vysoký posílané částce v BTC. Veškerá data v podpisu totiž zvětšují velikost transakce a právě z velikosti se vypočítává transakční poplatek, protože tím, jak transakce narůstá na objemu, uzurpuje místo ostatním, které by se do těženého bloku také rády dostaly. Právě tohoto faktu se mimochodem v minulosti zneužívalo ke spamování sítě z různých politických důvodů (například při snaze prosadit SegWit 2×).

Schnorr oproti tomu dosahuje toho, aby i takováto transakce obsahovala jen jediný podpis, a byla přesto stejně bezpečná a snadno ověřitelná. Reálný dopad na bitcoinový blockchain se stále zkoumá, ale již teď je jasné, že by Schnorr Signatures zvýšily kapacitu bloků minimálně o 25 %. Vedlejším benefitem, který přímo se škálováním nesouvisí, je i o něco větší soukromí, protože všechny transakce v podání Schnorr Signatures vypadají stejně, nepoznáte tak typicky, zdali se jedná o MultiSig (obsahuje více podpisů z různých zdrojů), nebo běžnou transakci.

WT100tip2

Z technického hlediska je hlavní rozdíl mezi Schnorrovými podpisy a ECDSA v tom, že Schnorrovy podpisy jsou lineární, což rozhodně o ECDSA neplatí. Linearita má řadu zajímavých vlastností, pro nás je ale podstatné hlavně to, že když spojíte více Schnorrových podpisů dohromady, dostanete jako výsledek další platný Schnorrův podpis.

Tím se ale již nebezpečně dostáváme k samotnému technickému popisu Schnorr Signatures, což asi není téma pro každého, a navíc by to vydalo na samostatný článek (spíše na dva). Zájemcům o hlubší proniknutí do problematiky mohu doporučit odborný článek Simple Schnorr Multi-Signatures with Applications to Bitcoin z roku 2018, za kterým stojí tým Blockstreamu a který mě volně inspiroval k napsání tohoto textu.

Autor článku

Redaktor serveru Lupa.cz a expert na blockchain a kryptoměny. Jako šéfredaktor v minulosti vedl ADASTRA Business Intelligence Magazine a server ITbiz.cz.