Tkanina Hyperledger za telebane

Platforma Blockchain za podjetja

Tkanina Hyperledger za telebane

Dober dan, dragi bralci, moje ime je Nikolay Nefedov, sem tehnični specialist pri IBM, v tem članku bi vam rad predstavil platformo blockchain - Hyperledger Fabric. Platforma je zasnovana za gradnjo poslovnih aplikacij poslovnega razreda. Raven članka je za nepripravljene bralce z osnovnim znanjem IT tehnologij.

Hyperledger Fabric je odprtokodni projekt, ena od vej odprtokodnega projekta Hyperledger, konzorcija fundacije Linux. Hyperledger Fabric sta prvotno začela Digital Assets in IBM. Glavna značilnost platforme Hyperledger Fabric je njena osredotočenost na uporabo v podjetjih. Zato je bila platforma razvita ob upoštevanju visoke hitrosti transakcij in njihovih nizkih stroškov ter identifikacije vseh udeležencev. Te prednosti so dosežene z ločitvijo storitve preverjanja transakcij in oblikovanjem novih blokov porazdeljenega registra ter uporabo certifikacijskega centra in avtorizacijo udeležencev.

Moj članek je del serije člankov o Hyperledger Fabric, v okviru katere opisujemo projekt sistema za beleženje študentov ob vpisu na univerzo.

Splošna arhitektura Hyperledger Fabric

Hyperledger Fabric je porazdeljeno omrežje blockchain, sestavljeno iz različnih funkcionalnih komponent, ki so nameščene na omrežnih vozliščih. Komponente Hyperledger Fabric so vsebniki Docker, ki jih je mogoče brezplačno prenesti iz DockerHub. Hyperledger Fabric je mogoče izvajati tudi v okolju Kubernetes.

Za pisanje pametnih pogodb (verižna koda v kontekstu Hyperledger Fabric) smo uporabili Golang (čeprav Hyperledger Fabric omogoča uporabo drugih jezikov). Za razvoj aplikacije po meri smo v našem primeru uporabili Node.js z ustreznim Hyperledger Fabric SDK.

Vozlišča izvajajo poslovno logiko (pametna pogodba) - verižno kodo, shranjujejo stanje porazdeljenega registra (podatki glavne knjige) in izvajajo druge sistemske storitve platforme. Vozlišče je le logična enota; na istem fizičnem strežniku lahko obstajajo različna vozlišča. Veliko bolj pomembno je, kako so vozlišča združena (Trusted domain) in s katerimi funkcijami blockchain omrežja so povezana.

Splošna arhitektura je videti takole:

Tkanina Hyperledger za telebane

Slika 1. Splošna arhitektura Hyperledger Fabric

Uporabniška aplikacija (Submitting Client) je aplikacija, s katero uporabniki delajo z omrežjem blockchain. Za delo morate biti pooblaščeni in imeti ustrezne pravice za različne vrste dejanj v omrežju.

Vrstniki imajo več vlog:

  • Endorsing Peer je vozlišče, ki simulira izvedbo transakcije (izvaja kodo pametne pogodbe). Po preverjanju in izvedbi pametne pogodbe vozlišče vrne rezultate izvedbe odjemalski aplikaciji skupaj s svojim podpisom.
  • Storitev naročanja je porazdeljena storitev na več vozliščih, ki se uporablja za ustvarjanje novih blokov porazdeljenega registra in ustvarjanje čakalne vrste za izvajanje transakcij. Storitev naročanja ne doda novih blokov v register (ta funkcija je bila premaknjena v Committing Peers za izboljšanje zmogljivosti).
  • Committing Peer je vozlišče, ki vsebuje porazdeljeni register in dodaja nove bloke v register (ki jih je ustvarila Storitev za naročanje). Vsi vrstniki za izdajanje vsebujejo lokalno kopijo porazdeljene knjige. Preden lokalno doda nov blok, Committing Peer preveri veljavnost vseh transakcij znotraj bloka.

