Amehlo akho esaba futhi izandla zakho ziyaluma!
Ezihlokweni ezedlule, sibhekane nobuchwepheshe okwakhiwa kubo ama-blockchains () kanye namacala angenziwa ngosizo lwabo (). Isikhathi sokusebenza ngezandla zakho! Ukuze usebenzise abashayeli bezindiza kanye ne-PoC (Ubufakazi Bemiqondo), ngincamela ukusebenzisa amafu, ngoba... zingafinyeleleka kunoma yikuphi emhlabeni futhi, ngokuvamile, asikho isidingo sokuchitha isikhathi ekufakweni okuyisicefe kwemvelo, ngoba Kukhona ukucushwa osethiwe. Ngakho-ke, masenze into elula, isibonelo, inethiwekhi yokudlulisa izinhlamvu zemali phakathi kwabahlanganyeli futhi masiyibize ngesizotha ngokuthi i-Bitcoin. Kulokhu sizosebenzisa ifu le-IBM kanye ne-universal blockchain Hyperledger Fabric. Okokuqala, ake sithole ukuthi kungani i-Hyperledger Fabric ibizwa ngokuthi i-blockchain yendawo yonke?

Indwangu ye-Hyperledger - i-blockchain yendawo yonke
Ngokuvamile, isistimu yolwazi jikelele yile:
- Isethi yamaseva kanye nesoftware ewumgogodla owenza umqondo webhizinisi;
- Izixhumi ezibonakalayo zokusebenzelana nesistimu;
- Amathuluzi okubhaliswa, ukuqinisekiswa nokugunyazwa kwamadivayisi/abantu;
- Isizindalwazi sigcina idatha yokusebenza neyengobo yomlando:

Inguqulo esemthethweni yalokho okuyi-Hyperledger Fabric ingafundwa kuyo , futhi ngamafuphi, i-Hyperledger Fabric iyinkundla yomthombo ovulekile evumela ukuthi wakhe ama-blockchain ayimfihlo futhi wenze izinkontileka ezihlakaniphile ezibhalwe ngezilimi zokuhlela ze-JS ne-Go. Ake sibheke ngokuningiliziwe ukwakheka kwe-Hyperledger Fabric futhi siqiniseke ukuthi lolu uhlelo lwendawo yonke olunemininingwane kuphela yokugcina nokurekhoda idatha. Okucacile ukuthi idatha, njengakuwo wonke ama-blockchains, igcinwa kumabhulokhi abekwe ku-blockchain kuphela uma ababambiqhaza befinyelela ukuvumelana futhi ngemva kokurekhoda idatha ayikwazi ukulungiswa ngokuthula noma ukususwa.
I-Hyperledger Fabric Architecture
Umdwebo ubonisa i-Hyperledger Fabric Architecture:

