Blockchain publiczny, to taki z którego korzystać może każdy. Blockchain prywatny to taki, którego uczestnikami są tylko wybrani. To najprostsza i bardzo ogólna różnica między blockchainem prywatnym i publicznym. Na czym jednak ta różnica właściwie polega?

Jakie faktyczne mechanizmy dzielą blockchainy publiczne od prywatnych?
Kto może być użytkownikiem blockchaina publicznego, a kto prywatnego?

Zapraszam do artykułu.

Blockchain publiczny

Blockchain publiczne to przede wszystkim te znane z posiadania kryptowaluty: Bitcoin, Ethereum, Litecoin, Stellar, Cardano, Monero i wiele innych (https://coinmarketcap.com/). Publiczność rozumiana przez otwartość – zarówno na poziomie możliwości interakcji z takim blockchainem, jak i stania się jego częścią jest niezbędną składową filozofii tych blockchainów. Ideą Bitcoina jest być otwartym. Podobnie Ethereum – to globalny komputer.

bitcoin
Bitcoin to pierwszy stworzony publiczny blockchain.

Co sprawia, że blockchain może być otwarty? Powiedziałem, że otwartość to przede wszystkim:

  • możliwość tworzenia sieci blockchain – uczestniczenie w tworzeniu blockchaina, czyli potwierdzanie transakcji i bloków.
  • możliwość interakcji z blockchainem – transakcje transferu kryptowalut, tworzenie i interakcja ze smart contractami, wybieranie delegatów i korzystanie ze wszystkich funkcji oferowanych przez konkretny blockchain.

W publicznych blockchain otwartość polega na tym, że każdy ma prawo do korzystania z funkcji blockchaina, jeśli spełni określone wymagania. Wymagania dotyczą wszystkich bez wyjątku i podziału na grupy bardziej, lub mniej uprzywilejowane. W praktyce:

  • chcesz stać się częścią sieci blockchain? – wystarczy pobrać odpowiednie oprogramowanie węzła blockchain i zacząć uczestniczyć w tworzeniu bloków;
  • chcesz wysłać transakcję? – wystarczy zaprogramować odpowiednio zakodowaną kryptograficznie transakcję i wysłać ją do sieci;
  • chcesz uruchomić smart contract i zapisać pewne dane w blockchainie? – wystarczy wywołać smart contract dostarczając pewną ilość gazu celem pokrycia kosztów jego przetworzenia;

Ważne, aby zrozumieć że w publicznych blockchain istnieją zasady, które obowiązują wszystkich bez wyjątku. Wszyscy są równi wobec pewnego protokołu, zestawu reguł – który trzeba spełnić, aby móc korzystać z pewnych funkcji sieci.

Kryptografia, zwłaszcza asymetryczna (kryptografia klucza publicznego) jest kluczowa w celu zapewnienia poprawności działania protokołu. Bez niej nie byłoby możliwości definiowania pewnych reguł (protokołu), których weryfikacja może opierać się tylko i wyłącznie na niezależnym oprogramowaniu (nie ma konieczności istnienia żadnej instytucji, grupy, jednostki która byłaby odpowiedzialna za kontrolę respektowania tych reguł).

Pomyślmy o przesyle tranksacji w blockchainie. Reguła protokołu transakcji jest prosta: jeśli posiadasz odpowiednią ilość kryptowaluty (istnieje zapis w blockchainie, który kontrolujesz swoimi kluczami) – wystarczy wysłać do sieci zakodowaną kluczem prywatnym transakcję. Nie jest tu potrzebna ingeneracja żadnej instytucji, nadzorcy, systemu informatycznego – mechanizmy kryptograficzne blockchaina są w stanie zweryfikować poprawność takiej transakcji. Wspomniany klucz (publiczny/prywatny) każdy użytkownik może wygenerować sam przy użyciu istniejącego, niezależnego oprogramowania. Gdyby nie kryptografia – taki przesył musiałby być autoryzowany przez kogoś do tego powołanego. W blockchainie to kod przetwarzany przez tysiące maszyn tworzących sieć blockchain weryfikuje poprawność operacji. Technologia (a w zasadzie matematyka stojąca za działaniem kryptografii) jest gwarantem tego, że nikt nie oszukuje.

W publicznych blockchainach obowiązuje protokół, który obowiązuje wszystkich bez wyjątku. Każdy może z nich korzystać, ponieważ są dostępne za pośrednictwem internetu, a sama interakcja z nimi jest oparta o niezależną kryptografię.

Blockchain prywatny

Blockchain prywatny to sieć blockchain stworzona za pomocą specjalnego oprogramowania i narzędzi. Blockchainy prywatne, kontrolowane są przez zamkniętą grupę uczestników. Ta określona grupa ma wyłączny dostęp do tworzenia blockchaina, zapisywania i odczytwania danych, wywoływania smart contractów i wszystkich innych związanych z operowaniem i zarządzaniem sieci. Zazwyczaj nie mają globalnej kryptowaluty, ponieważ z racji zamkniętego charakteru istnienie takiej otwartej kryptowaluty jest niemożliwe.

W jaki sposób działają wyżej wymienione restrykcje? Innymi słowy, jakie mechanizmy umożliwiają albo uniemożliwiają wykonanie pewnych operacji na blockchainie?

Sieć blockchain to maszyny połączone za pomocą Internetu. Mechanizmy publicznych blockchainów umożliwiają dołączenie do istniejącej sieci (np. łącząc się do sieci Bitcoin, najpierw następuje połączenie z tzw. serwerami DNS seed, które dostarczają adresy IP innych węzłów, do których możemy się połączyć). W uproszczonej teorii, ograniczenie dostępu do prywatnych sieci blockchain, można by ograniczyć przez restrykcję dostępu na poziomie sieci: tylko wybrane hosty (adresy IP) mogą być uczestnikami. Prywatne blockchainy to jednak wiele więcej niż restrykcja na poziomie protokołu sieciowego.

Kluczem ograniczenia dostępu do prywatnych blockchainów jest ponownie kryptografia. Różnica w stosunku do blockchainów publicznych leży głównie w ilości mechanizmów działania blockchaina, jakie ta kryptografia kontroluje oraz na złożności cyfrowych tożsamości użytkowników tej sieci (opartych o kryptografię).

Mechanizmy prywatnych blockchainów opiszę na przykładzie Hyperledger Fabric – najbardziej rozwijanego obecnie oprogramowania dedykowanego tworzeniu prywatnych blockchainów.

Hyperledger-Fabric
Hyperledger Fabric to jeden z najpopularniejszych projektów służących tworzeniu prywatnych blockchainów.

W blockchainie stworzonym przy użyciu Hyperledger Fabric możliwość wykonania każdej akcji np. odczyt i zapis danych, przetwarzanie smart contractu (w terminologii Fabrica chaincode’u) jest zdefiniowana w konfiguracji tego blockchaina. Istniejący podział użytkowników na grupy (członek sieci, administrator) umożliwia definiowanie tych reguł dla określonych grup. Dostarczanie konfiguracji do blockchaina (wprowadzanie reguł) oparte jest o transakcje z nową konfiguracją. Pierwsza i bazowa konfiguracja sieci zawarta jest w genesis bloku blockchaina (w pierwszym bloku inicjalizacyjnym, będącym trzonem całego blockchaina) – zaprojektowanym i stworzonym przez twórców blockchaina. Ta początkowa (jak i każda konfiguracja wprowadzająca modyfikacje) definiuje każdy aspekt sieci: jakie i ile jest węzłów sieci, jakie są smart contracty (chaincode) i kto może je przetwarzać, itp.

Użytkownicy prywatnych sieci blockchain należą do organizacji, które współtworzą sieć. Każda z organizacji posiada własnych użytkowników (normalnych, administratorów), którzy posługując się cyfrowymi tożsamościami (taki cyfrowy dokument tożsamości użytkownika zabezpieczony kryptografią asymetryczną) prowadzą interakcję z takim blockchainem.

Digital Card Fabric
Przykłąd wizualizacji cyfrowego dokumentu tożsamości użytkownika w prywatnej sieci blockchain. Źródło: https://hyperledger-fabric.readthedocs.io/

W prywatnych blockchain niemożliwe jest tworzenie tożsamości cyfrowych użytkowników w niezależny sposób, tak jak ma to miejsce w blockchainach publicznych – gdzie wystarczy wygenerować parę kluczy asymetrycznych, aby podpisywać transakcję. W prywatnych blockchain istnieje tzw. Łańcuch Zaufania (Root of Trust), który w skuteczny sposób ogranicza możliwość udziału w blockchainie użytkowników niepożądanych.

Kryptografia w blockchainach prywatnych wykorzystuje łańcuch zaufania, aby zapewnić że cyfrowe tożsamości użytkowników (klucze kryptograficzne + dane użytkownika) zostały wygenerowane przez powołane do tego jednostki (np. administratorów sieci). Jednostki te są w stanie dostarczyć unikalny cyfrowy podpis (tzw. sygnaturę cyfrową, stworzoną za pomocą kryptografii asymetrycznej), która sprawia że tylko i wyłącznie tożsamość użytkownika zawierająca taki podpis jest poprawna. Prywatna sieć blockchain wykorzystuje mechanizmy kryptograficzne, aby weryfikować tożsamości cyfrowe użytkowników prowadzących interakcję z siecią i sprawdza, że posiadają one cyfrowy podpis organizacji do tego powołanej (w praktyce takiej, która znana jest danej sieci blockchain, czyli została załadowana do sieci poprzez transakcję konfiguracyjną). Takie mechanizmy skutecznie zabezpieczają sieć przed niepowołanymi użytkownikami oraz umożliwiają zmianę konfiguracji w dowolnym momencie np. zablokowanie dostępu użytkownikom, których tożsamości cyfrowe zawierają określoną sygnaturę –  poprzez unieważnienie tej sygnatury.

Prywatne blockchainy charakteryzują się możliwością szerokiej konfiguracji i definiowania reguł dostępowych. Kontrola dostępu do zasobów blockchaina opiera się głównie na zaawansowanych mechanizmach kryptografii asymetrycznej. Łańcuch zaufania (Root of Trust) umożliwia nadawanie praw użytkownikom, poprzez sygnatury cyfrowe, które to muszą znajdować się w cyfrowych tożsamościach tych użytkowników (służących do interakcji z blockchainem).

Podsumowanie

Blockchainy prywatne i publiczne dedykowane są różnym zastosowaniom, przez co różnią się w wielu względach.

Celem blockchainów publicznych jest być niezależnym i globalnym źródłem prawdy dotyczącym dokonanych zapisanych faktów, utrwalonych w cyfrowej formie poprzez zapis w blockchainie. Są otwarte i dostępne dla wszystkich, utrzymywane i tworzone przez użytkowników z całego świata, których grono ciągle rośnie.

Blockchainy prywatne łączą zamkniętą grupę użytkowników, stanowiąc źródło prawdy tylko i wyłącznie dla tych użytkowników. Kontrola dostępu do prywatnych blockchainów skutecznie uniemożliwia niepowołanym dostęp i interakcję z tymi blockchainami.

Zarówno blockchainy publiczne, jak i prywatne bazują na kryptografii. W blockchainach prywatnych mechanizmy krypograficzne umożliwiają grupowanie użytkowników oraz nadawanie i odbieranie im praw interakcji z blockchainem.

Masz wątpliwości albo niejasności dotyczące tematu? Pytaj w komentarzu – Przemek.