Politika potrditve je politika za preverjanje veljavnosti transakcije. Ti pravilniki določajo zahtevan nabor vozlišč, na katerih mora biti izvedena pametna pogodba, da se transakcija prizna kot veljavna.

Porazdeljeni register - Lerger - je sestavljen iz dveh delov: WolrldState (imenovan tudi State DataBase) in BlockChain.

BlockChain je veriga blokov, ki shranjuje zapise o vseh spremembah, ki so se zgodile na objektih porazdeljenega registra.

WolrldState je komponenta porazdeljene knjige, ki shranjuje trenutne (najboljše) vrednosti vseh predmetov porazdeljene knjige.

WorldState je baza podatkov, v osnovni različici - LevelDB ali kompleksnejši - CouchDB, ki vsebuje pare ključ-vrednost, na primer: ime - Ivan, priimek - Ivanov, datum registracije v sistemu - 12.12.21. , datum rojstva - 17.12.1961 itd. WorldState in porazdeljeni register morata biti skladna med vsemi udeleženci v določenem kanalu.

Ker je Hyperledger Fabric omrežje, v katerem so vsi udeleženci znani in avtenticirani, uporablja namenski overitelj – CA (Certification Authority). CA deluje na osnovi standarda X.509 in infrastrukture javnih ključev – PKI.

Članska storitev je storitev, prek katere člani preverijo, ali predmet pripada določeni organizaciji ali kanalu.

Transakcija – v večini primerov je pisanje novih podatkov v porazdeljeni register.
Obstajajo tudi transakcije za ustvarjanje kanalov ali pametnih pogodb. Transakcijo sproži uporabniška aplikacija in se konča z zapisom v porazdeljeni knjigi.

Kanal je zaprto podomrežje, ki ga sestavljata dva ali več udeležencev v omrežju blockchain in je zasnovano za izvajanje zaupnih transakcij znotraj omejenega, a znanega kroga udeležencev. Kanal določajo udeleženci, njegov porazdeljeni register, pametne pogodbe, Storitev naročanja, WorldState. Vsak udeleženec kanala mora biti pooblaščen za dostop do kanala in imeti pravico izvajati različne vrste transakcij. Avtorizacija se izvede s pomočjo Članskega servisa.

Tipičen scenarij izvedbe transakcije

Nato bi rad spregovoril o tipičnem scenariju izvedbe transakcije na našem projektu kot primeru.

V okviru internega projekta smo ustvarili omrežje Hyperledger Fabric, ki je namenjeno registraciji in obračunu študentov, ki vstopajo na univerze. Naše omrežje je sestavljeno iz dveh organizacij, ki pripadata Univerzi A in Univerzi B. Vsaka organizacija vsebuje odjemalsko aplikacijo ter svojega vrstnika za obveščanje in potrjevanje. Uporabljamo tudi skupne storitve Ordering Service, Membership Service in Certification Authority.

1) Začetek transakcije

Uporabniška aplikacija z uporabo Hyperledger Fabric SDK sproži zahtevo za transakcijo in pošlje zahtevo vozliščem s pametnimi pogodbami. Zahteva je lahko sprememba ali branje iz porazdeljenega registra (Ledger). Če upoštevamo primer konfiguracije našega testnega sistema za računovodstvo za univerzitetne študente, odjemalska aplikacija pošlje zahtevo za transakcijo vozliščema univerz A in B, ki sta vključeni v politiko potrditve klicane pametne pogodbe. Vozlišče A je vozlišče, ki se nahaja na univerzi, ki registrira dohodnega študenta, vozlišče B pa je vozlišče, ki se nahaja na drugi univerzi. Da se transakcija shrani v porazdeljeni register, je potrebno, da vsa vozlišča, ki morajo po poslovni logiki odobriti transakcijo, uspešno izvajajo pametne pogodbe z enakim rezultatom. Vozlišče Uporabniška aplikacija z uporabo orodij Hyperledger Fabric SDK pridobi pravilnik o odobritvi in ​​se nauči, katerim vozliščem poslati zahtevo za transakcijo. To je zahteva za priklic določene pametne pogodbe (funkcija verižne kode) za branje ali pisanje določenih podatkov v porazdeljeni register. Tehnično gledano odjemalski SDK uporablja ustrezno funkcijo, katere API posreduje določen objekt s transakcijskimi parametri, doda pa tudi podpis odjemalca in pošlje te podatke prek medpomnilnika protokola preko gRPC do ustreznih vozlišč (enakovrednih podpornikov).