Izinhlangano - izinhlangano ziqukethe ontanga, i.e. i-blockchain ikhona ngenxa yokusekelwa yizinhlangano. Izinhlangano ezehlukene zingaba yingxenye yesiteshi esifanayo.
Isiteshi - isakhiwo esinengqondo esihlanganisa ontanga ngamaqembu, i.e. i-blockchain icacisiwe. I-Hyperledger Fabric ingasebenza kanyekanye ama-blockchain amaningi ngomqondo ohlukile webhizinisi.
Umhlinzeki Wezinsizakalo Zobulungu (MSP) iyi-CA (Isiphathimandla Sesitifiketi) sokukhipha ubuwena nokwabela izindima. Ukwakha i-node, udinga ukuxhumana ne-MSP.
Amanodi nontanga - qinisekisa okwenziwayo, gcina i-blockchain, yenza izinkontileka ezihlakaniphile futhi uxhumane nezinhlelo zokusebenza. Ontanga banomazisi (isitifiketi sedijithali), esikhishwa yi-MSP. Ngokungafani nenethiwekhi ye-Bitcoin noma ye-Etherium, lapho wonke ama-node enamalungelo alinganayo, kuma-Hyperledger Fabric nodes adlala izindima ezihlukene:
- Hlanganyela mhlawumbe ukuvuma ontanga (EP) nokwenza izinkontileka ezihlakaniphile.
- Untanga ozibophezele (CP) - gcina kuphela idatha ku-blockchain futhi ubuyekeze "isimo somhlaba".
- I-Anchor Peer (AP) - uma izinhlangano eziningana zibamba iqhaza ku-blockchain, khona-ke ontanga be-anchor basetshenziselwa ukuxhumana phakathi kwabo. Yonke inhlangano kufanele ibe nozakwabo oyedwa noma ngaphezulu. Ngokusebenzisa i-AP, noma yimuphi untanga enhlanganweni angathola ulwazi mayelana nabo bonke ontanga kwezinye izinhlangano. Isetshenziselwa ukuvumelanisa ulwazi phakathi kwama-AP .
- Umholi Ntanga - uma inhlangano inontanga abambalwa, khona-ke umholi wontanga kuphela ozothola amabhulokhi avela kusevisi yoku-oda futhi awanikeze abanye ontanga. Umholi angacaciswa ngokwezibalo noma akhethwe ngontanga enhlanganweni. Iphrothokholi yokuhleba iphinde isetshenziselwe ukuvumelanisa ulwazi ngabaholi.
Amafa - izinhlangano ezinenani futhi ezigcinwe ku-blockchain. Ngokucacile, lena idatha yenani elingukhiye ngefomethi ye-JSON. Yile datha eqoshwe ku-Blockchain. Banomlando, ogcinwe ku-blockchain, kanye nesimo samanje, esigcinwe ku-database "yezwe lomhlaba". Izakhiwo zedatha zigcwaliswa ngokungafanele kuye ngemisebenzi yebhizinisi. Azikho izinkambu ezidingekayo, okuwukuphela kwesincomo ukuthi izimpahla kufanele zibe nomnikazi futhi zibe yigugu.
I-Ledger - iqukethe i-Blockchain kanye nesizindalwazi se-Word state, egcina isimo samanje sempahla. Izwe lomhlaba lisebenzisa i-LevelDB noma i-CouchDB.
Inkontileka ye-Smart - kusetshenziswa izinkontileka ezihlakaniphile, umqondo webhizinisi wohlelo uyasetshenziswa. Ku-Hyperledger Fabric, izinkontileka ezihlakaniphile zibizwa nge-chaincode. Kusetshenziswa chaincode, izimpahla kanye transactions phezu kwabo kucacisiwe. Ngokwemibandela yobuchwepheshe, izinkontileka ezihlakaniphile zingamamojula esofthiwe asetshenziswa ngezilimi zokuhlela ze-JS noma ze-Go.
Inqubomgomo yokugunyaza — ku-chaincode ngayinye, ungasetha inqubomgomo yokuthi zingaki iziqinisekiso zokwenziwe okufanele zilindelwe futhi zivela kubani. Uma inqubomgomo ingasethiwe, okuzenzakalelayo kusho ukuthi: "umsebenzi kufanele uqinisekiswe yinoma yiliphi ilungu lanoma iyiphi inhlangano esiteshini." Izibonelo zezinqubomgomo:
- Ukuthengiselana kufanele kuvunywe yinoma yimuphi umlawuli wenhlangano;
- Kumele kuqinisekiswe yinoma yiliphi ilungu noma iklayenti lenhlangano;
- Kumele kuqinisekiswe yinoma iyiphi inhlangano yontanga.
Isevisi yoku-oda — Ipakisha okwenziwayo kumabhulokhi futhi ikuthumele kontanga esiteshini. Iqinisekisa ukulethwa kwemilayezo kubo bonke ontanga kunethiwekhi. Isetshenziselwa izinhlelo zezimboni , ukuze kuthuthukiswe futhi kuhlolwe .
CallFlow

