Hyperledger tkanina za lutke

Blockchain platforma za preduzeća

Hyperledger tkanina za lutke

Dobar dan, dragi čitaoci, moje ime je Nikolaj Nefedov, ja sam IBM tehnički stručnjak, u ovom članku želim da vas upoznam sa blockchain platformom - Hyperledger Fabric. Platforma je namenjena za izgradnju poslovnih aplikacija na nivou preduzeća (Enterprise klasa). Nivo članka je za nespremne čitaoce sa osnovnim poznavanjem IT tehnologija.

Hyperledger Fabric je projekat otvorenog koda, jedan od ogranaka Hyperledger open source projekta, konzorcijuma Linux fondacije. Hyperledger Fabric su prvobitno pokrenuli Digital Assets i IBM. Glavna karakteristika Hyperledger Fabric platforme je njen fokus na korporativne aplikacije. Stoga je platforma razvijena uzimajući u obzir veliku brzinu transakcija i njihovu nisku cijenu, kao i identifikaciju svih učesnika. Ove pogodnosti se postižu odvajanjem usluge verifikacije transakcija i formiranjem novih blokova distribuiranog registra, kao i korišćenjem certifikacionog tela i autorizacije učesnika.

Moj članak je dio serije članaka o Hyperledger Fabric-u u kojem opisujemo projekat sistema za registraciju studenata koji ulaze na fakultet.

Opšta arhitektura Hyperledger Fabric-a

Hyperledger Fabric je distribuirana blockchain mreža koja se sastoji od različitih funkcionalnih komponenti koje su instalirane na mrežnim čvorovima. Hyperledger Fabric komponente su Docker kontejneri koji se mogu besplatno preuzeti sa DockerHub-a. Hyperledger Fabric se takođe može pokrenuti u Kubernetes okruženju.

Za pisanje pametnih ugovora (lančani kod u kontekstu Hyperledger Fabric-a), koristili smo Golang (iako vam Hyperledger Fabric dozvoljava korištenje drugih jezika). Za razvoj prilagođene aplikacije, u našem slučaju, korišten je Node.js sa odgovarajućim Hyperledger Fabric SDK-om.

Čvorovi pokreću poslovnu logiku (pametni ugovor) – lančani kod, pohranjuju stanje distribuiranog registra (podaci knjige) i izvršavaju druge sistemske usluge platforme. Čvor je samo logička jedinica, različiti čvorovi mogu postojati na istom fizičkom serveru. Mnogo je važnije kako su čvorovi grupirani (pouzdana domena) i sa kojim funkcijama blockchain mreže su povezani.

Generalna arhitektura izgleda ovako:

Hyperledger tkanina za lutke

Slika 1. Opća arhitektura Hyperledger tkanine

Korisnička aplikacija (Submitting Client) je aplikacija s kojom korisnici rade s blockchain mrežom. Da biste radili, morate proći kroz autorizaciju i imati odgovarajuća prava za različite vrste radnji na mreži.

Vršnjaci (čvorovi) dolaze u nekoliko uloga:

  • Endorsing Peer je čvor koji simulira izvršenje transakcije (izvršava kod pametnog ugovora). Nakon validacije i izvršenja pametnog ugovora, čvor vraća rezultate izvršenja klijentskoj aplikaciji zajedno sa svojim potpisom.
  • Usluga naručivanja je distribuirana usluga na više čvorova, koristi se za formiranje novih blokova distribuirane knjige i kreiranje sekvence za izvršavanje transakcija. Usluga naručivanja ne dodaje nove blokove u registar (premješteno u Committing Peers radi boljih performansi).
  • Committing Peer - čvor koji sadrži distribuirani registar i dodaje nove blokove u registar (koje je formirala Služba naručivanja). Svi vršnjaci za urezivanje sadrže lokalnu kopiju distribuirane knjige. Urezivanje ravnopravnih jedinica, prije lokalnog dodavanja novog bloka, provjerava valjanost svih transakcija unutar bloka.