Tkanina Hyperledger za telebane
Slika 2. Začetek transakcije

2) Izvedba pametne pogodbe

Vozlišča (Endorsing Peers), ko prejmejo zahtevo za izvedbo transakcije, preverijo podpis stranke in če je vse v redu, vzamejo objekt s podatki zahteve in zaženejo simulacijo izvajanja pametne pogodbe (funkcija verižne kode) z te podatke. Pametna pogodba je poslovna logika transakcije, določen nabor pogojev in navodil (v našem primeru je to preverjanje študenta, ali je to novi študent ali je že prijavljen, preverjanje starosti itd.). Za izvedbo pametne pogodbe boste potrebovali tudi podatke iz WorldState. Kot rezultat simulacije pametne pogodbe na vrstniku Endorsing se pridobita dva niza podatkov – Read Set in Write Set. Read Set in Write Set sta izvirni in novi vrednosti WorldState. (novo – v smislu, pridobljenem med simulacijo pametne pogodbe).

Tkanina Hyperledger za telebane
Slika 3. Izvedba pametne pogodbe

3) Vračanje podatkov odjemalski aplikaciji

Po izvedbi simulacije pametne pogodbe Endorsing Peers odjemalski aplikaciji vrne izvirne podatke in rezultat simulacije ter RW Set, podpisan z njihovim potrdilom. Na tej stopnji v porazdeljenem registru ne pride do nobenih sprememb. Odjemalska aplikacija preveri podpis Endorsing Peer in primerja tudi izvirne podatke o transakciji, ki so bili poslani, in podatke, ki so bili vrnjeni (to pomeni, preveri, ali so bili izvirni podatki, na podlagi katerih je bila transakcija simulirana, popačeni). Če je bila transakcija samo za branje podatkov iz registra, potem odjemalska aplikacija ustrezno prejme potreben Read Set in to običajno uspešno zaključi transakcijo brez spreminjanja porazdeljenega registra. V primeru transakcije, ki mora spremeniti podatke v registru, odjemalska aplikacija dodatno preveri izvajanje pravilnika o potrditvi. Možno je, da odjemalska aplikacija ne preveri rezultatov izvajanja pravilnika o potrditvi, vendar platforma Hyperledger Fabric v tem primeru omogoča preverjanje pravilnikov na vozliščih (Committing Peers) na stopnji dodajanja transakcije v register.

Tkanina Hyperledger za telebane
Slika 4. Vračanje podatkov odjemalski aplikaciji

4) Pošiljanje nizov RW vrstnikom za naročanje

Odjemalska aplikacija pošlje transakcijo skupaj s pripadajočimi podatki servisu Naročanje. To vključuje RW Set, podpise enakovrednih podpornikov in ID kanala.

Storitev naročanja – glede na ime je glavna funkcija te storitve urejanje dohodnih transakcij v pravilnem vrstnem redu. Kot tudi oblikovanje novega bloka porazdeljenega registra in zagotovljena dostava novih generiranih blokov v vsa Commiting vozlišča, s čimer je zagotovljena konsistentnost podatkov na vseh vozliščih, ki vsebujejo porazdeljeni register (Committing peers). Hkrati storitev Naročanje sama na noben način ne spremeni registra. Storitev naročanja je bistvena komponenta sistema, zato je gruča več vozlišč. Storitev za naročanje ne preverja veljavnosti transakcije, ampak preprosto sprejme transakcijo z določenim identifikatorjem kanala, uredi dohodne transakcije v določenem vrstnem redu in iz njih oblikuje nove bloke porazdeljenega registra. Ena storitev za naročanje lahko služi več kanalom hkrati. Storitev naročanja vključuje gručo Kafka, ki vzdržuje pravilno (nespremenljivo) čakalno vrsto transakcij (glej točko 7).

