I-Blockchain: iyiphi i-PoC okufanele siyakhe?

Amehlo akho esaba futhi izandla zakho ziyaluma!

Ezihlokweni ezedlule, sibhekane nobuchwepheshe okwakhiwa kubo ama-blockchains (Yini okufanele sakhe i-blockchain?) kanye namacala angenziwa ngosizo lwabo (Kungani kufanele sakhe icala?). 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?

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

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:

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

Inguqulo esemthethweni yalokho okuyi-Hyperledger Fabric ingafundwa kuyo isayithi, 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:

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

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 inhlebo protocol.
  • 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 Umthengisi womlayezo we-Kafka, ukuze kuthuthukiswe futhi kuhlolwe Solo.

CallFlow

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

  • 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 I-BFT yakudala 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 (bona isigaba "Izimfoloko");
  • 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: I-Architecture Origins noma lapha: Indwangu ye-Hyperledger: Isistimu Yokusebenza Esabalalisiwe yama-Blockchains avunyelwe.

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:

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

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- Ifu le-IBM. 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:

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

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

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

Sakha abasebenzisi:

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

Dala Isiteshi futhi usibize nge-citcoin:

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

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

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

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:

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

Ake sibheke okwenziwayo kokufaka Inkontileka Ehlakaniphile:

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

Ake sibheke imininingwane ngesiteshi sethu:

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

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):

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

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: Uhlelo Lokusebenza Lwewebhu Lwesitaki Olugcwele lisebenzisa i-Vue.js & Express.js. 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 Iwebhusayithi ye-Postman - 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: www.citcoin.info. 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:

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

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

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

Sithola uhlu lwawo wonke ama-akhawunti atholakalayo:

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

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

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

Kulogi siqapha ukwenziwa kwemisebenzi:

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

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

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

Futhi uhlu olujwayelekile lwemisebenzi:

I-Blockchain: iyiphi i-PoC okufanele siyakhe?

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 - awukwazi ukuphila emhlabeni wanamuhla ngaphandle kolwazi lwe-Linux!)

Yiqiniso, akuyona isayensi ye-rocket, kodwa kuzodingeka usebenze kanzima!

Imithombo ku-GitHub

Imithombo ifakiwe GitHub. 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

Engeza amazwana