A blockchainnel mindent el lehet adni?

Gyakran kezeljük a blockchain technológiát valamiféle világmegváltó, vagy legalábbis jövőformáló csodafegyverként. Decentralizált társadalom, felügyelet nélküli vagy piaci verseny-alapú monetáris politika, sőt valamiféle társadalmat összességében jobbá tevő technológia. Mindez nyilván benne is rejlik a blockchain technológiában; ám ezeket evidenciaként kezelni pontosan annyira nagy badarság lenne, mint ha a 80-90-es években azt mondtuk volna az akkori Internetet látva, hogy ez a technológia alapjaiban fogja megváltoztatni a jövőnket. Pedig hát akkoriban legjobb esetben is maximum a leveleinket olvasgattuk, ha egyáltalán kaptunk valakitől és etettük a tevéinket. (Igen… ez az a pont amikor HA érted ezt a poént az azt jelenti, hogy már neked is a B oldal pörög…)

Blockchain... understanding

A blockchain technológia egy ugyanolyan buzzword ma, mint anno azt mondani, hogy az Internet mindent meg fog változtatni. Jóóó, de mégis hogyan? Márpedig a válasz igazából akkor sem és most sem nagyon érdekel(t) senkit. Ahogy anno evidens volt, hogy az ami “Internetes” az tuti jó lehet (lásd dot.com lufi), úgy ma ugyanezt gondoljuk a blockchain technológiáról… Ha valami blockchain technológián fut… nos akkor az a jövő.

A blockchain mint buzzword lassan a legalja vásári cirkusz szintjére töpörödik és bármilyen szemétkupacot eladhatóvá tesz.

Hogy miért pont ezt a témát választottam mai postomhoz? A napokban láttam egy youtube videót, amiben egy terméket… pontosabban termékcsaládot mutattak be. A termékcsalád legfontosabb tulajdonsága az volt, hogy blockchainen fut és innentől ez fogja megváltoztatni a világot, hiszen, ami blockchainen fut az biztos, hogy csak jó lehet. Nyilván az olvasók egy része az alábbiakból rá fog jönni, hogy melyik videóról és melyik termékről van szó, de a cikk most korántsem az adott termék és/vagy videó ekézéséről akar szólni, ez a cél áll tőlem a legtávolabb. Pontosan ezért NEM is fogom sem a forrásvideót, sem a terméket belinkelni vagy megnevezni, hiszen ez a lentebbiek szempontjából irreleváns. A cikkem célja roppantul egyszerű. Amikor valaki ilyen, vagy olyan blockchain-projektet próbál neked “eladni”, akkor tudj átlátni a szitán és megérteni, hogy itt bizony nem minden arany ami fénylik…

Persze mindenek előtt érdemes lenne tisztázni, hogy mégis mi is az a blockchain. Ezzel azonban most nem rabolnám az olvasó drága idejét, hiszen nagy részetek találkozhatott a témában született írásaimmal. Ha mégsem, akkor egyetlen cikket emelnék ki, ami a tavalyi Flux.energy konferencia előadásom bővített átirata: Mi is az a Blockchain?

Így most frappánsan folytathatnám is azzal, hogy:

Mi is az ami NEM Blockchain?

A blockchain nem egy szoftver. Nem attól lesz blockchainünk, hogy “fejlesztünk egy forradalmi enterprise blockchaint“. Egy blockchain szoftver önmagában nem garantál semmit az olyan hangzatos kifejezések közül mint pl: transzparencia, manipulálhatatlanság, központi kontroll nélküli decentralizált működés vagy az oly sokszor hangoztatott bizalmi harmadik felek nélküli működés.

A blockchain mint szoftverkomponens lényegében egy kifejezetten NEM bonyolult termék. Bár végtelenül komplexnek tud látszani, de alapvetően áll:

  • egy nyers tranzakciós adatbázisból,
  • áll egy elosztott hálózati (jellemzően peer-to-peer) kommunikációs rétegből
  • és áll egy saját validációs layerből, ami garantálja, hogy az adott blockchain minden tagja ellenőrizni tud MINDEN létező tranzakciót, így valóban harmadik fél bevonása nélkül tudja eldönteni, hogy az adott blockchain manipulálatlan-e.