Tkanina Hyperledger za telebane
Slika 5. Pošiljanje RW naborov vrstnikom za naročanje

5) Pošiljanje ustvarjenih blokov vrstniku za potrditev

Bloki, ustvarjeni v Storitvi naročanja, se prenašajo (oddajajo) vsem omrežnim vozliščem. Vsako vozlišče, ki prejme nov blok, preveri njegovo skladnost s pravilnikom o podpori, preveri, ali so vsi enakovredni podporniki prejeli enak rezultat (Write Set) kot rezultat simulacije pametne pogodbe, in preveri tudi, ali so izvirne vrednosti spremenjen (to je Read Set – podatki, ki jih bere pametna pogodba iz WorldState) od trenutka, ko je bila transakcija sprožena. Če so vsi pogoji izpolnjeni, je transakcija označena kot veljavna, v nasprotnem primeru dobi transakcija status neveljavna.

Tkanina Hyperledger za telebane
Slika 6. Pošiljanje ustvarjenih blokov v Committing Peer

6) Dodajanje bloka v register

Vsako vozlišče doda transakcijo v svojo lokalno kopijo porazdeljenega registra in če je transakcija veljavna, se Write Set uporabi za WorldState (trenutno stanje) in v skladu s tem nove vrednosti objektov, na katere je vplival transakcije so napisane. Če je transakcija prejela žeton, ki ni veljaven (na primer, dve transakciji sta se zgodili z istimi predmeti znotraj istega bloka, se bo ena od transakcij izkazala za neveljavno, saj je prvotne vrednosti že spremenil drug transakcija). Ta transakcija je prav tako dodana v porazdeljeno knjigo z neveljavnim žetonom, vendar Write Set te transakcije ni uporabljen za trenutno stanje WorldState in zato ne spremeni objektov, ki sodelujejo v transakciji. Po tem se uporabniški aplikaciji pošlje obvestilo, da je bila transakcija trajno dodana v distribuirani register, ter status transakcije, torej ali je veljavna ali ne...

Tkanina Hyperledger za telebane
Slika 7. Dodajanje bloka v register

NAROČANJE STORITEV

Storitev Ordering Service je sestavljena iz gruče Kafka z ustreznimi vozlišči ZooKeeper in vozlišči storitve Ordering Service Nodes (OSN), ki stojijo med odjemalci storitve Ordering in gručem Kafka. Grozd Kafka je porazdeljena platforma za upravljanje tokov (sporočil), odporna na napake. Vsak kanal (tema) v Kafki je nespremenljivo zaporedje zapisov, ki podpira samo dodajanje novega zapisa (brisanje obstoječega ni mogoče). Spodaj je prikazana ilustracija strukture teme. Ta lastnost Kafke se uporablja za izgradnjo platforme blockchain.

Tkanina Hyperledger za telebane
povzeto iz kafka.apache.org

  • Slika 8. Struktura teme storitve naročanja*

Uporabne povezave

Youtube – izgradnja verige blokov za poslovanje s projektom Hyperledger
Dokumenti Hyperledger Fabric
Tkanina Hyperledger: porazdeljen operacijski sistem za dovoljene verige blokov

Zahvala

Svojim kolegom se zahvaljujem za pomoč pri pripravi tega članka:
Nikolaj Marin
Igor Khapov
Dmitrij Gorbačov
Aleksander Zemcov
Ekaterina Guseva

Vir: www.habr.com

Dodaj komentar