Politika potvrđivanja je politika za provjeru valjanosti transakcije. Ove politike definiraju neophodan skup čvorova na kojima se pametni ugovor mora izvršiti da bi transakcija bila priznata kao važeća.

Distribuirani registar - Lerger - sastoji se od dva dijela: WolrldState (koji se naziva i Državna baza podataka) i BlockChain.

BlockChain je lanac blokova koji pohranjuje zapise o svim promjenama koje su se dogodile na objektima distribuirane knjige.

WolrldState je distribuirana komponenta registra koja pohranjuje trenutne (ekstremne) vrijednosti svih distribuiranih objekata registra.

WorldState je baza podataka, u osnovnoj verziji - LevelDB ili složenijoj - CouchDB, koja sadrži parove ključ-vrijednost, na primjer: Ime - Ivan, Prezime - Ivanov, datum registracije u sistemu - 12.12.21., datum rođenje - 17.12.1961. itd. WorldState i distribuirana knjiga moraju biti konzistentni za sve članove datog kanala.

Budući da je Hyperledger Fabric mreža u kojoj su svi učesnici poznati i autentifikovani, ovdje se koristi namjensko tijelo za sertifikaciju - CA (Certification Authority). CA radi na bazi X.509 standarda i infrastrukture javnog ključa - PKI.

Usluga članstva je usluga putem koje članovi potvrđuju da objekt pripada određenoj organizaciji ili kanalu.

Transakcija je, u većini slučajeva, zapis novih podataka u distribuiranoj knjizi.
Postoje i transakcije za kreiranje kanala ili pametnih ugovora. Transakciju pokreće korisnička aplikacija i završava upisom u distribuiranu knjigu.

Kanal (Channel) je zatvorena podmreža koja se sastoji od dva ili više učesnika u blockchain mreži, dizajnirana za obavljanje povjerljivih transakcija unutar ograničenog, ali poznatog kruga sudionika. Kanal određuju učesnici, njegova distribuirana knjiga, pametni ugovori, usluga naručivanja, WorldState. Svaki član kanala mora biti ovlašten za pristup kanalu i imati pravo obavljanja različitih vrsta transakcija. Autorizacija se vrši putem usluge Članstvo.

Tipičan scenario izvršenja transakcije

Dalje, želio bih govoriti o tipičnom scenariju za izvršavanje transakcije na primjeru našeg projekta.

Kao dio našeg internog projekta, kreirali smo Hyperledger Fabric mrežu, koja je dizajnirana za registraciju i evidentiranje studenata koji ulaze na univerzitete. Naša mreža se sastoji od dvije organizacije, u vlasništvu Univerziteta A i Univerziteta B. Svaka organizacija sadrži klijentsku aplikaciju, kao i svoju vlastitu osobu koja obavezuje i podržava. Također koristimo zajedničku uslugu naručivanja, usluge članstva i usluge certifikacijskog tijela.

1) Pokretanje transakcije

Korisnička aplikacija, koristeći Hyperledger Fabric SDK, pokreće zahtjev za transakcijom i šalje zahtjev čvorovima sa pametnim ugovorima. Zahtjev može biti promjena ili čitanje iz distribuirane knjige (Ledger). Ako uzmemo u obzir primjer naše testne konfiguracije sistema za računovodstvo studenata univerziteta, tada klijentska aplikacija šalje zahtjev za transakciju čvorovima univerziteta A i B, koji su uključeni u Politiku odobravanja zvanog pametnog ugovora. Čvor A je čvor koji se nalazi na univerzitetu koji registruje dolazećeg studenta, a čvor B je čvor koji se nalazi na drugom univerzitetu. Da bi se transakcija pohranila u distribuiranu knjigu, potrebno je da svi čvorovi koji, prema poslovnoj logici, moraju odobriti transakciju, uspješno izvrše pametne ugovore sa istim rezultatom. Korisnička aplikacija čvora A, koristeći Hyperledger Fabric SDK alate, prima politiku odobrenja (politiku odobrenja) i saznaje kojim čvorovima treba poslati zahtjev za transakcijom. Ovo je zahtjev da se pozove (pozove) određeni pametni ugovor (funkcija lančanog koda) kako bi se pročitali ili zapisali određeni podaci u distribuiranu knjigu. Tehnički, klijentski SDK koristi odgovarajuću funkciju, čijem API-ju se prosljeđuje objekt sa parametrima transakcije, a također dodaje potpis klijenta i šalje ove podatke preko bafera protokola preko gRPC-a do odgovarajućih čvorova (preporučujući peerove).