Ennyi… lényegében csak ennyi egy blockchain szoftver. Ha valaki most a fejéhez csap és úgy dönt, hogy akkor ő most blockchaint fog fejleszteni, akkor kis túlzással néhány hétnyi hideg élelemmel és némi programozási előképzettséggel ennek neki is futhat. A szükséges kriptográfiai és hash könyvtárakat készen lehet használni, ahogy az elosztott kommunikációra, a peer-to-peer node discoveryre és a merkle-tree generálásra is kész library-ket lehet találni. Aki nem hiszi annak itt egy minta: Create Your Own Blockchain in 30 minutes.

Tehát ha valaki azt mondja, hogy a projektje azért jó mert egy saját blockchaint fejlesztettek hozzá… Nos attól nem feltétlenül kell hanyatt esni… Különösen azért, mert az esetek DÖNTŐ többségében ezek valójában nem is blockchainek. Tisztelet persze a kivételnek.

Miért is nem blockchain?

Nem attól blockchain egy blockchain, hogy blockchain szoftvert futtatunk. Hanem attól, hogy lemondunk a központi kontrollról és a KONSZENZUSRA bízzuk ezt. A konszenzus lényege, hogy az előre lefektetett szabályrendszer szerint működtetjük, ahol független és gazdaságilag is ellenérdekelt felek ellenőrzik (validálják) egymást és egyetlen szeplőnek sincs akkora hatalma, hogy önkényesen átírja a konszenzus szabályokat, vagy akár a blokkláncot. Persze valójában bárki megteheti ezt bármikor, de ha elég erős a konszenzus a többi szereplő között, akkor az ilyen manipulációk érvényüket vesztik. A jó konszenzust mechanizmus ismerve, hogy azt csak akkor lehet módosítani, ha az azt fenntartó TÖBBSÉG egyetért azzal, ilyenkor a kisebbség vagy elfogadja a módosítást, vagy pedig leválik/különválik (un. leforkolja a blockchaint). Ilyenkor a blockchain közös múlttal, de immáron külön úton halad tovább.

Ebből az állításból máris levonható néhány fontos konzekvencia:

Az NEM blockchain, ahol egyetlen gazdasági szervezet futtat egyedül egy blockchain szoftvert és azt állítja, hogy itt bizony minden forradalmi és ettől lesz jobb a világ.

Az NEM blockchain, ahol bár több szereplő vesz részt, de a szereplők valójában gazdaságilag nem ellenérdekeltek. Hiszen ilyen esetben a domináns szereplő bármikor kényszerítheti a többit, hogy a közös cél érdekében márpedig manipulálják a blockchaint (pl. módosítsák a konszenzus mechanizmust). Gazdaságilag akkor ellenérdekelt két fél, ha pl ugyanazon folyamat megrendelői és szállítói oldalát képviselik, de persze érdemesebb ennél sokkal komplexebb összefüggésekben gondolkodni. Vegyünk egy jó példát:

A Bitcoin blockchain esetén az összes aktív gazdasági szereplő (azaz a minerek) gazdaságilag ellenérdekeltek. Hiszen elsődleges céljuk, hogy minél több blokkot tudjanak saját maguk létrehozni és ha adott blokkot mégsem ők hoznak létre akkor annak tartalmát alaposan ellenőrizzék, hiszen ha kiderül, hogy érvénytelen az adott blokk, akkor egyrészt nem kezdenek arra építeni egy újabb blokkot (kárba veszett energia), másrészt pedig a blokk invalidálásával újraindul a verseny az adott blokkért és annak jutalmáért. Ezt az egyébként józan paraszti ésszel is könnyen megérthető elv alapja a játékelmélet. Ahol hasonló elv nem lelhető fel az NEM BLOCKCHAIN!

A gazdasági ellenérdekeltség a Bitcoin esetében egyébként más szinten is tetten érhető, hiszen ma már ahhoz, hogy valaki releváns szereplő legyen a Bitcoin hálózaton (értsd számottevő szava legyen pl egy protokoll változtatási szavazáson), ahhoz kisebb országok GDP-jével felérő beruházást kell eszközölnie a minergépek formájában. Ezen beruházások megtérüléséhez azonban elengedhetetlen, hogy maga a blockchain (jelen esetben a Bitcoin) reputációja kikezdhetetlen legyen, így ha egy bányász csalna és a többiek ezt hagynák, akkor olyan bizalomvesztés következhetne be, ami kérdésessé tenné a teljes hálózat fenntarthatóságát. De mégis hogyan is derülhetne ki a csalás? Nézzük a következő tézist:

Az NEM Blockchain, ahol a tranzakciók nem nyilvánosak legalább a felhasználók számára. A Blockchain lényege, hogy bármely passzív szereplő képes ellenőrizni bármely tranzakció hitelességét, így nem szorul arra, hogy egy központi vagy harmadik fél szavában bízzon. A passzív szereplők felé a transzparencia evidens alapfeltétele annak, hogy blockchainről beszélhessünk. De mégis hogyan oldható meg ez egy permissioned (privát, konzorciális, enterprise, whateverbullshit-buzzword) blockchain esetén? Nézzünk erre egy sokak számára ismerős példát » Facebook Libra:

A Libra Network protokollja egy permissioned blockchain, ahol a validációt csak előre leszerződött partnerek tudják végezni, akik nagy mennyiségű pénzt helyeznek (10 millió USD) letétbe. Ez a letét egyébként a garanciája az előző pontban már leírt “gazdasági ellenérdekeltségnek”, hiszen ezen keresztül a validálóknak elemi érdeke, hogy ha valaki csalni akarna, akkor azt kiszűrjék, mivel ha nem teszik, akkor az egész Libra hitelessége kérdőjeleződik meg, ami explicit a projekttel szembeni bizalomvesztéshez vezethet. A transzparenciát az biztosítja, hogy a Libra consolon keresztül (RPC-JSON) bármikor szépen le tudom dumpolni a teljes Libra blockchaint és ezáltal tudom validálni saját magam is az összes tranzakciót… Nem csak a sajátjaimat, bárkiét. Innentől kezdve a validátorok árgus szemmel kell hogy nézzék a többi validátor tranzakcióit is, mivel ha bárhol manipuláció történik (pl. olyan érték elköltése ami nem megfelelően lett aláírva, vagy egy hibásan lefutott MOVE smartcontract érvényesként elfogadása), akkor azt bizony a felhasználók is könnyedén észre tudják venni.

Namost… ha a Facebook össze tudott tákolni kb. fél év alatt egy olyan zárt (permissioned) konzorciális blockchaint, ahol annak felhasználói is tudják ellenőrizni a tranzakciók hitelességét, akkor nekem ne mondja már azt bárki, hogy nála a blokchain tartalma nem publikus, hiszen azon nagyon fontos tranzakciós adatok leakelnének ki. Naná, hogy kileakelnének, ezért használjuk a blockchain technológiát. Megjegyzem mára korántsem annyira ördöngösség a zero-knowledge (pl. zkSNARKs) vagy bármilyen más pl. ring-ct megoldást használni privát blokklánc esetén, amivel ezáltal bár minden tranzakció ellenőrizhető marad mégsem derül ki, hogy melyik számlán konkrétan mennyi a balance. Így az információ szivárgás mint probléma is irrelevánssá válhat és megmarad a nyilvántartás blockchain jellege is.

Mi ez a konszenzus mechanizmus?

Jól látható, hogy a ‘valós blockchain‘ vs ‘buta adatbázis blockchainnek álcázva‘ kérdésben a kulcsszereplő a sokat emlegetett konszenzus mechanizmus. Na de mi is ez pontosan? Ez lényegében a társasjáték szabálykönyve. Ami elmondja azt, hogy milyen módon lehet lépkedni a bábukkal, melyik mezőn mi történik és mi szükséges a játék megnyeréséhez. A hagyományos táblás társasjátékok is a valóságban decentralizált ökoszisztémák, aminek a működési elvét a szabálykönyv írja le. A játék akkor élvezhető, ha mindenki követi a szabályokat. Ha valaki mégsem teszi, akkor a többiek ezt észrevéve jelezhetik, hogy az illető csalt… azaz megszegte a konszenzus szabályokat.