- Uhlelo lokusebenza luxhumana ne-Hyperledger Fabric lisebenzisa i-Go, Node.js noma i-Java SDK;
- Iklayenti lidala umsebenzi we-tx futhi likuthumele kontanga abagunyazayo;
- I-Peer iqinisekisa isiginesha yeklayenti, iqedele okwenziwayo, bese ibuyisela isiginesha yokuvumela kuklayenti. I-Chaincode isetshenziswa kontanga abagunyazayo kuphela, futhi umphumela wokwenziwa kwayo uthunyelwa kubo bonke ontanga. Le algorithm yomsebenzi ibizwa nge-PBFT (Practical Byzantine Fault Tolerant) consensus. Ihlukile ku iqiniso lokuthi umlayezo uthunyelwe nokuqinisekiswa akulindelekile hhayi kubo bonke abahlanganyeli, kodwa kuphela kusukela kusethi ethile;
- Ngemva kokuba iklayenti lithole inombolo yezimpendulo ezihambisana nenqubomgomo yokugunyaza, lithumela ukuthengiselana kusevisi yoku-oda;
- Isevisi yoku-oda idala ibhulokhi futhi iyithumele kubo bonke ontanga abazibophezelayo. Isevisi yoku-oda iqinisekisa ukuqoshwa okulandelanayo kwamabhulokhi, okuqeda lokho okubizwa ngemfoloko ye-ledger ();
- Ontanga bathola i-block, hlola inqubomgomo yokugunyaza futhi, bhala i-block ku-blockchain futhi ushintshe isimo ku-DB "yezwe lomhlaba".
Labo. Lokhu kubangela ukwehlukana kwezindima phakathi kwamanodi. Lokhu kuqinisekisa ukuthi i-blockchain iyakaleka futhi ivikelekile:
- Izinkontileka ezihlakaniphile (chaincode) zenza ontanga abagunyazayo. Lokhu kuqinisekisa ubumfihlo bezinkontileka ezihlakaniphile, ngoba ayigcinwa yibo bonke ababambiqhaza, kodwa kuphela ngokuvumela ontanga.
- Uku-oda kufanele kusebenze ngokushesha. Lokhu kuqinisekiswa yiqiniso lokuthi Uku-oda kwakha kuphela ibhulokhi futhi kuyithumela kusethi ehleliwe yontanga yabaholi.
- Ontanga abazibophezela bagcina i-blockchain kuphela - ingaba miningi futhi ayidingi amandla amaningi nokusebenza okusheshayo.
Imininingwane eyengeziwe mayelana nezixazululo zezakhiwo ze-Hyperledger Fabric nokuthi kungani isebenza ngale ndlela hhayi ngenye indlela ingatholakala lapha: noma lapha: .
Ngakho-ke, i-Hyperledger Fabric iyisistimu yendawo yonke ongakwazi ngayo:
- Sebenzisa umqondo webhizinisi ongekho emthethweni usebenzisa indlela yenkontileka ehlakaniphile;
- Rekhoda futhi uthole idatha evela ku-blockchain database ngefomethi ye-JSON;
- Nikeza futhi uqinisekise ukufinyelela kwe-API usebenzisa Isiphathimandla Sesitifiketi.
Manje njengoba sesiqonda kancane mayelana nemininingwane ye-Hyperledger Fabric, ekugcineni masenze okuthile okuwusizo!
Kusetshenziswa i-blockchain
Ukwakheka kwenkinga
Umsebenzi ukusebenzisa inethiwekhi ye-Citcoin ngemisebenzi elandelayo: dala i-akhawunti, uthole ibhalansi, ugcwalise i-akhawunti yakho, udlulise izinhlamvu zemali kusuka ku-akhawunti eyodwa kuya kwenye. Ake sidwebe imodeli yento, esizobuye siyisebenzise kunkontileka ehlakaniphile. Ngakho-ke, sizoba nama-akhawunti akhonjwe ngamagama futhi aqukethe ibhalansi, nohlu lwama-akhawunti. Ama-akhawunti kanye nohlu lwama-akhawunti, ngokwemibandela yezimpahla ze-Hyperledger Fabric. Ngokuvumelana nalokho, banomlando kanye nesimo samanje. Ngizozama ukudweba lokhu ngokucacile:

Izibalo eziphezulu yisimo samanje, esigcinwe kusizindalwazi se-"World state". Ngezansi kwazo kunezibalo ezikhombisa umlando ogcinwe ku-blockchain. Isimo samanje sezimpahla sishintshwa okwenziwayo. Ifa lishintshwa kuphela lilonke, ngakho-ke, ngenxa yomsebenzi, kwakhiwa into entsha, futhi inani lamanje lempahla lingena emlandweni.
I-IBM Cloud
Sakha i-akhawunti ku- . Ukuze usebenzise inkundla ye-blockchain, kufanele ithuthukiselwe ku-Pay-As-You-Go. Le nqubo ingase ingasheshi, ngoba... I-IBM icela ulwazi olwengeziwe futhi iyaluqinisekisa mathupha. Ngenothi elihle, ngingasho ukuthi i-IBM inezinto ezinhle zokuqeqesha ezikuvumela ukuthi usebenzise i-Hyperledger Fabric efwini labo. Ngithande uchungechunge olulandelayo lwezihloko nezibonelo:
Okulandelayo yizithombe-skrini ze-IBM Blockchain platform. Lona akuwona umyalo wokuthi ungakha kanjani i-blockchain, kodwa umane ukukhombisa ububanzi bomsebenzi. Ngakho-ke, ngezinhloso zethu, senza Inhlangano eyodwa:

Sakha ama-node kuyo: I-Order CA, i-Org1 CA, Intanga Yoku-oda:

Sakha abasebenzisi:

Dala Isiteshi futhi usibize nge-citcoin:

Empeleni isiteshi siyi-blockchain, ngakho siqala ngo-block zero (ibhulokhi likaGenesise):

Ukubhala Inkontileka Ehlakaniphile
/*
* Citcoin smart-contract v1.5 for Hyperledger Fabric
* (c) Alexey Sushkov, 2019
*/
'use strict';
const { Contract } = require('fabric-contract-api');
const maxAccounts = 5;
class CitcoinEvents extends Contract {
async instantiate(ctx) {
console.info('instantiate');
let emptyList = [];
await ctx.stub.putState('accounts', Buffer.from(JSON.stringify(emptyList)));
}
// Get all accounts
async GetAccounts(ctx) {
// Get account list:
let accounts = '{}'
let accountsData = await ctx.stub.getState('accounts');
if (accountsData) {
accounts = JSON.parse(accountsData.toString());
} else {
throw new Error('accounts not found');
}
return accountsData.toString()
}
// add a account object to the blockchain state identifited by their name
async AddAccount(ctx, name, balance) {
// this is account data:
let account = {
name: name,
balance: Number(balance),
type: 'account',
};
// create account:
await ctx.stub.putState(name, Buffer.from(JSON.stringify(account)));
// Add account to list:
let accountsData = await ctx.stub.getState('accounts');
if (accountsData) {
let accounts = JSON.parse(accountsData.toString());
if (accounts.length < maxAccounts)
{
accounts.push(name);
await ctx.stub.putState('accounts', Buffer.from(JSON.stringify(accounts)));
} else {
throw new Error('Max accounts number reached');
}
} else {
throw new Error('accounts not found');
}
// return object
return JSON.stringify(account);
}
// Sends money from Account to Account
async SendFrom(ctx, fromAccount, toAccount, value) {
// get Account from
let fromData = await ctx.stub.getState(fromAccount);
let from;
if (fromData) {
from = JSON.parse(fromData.toString());
if (from.type !== 'account') {
throw new Error('wrong from type');
}
} else {
throw new Error('Accout from not found');
}
// get Account to
let toData = await ctx.stub.getState(toAccount);
let to;
if (toData) {
to = JSON.parse(toData.toString());
if (to.type !== 'account') {
throw new Error('wrong to type');
}
} else {
throw new Error('Accout to not found');
}
// update the balances
if ((from.balance - Number(value)) >= 0 ) {
from.balance -= Number(value);
to.balance += Number(value);
} else {
throw new Error('From Account: not enought balance');
}
await ctx.stub.putState(from.name, Buffer.from(JSON.stringify(from)));
await ctx.stub.putState(to.name, Buffer.from(JSON.stringify(to)));
// define and set Event
let Event = {
type: "SendFrom",
from: from.name,
to: to.name,
balanceFrom: from.balance,
balanceTo: to.balance,
value: value
};
await ctx.stub.setEvent('SendFrom', Buffer.from(JSON.stringify(Event)));
// return to object
return JSON.stringify(from);
}
// get the state from key
async GetState(ctx, key) {
let data = await ctx.stub.getState(key);
let jsonData = JSON.parse(data.toString());
return JSON.stringify(jsonData);
}
// GetBalance
async GetBalance(ctx, accountName) {
let data = await ctx.stub.getState(accountName);
let jsonData = JSON.parse(data.toString());
return JSON.stringify(jsonData);
}
// Refill own balance
async RefillBalance(ctx, toAccount, value) {
// get Account to
let toData = await ctx.stub.getState(toAccount);
let to;
if (toData) {
to = JSON.parse(toData.toString());
if (to.type !== 'account') {
throw new Error('wrong to type');
}
} else {
throw new Error('Accout to not found');
}
// update the balance
to.balance += Number(value);
await ctx.stub.putState(to.name, Buffer.from(JSON.stringify(to)));
// define and set Event
let Event = {
type: "RefillBalance",
to: to.name,
balanceTo: to.balance,
value: value
};
await ctx.stub.setEvent('RefillBalance', Buffer.from(JSON.stringify(Event)));
// return to object
return JSON.stringify(from);
}
}
module.exports = CitcoinEvents;
Ngokwemvelo, konke kufanele kucace lapha:
- Kukhona imisebenzi embalwa (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) uhlelo lwedemo oluzoyibiza kusetshenziswa i-Hyperledger Fabric API.
- Imisebenzi ye-SendFrom ne-RefillBalance ikhiqiza Imicimbi ezotholwa uhlelo lwedemo.
- Umsebenzi osheshayo ubizwa kanye lapho inkontileka ehlakaniphile isungulwa. Eqinisweni, ayibizwa kanye nje kuphela, kodwa njalo uma inguqulo yenkontileka ehlakaniphile ishintsha. Ngakho-ke, ukuqalisa uhlu ngohlelo olungenalutho kuwumbono omubi, ngoba Manje, uma sishintsha inguqulo yenkontileka ehlakaniphile, sizolahlekelwa uhlu lwamanje. Kodwa kulungile, ngiyafunda nje).
- Ama-akhawunti nohlu lwama-akhawunti yizakhiwo zedatha ye-JSON. I-JS isetshenziselwa ukukhohlisa idatha.
- Ungathola inani lamanje lempahla usebenzisa i-getState function call, futhi uyibuyekeze usebenzisa i-putState.
- Lapho udala i-Akhawunti, kubizwa umsebenzi we-AddAccount, lapho kwenziwa ukuqhathanisa ngenani eliphezulu lama-akhawunti ku-blockchain (maxAccounts = 5). Futhi lapha kukhona i-jamb (ubonile?), Okuholela ekwandeni okungapheli kwenani lama-akhawunti. Amaphutha anjalo kufanele agwenywe)
Okulandelayo, silayisha inkontileka ehlakaniphile esiteshini futhi siyayiqinisa:

Ake sibheke okwenziwayo kokufaka Inkontileka Ehlakaniphile:

Ake sibheke imininingwane ngesiteshi sethu:

Ngenxa yalokho, sithola umdwebo olandelayo wenethiwekhi ye-blockchain efwini le-IBM. Umdwebo uphinde ubonise uhlelo lwedemo olusebenza efwini le-Amazon kuseva ebonakalayo (okuningi mayelana nalo esigabeni esilandelayo):

Ukudala i-GUI yamakholi we-Hyperledger Fabric API
I-Hyperledger Fabric ine-API engasetshenziselwa:
- Dala isiteshi;
- Ukuxhumana kontanga esiteshini;
- Ukufakwa nokufakwa kwezinkontileka ezihlakaniphile esiteshini;
- Ukushayela ucingo;
- Cela imininingwane nge-blockchain.
Ukuthuthukiswa kohlelo lokusebenza
Kuhlelo lwethu lwedemo sizosebenzisa i-API kuphela ukubiza ukuthengiselana nokucela ulwazi, ngoba Sesivele siqedile izinyathelo ezisele sisebenzisa iplatifomu ye-IBM blockchain. Sibhala i-GUI sisebenzisa isitaki sobuchwepheshe esijwayelekile: Express.js + Vue.js + Node.js. Ungabhala indatshana ehlukile yokuthi ungaqala kanjani ukudala izinhlelo zokusebenza zewebhu zesimanje. Lapha ngizoshiya isixhumanisi ochungechungeni lwezinkulumo engizithande kakhulu: . Umphumela uwuhlelo lokusebenza lweseva yeklayenti olunesithombe esibonakalayo esijwayelekile ngesitayela se-Material Design ye-Google. I-REST API phakathi kweklayenti neseva iqukethe izingcingo ezimbalwa:
- I-HyperledgerDemo/v1/init - qalisa i-blockchain;
- HyperledgerDemo/v1/accounts/list — thola uhlu lwawo wonke ama-akhawunti;
- HyperledgerDemo/v1/account?name=Bob&balance=100 — dala i-akhawunti ka-Bob;
- HyperledgerDemo/v1/info?account=Bob — thola ulwazi mayelana ne-akhawunti ka-Bob;
- HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 - dlulisa izinhlamvu zemali ezimbili zisuka ku-Bob ziye ku-Alice;
- I-HyperledgerDemo/v1/nqamula - vala ukuxhumeka ku-blockchain.
Incazelo ye-API enezibonelo ezifakiwe - uhlelo olwaziwayo lokuhlola i-HTTP API.
Isicelo sedemo kumafu we-Amazon
Ngilayishe uhlelo lokusebenza e-Amazon ngoba... I-IBM ayikakakwazi ukuthuthukisa i-akhawunti yami futhi ingivumele ukuthi ngidale amaseva abonakalayo. Indlela yokwengeza i-cherry esizindeni: . Ngizogcina iseva ivuliwe isikhashana, bese ngiyivala, ngoba... amasenti aqashiwe ayaconsa, futhi izinhlamvu zemali ze-citcoin azikakafakwa ohlwini lwe-stock exchange) Ngifaka izithombe-skrini zedemo esihlokweni ukuze kucace umqondo womsebenzi. Isicelo sedemo singa:
- Qalisa i-blockchain;
- Dala i-Akhawunti (kodwa manje awukwazi ukudala i-Akhawunti entsha, ngoba inombolo enkulu yama-akhawunti ashiwo kunkontileka ehlakaniphile ifinyelelwe ku-blockchain);
- Thola uhlu lwama-Akhawunti;
- Dlulisa izinhlamvu zemali ze-citcoin phakathi kuka-Alice, uBob no-Alex;
- Thola imicimbi (kodwa manje ayikho indlela yokubonisa imicimbi, ngakho-ke ukuze kube lula, i-interface ithi imicimbi ayisekelwe);
- Izenzo zelogi.
Okokuqala siqala i-blockchain:

Okulandelayo, sidala i-akhawunti yethu, ungachithi isikhathi ngebhalansi:

Sithola uhlu lwawo wonke ama-akhawunti atholakalayo:

Sikhetha umthumeli nomamukeli, futhi sithole amabhalansi abo. Uma umthumeli nomamukeli befana, i-akhawunti yakhe izogcwaliswa:

Kulogi siqapha ukwenziwa kwemisebenzi:

Empeleni, lokho kuphela ngohlelo lwedemo. Ngezansi ungabona ukuthengiselana kwethu ku-blockchain:

Futhi uhlu olujwayelekile lwemisebenzi:

Ngalokhu, siqede ngempumelelo ukuqaliswa kwe-PoC ukudala inethiwekhi ye-Citcoin. Yini enye okudingeka yenziwe ukuze i-Citcoin ibe inethiwekhi egcwele yokudlulisa izinhlamvu zemali? Kancane:
- Esigabeni sokudalwa kwe-akhawunti, sebenzisa ukukhiqizwa kokhiye wangasese/womphakathi. Ukhiye oyimfihlo kumele ugcinwe nomsebenzisi we-akhawunti, ukhiye osesidlangalaleni kumele ugcinwe ku-blockchain.
- Yenza uhlamvu lwemali lapho ukhiye osesidlangalaleni, esikhundleni segama, usetshenziswa ukukhomba umsebenzisi.
- Bethela okwenziwayo kusuka kumsebenzisi kuya kuseva ngokhiye wakhe oyimfihlo.
isiphetho
Senze inethiwekhi ye-Citcoin ngemisebenzi elandelayo: engeza i-akhawunti, thola ibhalansi, gcwalisa i-akhawunti yakho, udlulise izinhlamvu zemali zisuka kwenye i-akhawunti ziye kwenye. Ngakho-ke, kusibizeleni ukwakha i-PoC?
- Udinga ukufunda i-blockchain ngokujwayelekile kanye ne-Hyperledger Fabric ikakhulukazi;
- Funda ukusebenzisa i-IBM noma amafu e-Amazon;
- Funda ulimi lokuhlela lwe-JS kanye nohlaka oluthile lwewebhu;
- Uma idatha ethile idinga ukugcinwa hhayi ku-blockchain, kodwa ku-database ehlukile, bese ufunda ukuhlanganisa, isibonelo, nge-PostgreSQL;
- Futhi okokugcina kodwa okungabalulekile, ngaphandle kolwazi Linux akukho ndawo ezweni lanamuhla!)
Yiqiniso, akuyona isayensi ye-rocket, kodwa kuzodingeka usebenze kanzima!
Imithombo ku-GitHub
Imithombo ifakiwe . Incazelo emfushane yendawo yokugcina:
Ikhathalogi «Iseva» — Iseva ye-Node.js
Ikhathalogi «iklayenti» — Iklayenti le-Node.js
Ikhathalogi «blockchain"(amanani wepharamitha nokhiye, vele, awasebenzi futhi anikezwa njengesibonelo kuphela):
- contract — ikhodi yomthombo wenkontileka ehlakaniphile
- wallet - okhiye bomsebenzisi bokusebenzisa i-Hyperledger Fabric API.
- *.cds - izinguqulo ezihlanganisiwe zezinkontileka ezihlakaniphile
- *.json amafayela - izibonelo zamafayela okusetha okusebenzisa i-Hyperledger Fabric API
Kuseyisiqalo nje!
Source: www.habr.com