Hyperledger tkanina za lutke
Slika 2. Pokretanje transakcije

2) Pametno izvršenje ugovora

Čvorovi (Endorsing Peers), nakon što su primili zahtjev za izvođenje transakcije, provjeravaju potpis klijenta i ako je sve u redu, onda uzimaju objekt sa podacima zahtjeva i pokreću simulaciju izvršenja pametnog ugovora (funkcija lančanog koda) sa ovim podacima. Pametni ugovor je poslovna logika transakcije, određeni skup uslova i uputstava (u našem slučaju, ovo je provjera studenta, da li je novi student, ili je već prijavljen, provjera starosti itd.). Da biste izvršili pametni ugovor, trebat će vam i podaci iz WorldState-a. Kao rezultat simulacije pametnog ugovora na Endorsing peeru, dobijaju se dva skupa podataka - skup za čitanje i skup za pisanje. Read Set i Write Set su originalne i nove vrijednosti WorldState. (novo - u smislu dobijenom simulacijom pametnog ugovora).

Hyperledger tkanina za lutke
Slika 3. Izvršenje pametnog ugovora

3) Vraćanje podataka klijentskoj aplikaciji

Nakon simulacije pametnog ugovora, Endorsing Peers vraćaju klijentskoj aplikaciji početne podatke i rezultat simulacije, kao i RW set potpisan njihovim certifikatom. U ovoj fazi nema promjena u distribuiranoj knjizi. Klijentska aplikacija provjerava potpis partnera koji podržava, a također upoređuje originalne podatke o transakciji koji su poslani i vraćene podatke (odnosno, provjerava da li su originalni podaci na kojima je simulirana transakcija oštećeni). Ako je transakcija bila samo za čitanje podataka iz registra, tada klijentska aplikacija u skladu s tim prima neophodan skup za čitanje i na tom se transakcija obično uspješno završava bez promjene distribuiranog registra. U slučaju transakcije koja bi trebala promijeniti podatke u registru, klijentska aplikacija dodatno provjerava da li je implementirana politika potvrđivanja. Moguće je da klijentska aplikacija ne provjerava rezultat izvršenja Politike podrške, ali platforma Hyperledger Fabric u ovom slučaju omogućava provjeru politika na čvorovima (Comitting Peers) u fazi dodavanja transakcije u registar.

Hyperledger tkanina za lutke
Slika 4. Vraćanje podataka u klijentsku aplikaciju

4) Slanje RW seta na Ordering Peers

Klijentska aplikacija šalje transakciju zajedno sa povezanim podacima na uslugu naručivanja. Ovo uključuje RW set, potpise partnera koji podržavaju i ID kanala.