Mindez pontosan így működik a blockchainek esetén is, függetlenül attól, hogy az privát vagy publikus. Ahogy a táblás társasjátékban minden játékos ellenérdekelt, hiszen mindenki nyerni akar és mindenki tudja, hogy a nyeréshez a legközelebb úgy juthat, ha betartja a szabályokat és tisztességes, úgy egy VALÓS decentrelizált blockchain esetén is a szereplőknek ugyanez kell, hogy legyen az érdeke.

A konszenzus-mechanizmus írja le a blockchain szabályait. Úgy mint pl., hogy milyen hash algoritmussal kell igazolni a tranzakciókat, milyen aláírásokat lehet elfogadni, mekkora nehézségű hash fogadható el egy új blokknál, illetve, hogy mi történjen, ha egyszerre két új blokk is elkezd propagálódni a hálózaton. A hálózat minden aktív szereplője (ugye a nodeok), kvázi teljesen vakon működnek, csak bejövő nyers tranzakciókat és kész blokkokat kapnak és a konszenzusszabályok alapján építik fel és tartják karban a nyilvántartásukat. Egy blockchain minden aktív eleve azonos információkat tartalmaz anélkül, hogy ezeket valaha is összefésülnék, vagy keresztbe ellenőriznék, ezt a konszenzusszabályok garantálják. Így teljesen okafogyottá válik, hogy legyen EGY kitüntetett fontosságú node, ami vezérli a többieket. Minden aktív elem autonóm.

A konszenzus-mechanizmus lényege az állandóság és a strict szabályok leírása. Azonban ez egyben a hátránya is, hiszen a világ folyamatosan változik így indokolt lehet a szabályrendszer változtatása is, ahogy pl. egy társasjáték újabb kiadásában is finomodhatnak a szabályok függően az ügyfelek visszajelzéseitől.

Az elosztott hálózatok esetén, ahol minden szereplő autonóm ez bizony egy igen trükkös feladat. Az elv azonban roppantul egyszerű. Egy vagy több aktív szereplő úgy dönt, hogy ő bizony módosítani akar valamit a szabályrendszeren. Erre talán a legismertebb példa a Bitcoin esetén a scaling debate, aminek a lényege, hogy lehessen már 1MB nyers tranzakciótartalomnál is nagyobb blokkokat létrehozni. Ilyenkor a kezdeményező létrehoz egy módosított blockchain alkalmazást, amibe beleégeti, hogy adott időponttól ő bizony már nem 1MB-os hanem 100MB-os blokkokat fog létrehozni. Majd elkezdi promótálni a saját új konszenzus mechanizmusát. Elindulnak a nyílt viták arról, hogy valóban indokolt-e a módosítás és a többség valóban így képzeli-e el a scaling probléma megoldást. Ha a kódban szereplő dátumig a nagy többség ezt elfogadja és alkalmazza, akkor “aktiválódik” az új konszenzus mechanizmus, így az upgradelt aktív nodeok már 100Mb-os blokkokat fognak létrehozni, a régiek viszont továbbra is csak 1Mb-osakat.

Bitcoin alternative chains

Ez azt jelenti, hogy itt összekeverednek a blokkok? Valójában nem. Hiszen az 1Mb-nál nagyobb blokkokat a régi szabályrendszerű nodeok eldobálják, mivel azok számukra nem érvényesek. Az új nodeok pedig eldobálják a régi konszenzus-elven készült blokkokat, mivel azok nem azokra a blokkokra épülnek, amiket az új játékszabályok szerint készítettek. Tehát bár az összes blokk folyamatosan propagálódik az összes node között, de abból mindkét lánc ki tudja válogatni, hogy mi az övé és mi nem tartozik hozzá.

Csak a Blockchain manipulálhatatlan?

