Signet slouží ke společnému testování softwaru pro Bitcoin. Má vlastní řetězec a testovací mince. Vedle běžných pravidel a Proof of Work musí nové bloky splnit zvláštní podmínku sítě, na výchozím Signetu založenou na podpisu. To pomáhá řídit testy, ale znamená jiný model důvěry než na hlavní síti.
Anna chce zjistit, co nová peněženka ukáže po odeslání platby a po jejím potvrzení v bloku. Peněženka je aplikace nebo zařízení pro přijímání a odesílání bitcoinů. Blok sdružuje transakce do dávky, která se připojuje ke společné historii. Na Signetu může Anna použít testovací mince, například ze služby faucet, která je rozdává pro pokusy. Nejsou to BTC na mainnetu, tedy na hlavní bitcoinové síti, a protokol je za skutečné bitcoiny nevyměňuje. Pozor i na adresy: Signet sdílí některé testovací formáty s Testnetem. Samotný vzhled adresy proto nestačí k určení správné sítě. [1] [2] [8]
Návrh BIP 325 (technický dokument popisující Signet) vytvořili Karl-Johan Alm a Anthony Towns; podporu Signetu přinesl Bitcoin Core v0.21.0. Program nabízí výchozí veřejnou síť, ale tým si může nastavit vlastní podmínku pro tvorbu bloků a vlastní účastníky. Proto nestačí říct „používáme Signet“: obě strany musí používat stejnou síť. Identifikátor síťových zpráv se odvozuje od této podmínky, nikoli od názvu projektu. [1] [3] [4]
Full Node, uzel samostatně kontrolující pravidla, stále ověřuje transakce i Proof of Work — výsledek výpočetní práce potřebné k vytvoření bloku. K tomu přidává zvláštní podmínku Signetu. Na výchozí síti tedy nestačí jen těžit; je nutný také příslušný podpis. Zkrácený přehled bloku, jeho hlavička, tuto dodatečnou kontrolu nenahrazuje: potřebné údaje jsou uvnitř bloku. [1] [9]
Digitální podpis umožňuje ověřit, že zprávu schválil držitel příslušného soukromého klíče, tajného číselného údaje, aniž by tento klíč zveřejnil. Ten, kdo může splnit podpisovou podmínku, má vliv na přibývání bloků. Může s podpisem čekat nebo omezovat, které transakce zahrne. Nezískává tím ale soukromé klíče Anny ani právo přimět její uzel přijmout libovolnou neplatnou transakci. Ostatní pravidla dál platí. Právě tato řízená účast je užitečná pro zkoušky a zároveň důvod, proč Signet nepovažovat za kopii bezpečnostního modelu mainnetu. [1] [9]
Při vývoji nestačí vidět jednu úspěšnou platbu. Tým potřebuje vědět, co aplikace udělá při výpadku bloků nebo reorganizaci: když uzel nahradí nedávné bloky jinou platnou větví. Koordinovaný test může takovou situaci připravit a sledovat, zda peněženka správně změní stav potvrzení. Signet tedy neslibuje nepřetržitý provoz. Umožňuje předvídatelněji zkoušet i to, co se pokazí. [1] [5] [6]
Na Testnetu je tvorba bloků otevřená a její výkyvy mohou společný pokus komplikovat. Regtest naopak dovoluje vytvářet bloky snadno a podle potřeby, což se hodí pro vlastní automatické testy. Může propojit i více počítačů; není nutně osamělým programem. Signet řeší jinou potřebu: delší spolupráci nezávislých účastníků s dohodnutými podmínkami tvorby bloků. Žádný z těchto režimů sám nenahradí všechny ostatní zkoušky. [1] [2]
Slovo challenge označuje skript, krátký program určující, co má blok doložit. Může vyžadovat jeden podpis nebo Multisig, tedy dohodnutý počet podpisů z více klíčů. Vlastní Signet ale může použít i OP_TRUE, podmínku splněnou bez podpisu. Pak postačí prázdné řešení. Přesné je tedy mluvit o dodatečné skriptové podmínce, nikoli tvrdit, že úplně každý Signet vždy vyžaduje podepisujícího. [1] [9]
BIP 325 ukládá neprázdné řešení do zvláštních dat v Coinbase Transaction, první transakci bloku. Tento termín zde nemá nic společného se stejnojmennou burzou. Data rozšiřují kryptografický commitment podle BIP 141, tedy záznam vážící blok k jeho witness datům, která obsahují mimo jiné podpisy, a poznají se podle značky 0xecc7daa2. Nejde o další běžnou platbu podepisujícímu. U triviálně splnitelné podmínky lze dodatečné řešení vynechat, nikoli automaticky ostatní pravidla bloku. [1] [9] [10]
Kdyby podepisovaná zpráva obsahovala tentýž podpis, vznikl by kruh. Kontrola proto pracuje s upraveným otiskem transakcí, ve kterém je řešení vyprázdněno, a se dvěma virtuálními transakcemi. Ty slouží k výpočtu, neposílají se jako další platby. Podpis se také nevztahuje na nonce hlavičky, měněné číslo při hledání Proof of Work. Jeho změna tedy nevyžaduje nový podpis; z toho ovšem neplyne, že lze libovolně měnit ostatní obsah bloku. [1] [9]
Anna si nejprve ověří, že peněženka, uzel i průzkumník bloků používají stejnou testovací síť. Průzkumník bloků je aplikace, ve které lze vyhledat transakce a bloky dané sítě. V Bitcoin Core může pomoci příkaz getblockchaininfo a jeho údaj signet_challenge, který ukazuje nastavenou podmínku. Pak sleduje skutečné potvrzení platby, ne jen hlášku o odeslání. Pro pokusy používá oddělenou testovací peněženku. Úspěšná zkouška ukáže chování aplikace v daných podmínkách; nezaručí bezpečnost peněz ani odolnost proti útočníkovi na mainnetu. [7] [8]
Pro nejúplnější obraz čtěte toto heslo společně s Nakamoto Consensus, Block Propagation, Initial Block Download, Block Weight, Bitcoin, Bitcoin Core. Opačným směrem na něj odkazují také Testnet, Miniscript, Dead Man’s Switch.