Co znamená vlastnit coin

Žádné mince neexistují. Existují jen podepsané převody.

Co se naučíš: Pochopíš, že zůstatek není uložený, ale odvozený, a co z toho plyne pro ztracené klíče.

6 min čtení + cvičeníNavazuje na:🔑 Klíče a podpisy

Nikde neexistuje soubor s tvými mincemi. Neexistuje ani řádek v tabulce, kde by u tvého jména stálo číslo. Existují jen podepsané převody a pravidlo, že platí ten s platným podpisem.

Zní to jako slovíčkaření, ale plyne z toho úplně všechno: proč nejde peníze zmrazit, proč nejde ztracený klíč obnovit a proč není komu si stěžovat.


Účet je odvozený, ne uložený

Ve tvé bance je zůstatek uložený. Je to číslo v databázi a banka ho mění.

V blockchainu je zůstatek spočítaný. Nikde není zapsaný. Když se chceš dozvědět, kolik máš, projde software celou historii a sečte, co ti kdy přišlo a co odešlo.

Praktický důsledek: neexistuje operace „nastav zůstatek". Existuje jen „přidej platný podepsaný převod". Kdo chce něco změnit, musí to udělat převodem, a ten musí podepsat.


Vlastnictví je schopnost, ne záznam

Tady je ta věta, kolem které se točí celý obor:

Vlastnit coin znamená znát privátní klíč, kterým se dá podepsat jeho převod.

Nic víc a nic míň. Nikde není evidence vlastníků. Kdo umí podepsat, ten může utratit, a systém nemá jak rozlišit, jestli je to právoplatný majitel, nebo někdo, kdo klíč získal.

Z toho plyne řada věcí, které lidi překvapují:

SituaceCo se staneProč
Ztratíš klíčprostředky jsou nedostupné navždynikdo jiný podepsat neumí, ani provozovatel
Někdo klíč získámůže všechno utratitsystém pozná podpis, ne osobu
Pošleš na špatnou adresupeníze jsou pryčpřevod byl platný, jen jsi ho podepsal špatně
Chceš to reklamovatnení komuneexistuje strana, která by měla pravomoc to vrátit

Odhaduje se, že několik milionů bitcoinů je trvale nedostupných právě kvůli ztraceným klíčům. Nejsou zničené, jsou pořád v blockchainu vidět. Jen k nim nikdo neumí podepsat.


Proč to není chyba návrhu

Nabízí se otázka: proč tam nedat záchrannou brzdu? Kdyby existovala možnost obnovy, musel by ji někdo vykonávat. A ten někdo by byl přesně ta důvěryhodná třetí strana, kterou celá konstrukce odstraňuje. Nemůžeš mít systém, kterému nemusíš věřit, a zároveň v něm mít někoho, kdo umí přepsat vlastnictví.

Je to kompromis, ne opomenutí. A je to zároveň důvod, proč většina lidí drží prostředky u burzy: přenesou tím riziko ztráty klíče zpátky na instituci, čímž se ale vzdají té jediné vlastnosti, kvůli které to celé vzniklo. Viz custody a klíče.


Co s tím dělá skutečný svět

Absolutní verze „jeden klíč, jedna šance" se v praxi změkčuje, ale vždy tak, aby zůstala bez centrální autority:

  • Multisig. Prostředky jde utratit jen s podpisy více klíčů, třeba dvěma ze tří. Ztráta jednoho pak není konec.
  • Sociální obnova. Kontrakt umožní vybraným lidem po čase změnit klíč, když ho ztratíš.
  • Časové zámky. Převod jde provést až po uplynutí doby, což dává prostor zásah zvrátit.

Všechno tohle jsou pravidla vyjádřená kódem, ne pravomoc udělená osobě. Rozdíl je zásadní.


Cvičení

  1. Kamarád tvrdí, že mu burza „drží bitcoiny". Co doopravdy drží?
  2. Proč nejde vytvořit funkci „obnovit ztracený klíč", aniž by se rozbila celá konstrukce?
  3. Peněženka ti ukáže zůstatek okamžitě, ale zůstatek se má odvozovat z celé historie. Jak to dělá?
Náčrt řešení: rozbal, až si cvičení zkusíš sám
  1. Drží klíče a vede si o tobě zápis ve své vlastní databázi. Na blockchainu jsou prostředky na adresách burzy, ne na tvých. Tvůj „zůstatek" je pohledávka vůči firmě, ne vlastnictví coinu v tom smyslu, jak o něm mluví protokol. Proto se říká „not your keys, not your coins": není to slogan, je to popis toho, kdo umí podepsat.
  2. Protože obnova znamená schopnost převést prostředky bez původního klíče, a tu schopnost by musel někdo mít. Ten někdo by pak mohl převést cokoli komukoli, tedy by měl přesně tu pravomoc, kterou má banka. Systém by tím získal důvěryhodnou třetí stranu a přestal by řešit problém, kvůli kterému vznikl. Náhrady jako multisig nebo sociální obnova fungují proto, že pravidlo je v kódu a je vidět dopředu, ne že by ho někdo mohl uplatnit podle uvážení.
  3. Předpočítává si to. Software při první synchronizaci projde historii a udržuje si index nevyužitých výstupů nebo zůstatků, který pak jen aktualizuje o nové bloky. Zůstatek je tedy pořád odvozený, jen se neodvozuje znovu při každém pohledu. U lehkých klientů to navíc často dělá vzdálený server, což je další místo, kde se přidává důvěra.

Shrnutí

  • Zůstatek není uložený, je odvozený z historie podepsaných převodů.
  • Vlastnit coin znamená znát klíč, kterým se dá podepsat převod. Evidence vlastníků neexistuje.
  • Ztráta klíče je nevratná a je to vlastnost, ne chyba: záchranná brzda by vyžadovala autoritu.
  • Praxe to změkčuje multisigem, sociální obnovou a časovými zámky, ale pravidly v kódu.
  • Kdo drží prostředky na burze, vyměnil riziko ztráty klíče za důvěru v instituci.
Kde je v blockchainu uložený tvůj zůstatek?

Nikde. Uložená je jen historie podepsaných převodů a zůstatek se z ní dopočítá. Neexistuje proto operace, která by zůstatek nastavila; jediná možná změna je přidat nový platný převod. Peněženky si mezivýsledek předpočítávají, aby ho nemusely odvozovat při každém pohledu.

Proč nejde do protokolu přidat obnovu ztraceného klíče?

Protože obnova znamená schopnost převést cizí prostředky bez původního klíče, a tuhle schopnost by musela mít nějaká konkrétní strana. Ta by pak měla stejnou pravomoc jako banka a systém by přestal být bezdůvěrný. Multisig nebo sociální obnova fungují jinak: jsou to pravidla zapsaná předem v kódu, ne pravomoc uplatňovaná podle uvážení.

Co znamená not your keys, not your coins?

Že vlastnictví v protokolu je dané schopností podepsat převod. Pokud klíče drží burza, jsou prostředky na jejích adresách a tvůj zůstatek je pohledávka vůči firmě, tedy záznam v její databázi. Vůči protokolu nevlastníš nic, což se projeví ve chvíli, kdy firma zmrazí výběry nebo skončí.