Szó sincs erről, ha ez így lenne, akkor igen nagy bajban lenne a világ. A kriptográfia nem a blockchain technológiával született meg. Köszönhetően a nyilvános kulcsú titkosításnak, az időbélyegeknek és pl. a PGP protokollnak. A manipulálhatatlanság már évtizedek óta biztosítható nyílt interneten keresztül is. Nem véletlen, hogy ezekre a technológiákra építenek a blockchain megoldások is. Tehát bárki jogosan állíthatja, hogy egy olyan rendszert hozott létre amiben technológiailag szinten biztosítottak mindazon tulajdonságok, amiket egyébként a blockchain megoldások előnyeinek titulálunk, azonban ezen esetekben ugyanúgy meg kell bíznunk annak központi üzemeltetőjében, hiszen valójában csak ő tudja ellenőrizni is ezeket a bizonyos garanciális feltételeket, így ilyen esetben azt állítani, hogy a rendszer biztonságát a blockchain technológia alkalmazása biztosítja… nos ez jobb esetben csak egy elfuserált marketingfogás… rosszabb esetben pedig konkrétan az ügyfelek megtévesztésére és becsapására tett suta kísérlet… Mely sajnos az esetek többségében be is jön és az emberek így reagálnak rá:

Bookmark the permalink.

6 Comments

  1. Csabikám ez egy ütős cikk lett szó se róla! Itt Debrecenben hetente hívnak meg bennünket mindenféle csoda cryptó projektek előadásaira, ahol megvehetjük a következő Bitcoint. Ezzel a cikkel most adtál elégséges lőszert, hogy a következő alkalomml meg tudjam izzasztani a nyálasképűeket!

  2. Köszi az írást. A társasjátékos példa nekem nagyon tetszett, sosem gondoltam volna, hogy amikor a gyermekeim a bogyó és babóca társaasjátékokkal játszanak, akkor valójában már a decentralizált konszenzus mechanizmus alapjait gyakorolgatják!

  3. Németh Péter

    Tök jó, hogy ezeket leírtad. Hasonlókat szoktam én is mondogatni, csak nyersebb, érthetetlenebb formában 😀

    (PS:Google belépés után nem megy a comment, WordPress belépés nem működik)

  4. dr. Pozsonyi László

    Kiváló írás.

  5. Bocsánat ha kötekedésnek tűnik, de nem annak szánom.
    “Nem attól blockchain egy blockchain, hogy blockchain szoftvert futtatunk. Hanem attól, hogy lemondunk a központi kontrollról és a KONSZENZUSRA bízzuk ezt.”
    Ezzel a megfogalmazással problémaim vannak.
    Számomra amit leírsz az a _konszenzuselvű-decentralizált-blockchain_ lenne. Egy rész halmaza blockchain rendszereknek.

    Ez nekem két problémát **kérdést** vet fel.
    1. Akkor a fogalmaid szerint pl XRP és EOS kriptók NEM blokklánc alapúak?
    2. Amit írtál: “Az NEM blockchain, ahol bár több szereplő vesz részt, de a szereplők valójában gazdaságilag nem ellenérdekeltek.” Ezt a te fogalomtáradban hogyan nevezik?

    • Nem veszem semmilyen szinten sem kötekedésnek.
      A Blockchain lényege, hogy úgy tárol elosztott módon (jellemzően tranzakciós) adatokat, hogy azok hitelességéhez nincs szükség harmadik fél valiáládásra, hanem az elosztott hálózat atkív elemei önmagukban képesek validálni az összes tranzakciót és hitelesíteni azt, hogy a blokklánc nem került manipulálásra. Tehát ÉN el tudom dönteni, hogy a blockchain manipulált avagy sem.

      Ha erre fizikailag nincs lehetőség, mert teszem azt a blockchain nem tartalmazza a hitelesség garantálásához szükséges elemi adatokat transzparens módon, vagy a blockchainben vannak olyan törések, mik hitelességét egy harmadik fél igazolja (lásd XRP esetén).

      Nincs olyan az én tudomásom és értelmezésem szerint hogy decentralizált ÉS centralizált blockchain. Ha harmadik fél bizalmán múlik, hogy a blockchain hiteles, akkor az leginkább egy elosztott hálózatként/adattárolóként lehet értelmezni. Ez önmagában persze egyáltalán nem rossz dolog, rengeteg jó megoldás van erre (ElasticSearchtől kezdve MongoDB-ig vagy Hadoop), de ezek NEM Blockchainek… még akkor sem ha jellemzőik alapján blockchainként tárolják az adataikat, hiszen nem rendelkeznek azzal a tulajdonsággal, hogy nulláról végig lehessen ellenőrizni a blokklánc hitelességét harmadik fél bevonása nélkül.

Leave a Reply

Your email address will not be published. Required fields are marked *