Usluga naručivanja - Na osnovu naziva, glavna funkcija ove usluge je da gradi dolazne transakcije u ispravnom redosledu. Kao i formiranje novog bloka distribuiranog registra i zagarantovana isporuka novih generisanih blokova svim Commiting čvorovima, čime se obezbeđuje konzistentnost podataka na svim čvorovima koji sadrže distribuirani registar (Committing peers). Istovremeno, sama usluga naručivanja ni na koji način ne mijenja registar. Usluga naručivanja je vitalna komponenta sistema, tako da je klaster od nekoliko čvorova. Usluga naručivanja ne provjerava valjanost transakcije, ona jednostavno prihvaća transakciju sa određenim ID-om kanala, raspoređuje dolazne transakcije određenim redoslijedom i od njih formira nove blokove distribuirane knjige. Jedna usluga naručivanja može istovremeno opsluživati ​​više kanala. Usluga naručivanja uključuje Kafka klaster, koji održava ispravan (nepromijenjen) red transakcija (vidi tačku 7).

Hyperledger tkanina za lutke
Slika 5. Slanje RW postavlja na Ordering Peers

5) Slanje generiranih blokova na urezivanje ravnopravnog

Blokovi formirani u Servisu naručivanja se emituju svim čvorovima mreže. Svaki čvor, nakon što je primio novi blok, provjerava ga da li je u skladu sa Politikom odobravanja, provjerava da li su svi partneri koji podržavaju dobili isti rezultat (Write Set) kao rezultat simulacije pametnog ugovora, a također provjerava da li su originalne vrijednosti promijenjen (odnosno, - Read Set - podaci pročitani pametnim ugovorom iz WorldState) od iniciranja transakcije. Ako su svi uslovi ispunjeni, transakcija se označava kao važeća, u suprotnom transakcija dobija status nevažeće.

Hyperledger tkanina za lutke
Slika 6. Slanje generisanih blokova Committing Peeru

6) Dodavanje bloka u registar

Svaki čvor dodaje transakciju u svoju lokalnu kopiju distribuirane knjige, a ako je transakcija važeća, tada se Write Set primjenjuje na WorldState (trenutno stanje), odnosno upisuju se nove vrijednosti objekata na koje je transakcija utjecala . Ako je transakcija primila token koji nije bio važeći (na primjer, postojale su dvije transakcije s istim objektima unutar istog bloka, tada jedna od transakcija neće biti važeća, jer su originalne vrijednosti već promijenjene drugom transakcijom ). Ova transakcija se takođe dodaje u distribuiranu knjigu sa nevažećim markerom, ali skup za pisanje ove transakcije se ne primenjuje na trenutno stanje WorldState i, shodno tome, ne menja objekte koji učestvuju u transakciji. Nakon toga se korisničkoj aplikaciji šalje obavijest da je transakcija zauvijek dodata u distribuiranu knjigu, kao i status transakcije, odnosno da li je važeća ili ne...

Hyperledger tkanina za lutke
Slika 7. Dodavanje bloka u registar

NARUČIVANJE USLUGE

Usluga naručivanja se sastoji od Kafka klastera sa odgovarajućim ZooKeeper čvorovima i čvorova usluge naručivanja (OSN) koji se nalaze između klijenata usluge naručivanja i Kafka klastera. Kafka klaster je distribuirana platforma za upravljanje protokom (poruka) otpornom na greške. Svaki kanal (tema) u Kafki je nepromjenjiv niz zapisa koji podržava samo dodavanje novog zapisa (brisanje postojećeg nije moguće). Ilustracija strukture teme je data u nastavku. To je Kafkino svojstvo koje se koristi za izgradnju blockchain platforme.

Hyperledger tkanina za lutke
preuzeto sa kafka.apache.org

  • Slika 8. Struktura teme naručivanja usluge*

Korisni linkovi

Youtube - Izgradnja blockchaina za poslovanje uz Hyperledger Project
Hyperledger Fabric Docs
Hyperledger fabric: distribuirani operativni sistem za dozvoljene blockchaine

Zahvalnice

Izražavam duboku zahvalnost svojim kolegama na pomoći u pripremi članka:
Nikolaj Marina
Igor Khapov
Dmitrij Gorbačov
Aleksandar Zemcov
Ekaterina Guseva

izvor: www.habr.com

Dodajte komentar