I-Blockchain: kufuneka sakhe ntoni i-PoC?

Amehlo ayankwantya, nezandla zirhawuzelelwa!

Kumanqaku angaphambili, sijonge itekhnoloji apho i-blockchains yakhiwe khona (Yintoni ekufuneka sakhe i-blockchain?) kunye neemeko ezinokuphunyezwa ngoncedo lwabo (Kubiza malini ukwakha ityala?). Lixesha lokuba usebenze ngezandla zakho! Ukuphunyezwa kwabaqhubi beenqwelo-moya kunye ne-PoC (Ubungqina beNgcaciso), ndikhetha ukusebenzisa amafu, kuba. banokufikelela naphi na emhlabeni kwaye, rhoqo, akukho mfuneko yokuchitha ixesha ekufakeni okudinayo kokusingqongileyo, kuba. Kukho ulungelelwaniso olusetwe kwangaphambili. Ke, masenze into elula, njengenethiwekhi yokudlulisa iingqekembe phakathi kwabathathi-nxaxheba kwaye siyibize ngokuthozama iCitcoin. Ukwenza oku, siya kusebenzisa ifu ye-IBM kunye ne-Hyperledger Fabric blockchain jikelele. Okokuqala, makhe sibone ukuba kutheni i-Hyperledger Fabric ibizwa ngokuba yi-blockchain yendawo yonke?

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Ilaphu leHyperledger - Universal Blockchain

Ngokubanzi, inkqubo yolwazi jikelele yile:

  • Iseti yeeseva kunye nesiseko sesoftware esenza ingqiqo yeshishini;
  • Ukusebenzelana nenkqubo;
  • Iindlela zokubhaliswa, ukuqinisekiswa kunye nokugunyaziswa kwezixhobo / abantu;
  • Uvimba wedatha osebenzayo kunye noovimba:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Inguqulelo esemthethweni ye-Hyperledger Fabric inokufundwa kuyo indawo, kwaye ngokufutshane, i-Hyperledger Fabric yi-platform yomthombo ovulekileyo evumela ukuba wakhe i-blockchains yangasese kwaye wenze iikontrakthi ezihlakaniphile ezibhalwe kwiilwimi zeprogram ye-JS kunye ne-Go. Makhe sihlolisise i-architecture ye-Hyperledger Fabric kwaye siqinisekise ukuba le yinkqubo yendalo yonke eneenkcukacha kuphela yokugcina nokurekhoda idatha. Ubuchwephesha buxhomekeke kwinto yokuba idatha, njengakuzo zonke iibhloko, igcinwe kwiibhloko ezibekwe kwi-blockchain kuphela ukuba abathathi-nxaxheba baye bafikelela kwisivumelwano kwaye emva kokurekhoda, idatha ayikwazi ukulungiswa ngokuthula okanye ukucima.

Hyperledger Fabric Architecture

Umzobo ubonisa i-Hyperledger Fabric architecture:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Imibutho - imibutho iqulethe oontanga, ngoko i-blockchain ikhona ngenxa yenkxaso yemibutho. Imibutho eyahlukeneyo inokuba yinxalenye yejelo elinye.

ijelo - isakhiwo esinengqiqo esidibanisa oontanga kumaqela, ngoko. i-blockchain iseti. I-Hyperledger Fabric inokusebenza ngaxeshanye iibhloko ezininzi ezinengqiqo yezoshishino ezahlukeneyo.

Umboneleli weeNkonzo zobulungu (MSP) yi-CA (uGunyaziwe weSatifikethi) sokukhupha isazisi kunye nokwabela iindima. Ukwenza i-node, kufuneka udibane ne-MSP.

Iinodi zoontanga - qinisekisa ukuthengiselana, gcina i-blockchain, yenza izivumelwano ezihlakaniphile kunye nokusebenzisana nezicelo. Oontanga banesazisi (isiqinisekiso sedijithali) esikhutshwe yi-MSP. Ngokungafaniyo nenethiwekhi ye-Bitcoin okanye ye-Etherium, apho zonke iindawo zilingana, ii-node zidlala indima eyahlukileyo kwi-Hyperledger Fabric:

  • Oontanga banokuba njalo ukuxhasa intanga (EP) kunye nokwenza izivumelwano ezihlakaniphile.
  • Oontanga abazinikeleyo (CP) - kuphela gcina idatha kwi-blockchain kwaye uhlaziye "ilizwe lehlabathi".
  • Ankile Ntanga (AP) - ukuba imibutho emininzi ithatha inxaxheba kwi-blockchain, ke oontanga be-anchor basetyenziselwa ukunxibelelana phakathi kwabo. Umbutho ngamnye kufuneka ube nentanga enye okanye ngaphezulu. Ngoncedo lwe-AP, nayiphi na intanga kwintlangano inokufumana ulwazi malunga nabo bonke oontanga kweminye imibutho. Isetyenziselwa ukulungelelanisa ulwazi phakathi kwe-APs. iprotocol yokuhleba.
  • INkokheli yoNtanga - ukuba umbutho unabalingane abaninzi, ngoko kuphela inkokeli yontanga iya kufumana iibhloko kwinkonzo yokuLawula kwaye ibanike abanye oontanga. Inkokeli inokumiselwa ngokwesigxina okanye ngokuguquguqukayo okhethwe ngoontanga kumbutho. I-protocol yokuhleba ikwasetyenziselwa ukuvumelanisa ulwazi lwenkokeli.

impahla - amaziko exabiso agcinwe kwi-blockchain. Ngokukodwa ngakumbi, le yidatha yexabiso elingundoqo kwifomathi ye-JSON. Yile datha ebhalwe kwi-blockchain blockchain. Banembali egcinwe kwi-blockchain kunye nemeko yangoku egcinwe kwi-database "yelizwe lehlabathi". Ulwakhiwo lwedatha luzaliswa ngaphandle kwesizathu ngokuxhomekeke kwimisebenzi yeshishini. Akukho mimandla ifunekayo, ekuphela kwengcebiso kukuba ii-asethi kufuneka zibe nomnini kwaye zibe nexabiso.

Ledger - iquka iBlockchain blockchain kunye ne-Word state database, egcina imeko yangoku ye-asethi. Urhulumente wehlabathi usebenzisa i-LevelDB okanye iCouchDB.

Isivumelwano esifanelekileyo - ngoncedo lweekontraki ezihlakaniphile, ingqiqo yezoshishino yenkqubo iphunyeziwe. Kwi-Hyperledger Fabric, izivumelwano ezihlakaniphile zibizwa ngokuba yi-chaincode. Ngoncedo lwe-chaincode, ii-asethi kunye neentengiselwano phezu kwazo zichaziwe. Ngokwemigaqo yobugcisa, iikhontrakthi ezihlakaniphile ziimodyuli zesoftware eziphunyezwe kwi-JS okanye kwiilwimi zokuprograma zeGo.

Umgaqo-nkqubo wokuqinisekisa - kwi-chaincode nganye, unokuseta imigaqo-nkqubo malunga nokuba bangaphi kwaye ngubani omele ulindele ukuqinisekiswa kwentengiselwano. Ukuba umgaqo-nkqubo awumiselwanga, ngoko ukungagqibeki kukuba: "intengiselwano kufuneka iqinisekiswe lilo naliphi na ilungu lalo naluphi na umbutho kwitshaneli". Imizekelo yepolisi:

  • Intengiselwano kufuneka iqinisekiswe nguye nawuphi na umlawuli wombutho;
  • Kufuneka kuqinisekiswe naliphi na ilungu okanye umxhasi wombutho;
  • Kufuneka uqinisekise nayiphi na intanga yombutho.

Inkonzo yokuodola - upakisha utshintshiselwano kwiibhloko kwaye uzithumele kubalingane kwitshaneli. Iqinisekisa ukuhanjiswa komyalezo kubo bonke abalingane kwinethiwekhi. Isetyenziselwa iinkqubo zoshishino Kafka umyalezo broker, kuphuhliso kunye novavanyo Solo.

ukufowuna

I-Blockchain: kufuneka sakhe ntoni i-PoC?

  • Isicelo sisebenzisana ne-Hyperledger Fabric usebenzisa i-Go, i-Node.js okanye i-Java SDK;
  • Umxhasi wenza i-tx yentengiselwano kwaye uyithumele kubalingane abavumayo;
  • Umlingane uqinisekisa utyikityo lomxhasi, ugqibezela intengiselwano, kwaye uthumela utyikityo lokuvuma kumthengi. I-Chaincode iqhutyelwa kuphela kwintanga evumayo, kwaye umphumo wokuphunyezwa kwayo uthunyelwa kubo bonke oontanga. I-algorithm enjalo yomsebenzi ibizwa ngokuba yi-PBFT (Practical Byzantine Fault Tolerant) imvumelwano. Iyahluka kwi BFT yakudala into yokuba umyalezo uthunyelwe kwaye ukuqinisekiswa akulindelwe kubo bonke abathathi-nxaxheba, kodwa kuphela kwisethi ethile;
  • Emva kokuba umxhasi efumene inani leempendulo ezihambelana nomgaqo-nkqubo wokuqinisekisa, ithumela ukuthengiselana kwinkonzo yokuLawula;
  • Inkonzo yokuodola yenza ibhloko kwaye iyithumele kubo bonke oontanga abazibophelelayo. Inkonzo yoku-odola iqinisekisa ukuba iibhloko zibhalwa ngokulandelelanayo, nto leyo ephelisa into ebizwa ngokuba yi-ledger fork (bona icandelo "Iifolokhwe");
  • Oontanga bafumana ibhloko, khangela umgaqo-nkqubo wokuqinisekisa kwakhona, bhala ibhloko kwi-blockchain, kwaye utshintshe urhulumente "kwilizwe lehlabathi" DB.

Ezo. kuvela ulwahlulo lweendima phakathi kweendawo zokuhlala. Oku kuqinisekisa ubungakanani kunye nokhuseleko lwe-blockchain:

  • Iikhontrakthi ze-Smart (chaincode) zenza abalingane abavumayo. Oku kuqinisekisa ubumfihlo beekontraki ezihlakaniphile, njengoko ayigcinwanga ngabo bonke abathathi-nxaxheba, kodwa ngokuvuma oontangandini.
  • Ukuodola kufuneka kusebenze ngokukhawuleza. Oku kuqinisekiswa yinto yokuba i-Ordering ifom kuphela ibhloko kwaye iyithumele kwisethi esisigxina yabalingane abakhokelayo.
  • Oontanga abazibophelelayo bagcina kuphela i-blockchain-inokuba zininzi kwaye ayifuni amandla amaninzi kunye nomsebenzi okhawulezileyo.

Izisombululo ezongezelelekileyo ze-Hyperledger Fabric kwaye kutheni zisebenza ngale ndlela kwaye azinakufumaneka apha: Imvelaphi ye-Architecture okanye apha: I-Hyperledger Fabric: I-Distributed Operating System kwii-Blockchains ezivunyelweyo.

Ke, i-Hyperledger Fabric yinkqubo yendalo yonke onokuthi ngayo:

  • Ukuphumeza ingqiqo yoshishino ngokusetyenziswa kobuchule bekhontrakthi;
  • Bhala kwaye ufumane idatha kwi-database ye-blockchain kwifomathi ye-JSON;
  • Nika kwaye uqinisekise ukufikelela kwe-API usebenzisa iSiqinisekiso seSiqinisekiso.

Ngoku ekubeni sinento encinci ye-Hyperledger Fabric ecacileyo ngaphandle kwendlela, masenze into eluncedo ekugqibeleni!

Ukusasaza i-blockchain

Џџ Ρ•Πƒ Β° Β°

Umsebenzi kukuphumeza inethiwekhi yeCitcoin kunye nale misebenzi ilandelayo: yenza i-akhawunti, ufumane ibhalansi, uzalise i-akhawunti, udlulise iingqekembe zemali ukusuka kwelinye ukuya kwelinye. Masizobe imodeli yento, esiya kuthi siyiphumeze ngakumbi kwikhontrakthi ehlakaniphile. Ngoko, siya kuba neeakhawunti ezichongiweyo ngamagama (igama) kwaye ziqulethe ibhalansi (ibhalansi), kunye noluhlu lwee-akhawunti. Iiakhawunti kunye noluhlu lwee-akhawunti zihambelana nempahla ye-Hyperledger Fabric. Ngokufanelekileyo, banembali kunye nemeko yangoku. Ndiza kuzama ukuyizoba ngokubonakalayo:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Amanani aphezulu yimeko yangoku, egcinwe kwi-database "yelizwe lehlabathi". Ngezantsi kwabo kukho amanani abonisa imbali egcinwe kwi-blockchain. Imeko yangoku ye-asethi iguqulwa yintengiselwano. I-asethi itshintsha kuphela ngokupheleleyo, ngoko ngenxa yentengiselwano, into entsha yenziwe, kwaye ixabiso langoku le-asethi liya kwimbali.

I-IBM Cloud

Senza iakhawunti kwi Ilifu le-IBM. Ukusebenzisa iqonga le-blockchain, kufuneka liphuculwe kwi-Pay-As-You-Go. Le nkqubo isenokungakhawulezi, kuba I-IBM icela ulwazi olongezelelweyo kwaye iyiqinisekise ngesandla. Kwicala elihle, ndinokuthi i-IBM inezixhobo ezifanelekileyo zokuqeqesha ezikuvumela ukuba usebenzise i-Hyperledger Fabric kwifu labo. Ndiluthandile olu ngcelele lwamanqaku kunye nemizekelo:

Ezi zilandelayo zi-screenshots zeqonga le-IBM Blockchain. Lo ayisiwo umyalelo wokudala ibhloko, kodwa kukubonisa nje ububanzi bomsebenzi. Ke, ngeenjongo zethu, senza uMbutho omnye:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Senza ii-node kuyo: I-Order CA, i-Org1 CA, iNtanga ye-Order:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Siqala abasebenzisi:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Yenza iChannel kwaye uyibize i-citcoin:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Ngokwenyani, iChaneli yibhloko, ke iqala kwibhloko engu-zero (ibhloko yeGenesis):

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Ukubhala ikhontrakthi 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, yonke into kufuneka icace apha:

  • Kukho imisebenzi emininzi (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) ukuba inkqubo yedemo iya kubiza usebenzisa i-Hyperledger Fabric API.
  • Imisebenzi ye-SendFrom kunye ne-RefillBalance ivelisa imisitho (Isigigaba) eya kufunyanwa yinkqubo yedemo.
  • Umsebenzi we-instantiate ubizwa kanye xa ikhontrakthi ye-smart iqalisiwe. Enyanisweni, kubizwa ngokuba kungekhona kanye, kodwa rhoqo xa utshintsho lwekhontrakthi ehlakaniphile. Ke ngoko, ukuqalisa uluhlu ngoluhlu olungenanto luluvo olubi, kuba ngoku xa utshintsha uguqulelo lwekhontrakthi ehlakaniphile, siya kuphulukana noluhlu lwangoku. Kodwa akukho nto, ndifunda nje).
  • Iiakhawunti kunye noluhlu lwee-akhawunti (ii-akhawunti) zizakhiwo zedatha ye-JSON. I-JS isetyenziselwa ukukhohlisa idatha.
  • Ungafumana ixabiso langoku le-asethi ngokufowunela umsebenzi we-getState, kwaye uyihlaziye nge-putState.
  • Xa udala i-Akhawunti, umsebenzi we-AddAccount ubizwa, apho uthelekiso lwenziwa kwinani eliphezulu le-akhawunti kwi-blockchain (maxAccounts = 5). Kwaye kukho i-jamb (iphawulwe?), Okukhokelela ekunyukeni okungapheliyo kwinani le-akhawunti. Iimpazamo ezinje maziphetshwe

Okulandelayo, silayisha ikhontrakthi ehlakaniphile kwiSiteshi kwaye siyifake:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Sijonge kwintengiselwano yokufaka iSivumelwano se-Smart:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Bona iinkcukacha malunga nejelo lethu:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Ngenxa yoko, sifumana isikimu esilandelayo senethiwekhi ye-blockchain kwifu le-IBM. Kwakhona kumzobo kukho inkqubo yedemo esebenza kwifu laseAmazon kwiseva ebonakalayo (iinkcukacha malunga nayo ziya kuba kwicandelo elilandelayo):

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Ukudala i-GUI yeeFowuni ze-Hyperledger Fabric API

I-Hyperledger Fabric ine-API enokusetyenziswa uku:

  • Yenza isitishi;
  • Ukudityaniswa koontanga kumjelo;
  • Ukufakwa kunye nokufakwa kwezivumelwano ezihlakaniphile kwijelo;
  • Ukubiza iitransekshini;
  • Cela ulwazi kwi-blockchain.

Uphuhliso lwesicelo

Kwinkqubo yethu yedemo, siya kusebenzisa i-API kuphela ukubiza ukuthengiselana kunye nokucela ulwazi, kuba. sele senze amanye amanyathelo usebenzisa i-IBM blockchain platform. Sibhala i-GUI sisebenzisa istaki sobuchwepheshe esiqhelekileyo: Express.js + Vue.js + Node.js. Ungabhala inqaku elahlukileyo malunga nendlela yokuqalisa ukwenza usetyenziso lwewebhu lwangoku. Apha ndiza kushiya ikhonkco kuthotho lweentetho endizithande kakhulu: I-App yeWebhu egcweleyo esebenzisa i-Vue.js & Express.js. Isiphumo sisicelo somncedisi womthengi esinojongano oluqhelekileyo lomzobo kwisitayile soYilo lweMaterial lukaGoogle. I-REST API phakathi komxhasi kunye neseva iqulathe iifowuni ezininzi:

  • I-HyperledgerDemo/v1/init - qalisa i-blockchain;
  • I-HyperledgerDemo/v1/iakhawunti/uluhlu - fumana uluhlu lwazo zonke iiakhawunti;
  • HyperledgerDemo/v1/account?name=Bob&balance=100 - yenza iakhawunti kaBob;
  • HyperledgerDemo/v1/info?account=Bob - fumana ulwazi malunga ne-akhawunti kaBob;
  • HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 - tshintshela iinkozo ezimbini ukusuka kuBob ukuya kuAlice;
  • I-HyperledgerDemo/v1/disconnect - vala uxhulumaniso kwi-blockchain.

Inkcazo ye-API enemizekelo ebekiweyo Iwebhusayithi yePostman yinkqubo eyaziwayo yokuvavanya i-HTTP API.

Isicelo sedemo kwilifu leAmazon

Isicelo silayishwe kwi-Amazon, kuba I-IBM ayikakwazi ukuphucula iakhawunti yam kwaye indivumele ukuba ndenze iiseva zenyani. Indlela idomeyini encanyathiselwe ngayo kwicheri: www.citcoin.info. Ndiza kugcina iseva ivuliwe kancinci, emva koko ndiyicime, kuba iisenti zokurenta ziyavuza, kwaye iingqekembe ze-citcoin azikabhalwa kutshintshiselwano) Ndibeka imifanekiso-skrini yedemo kwinqaku ukuze ingqiqo yomsebenzi icace. Isicelo sedemo sinoku:

  • Ukuqalisa i-blockchain;
  • Yenza i-Akhawunti (kodwa ngoku i-Akhawunti entsha ayinakwenziwa, kuba inani eliphezulu lee-akhawunti ezichazwe kwikhontrakthi ehlakaniphile ifikeleleke kwi-blockchain);
  • Fumana uluhlu lweeAkhawunti;
  • Ukutshintshela imali ye-citcoin phakathi kuka-Alice, uBob no-Alex;
  • Fumana iziganeko (kodwa ngoku akukho ndlela yokubonisa iziganeko, ukuze kube lula kubhaliwe kwi-interface ukuba iziganeko azixhaswanga);
  • Iintshukumo zelogi.

Okokuqala, siqala i-blockchain:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Okulandelayo, siqala iakhawunti yethu, musa ukuhlekisa ngebhalansi:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Sifumana uluhlu lwazo zonke iiakhawunti ezikhoyo:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Sikhetha umthumeli kunye nommkeli, sifumana ibhalansi yabo. Ukuba umthumeli kunye nomamkeli bayafana, iakhawunti yakhe iya kuzaliswa:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Kwilog, sibeka iliso ekuqhutyweni kwentengiselwano:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Ngokwenyani, ngenkqubo yedemo, kuphelele apho. Okulandelayo, unokuyibona intengiselwano yethu kwi-blockchain:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Kwaye uluhlu ngokubanzi lwentengiselwano:

I-Blockchain: kufuneka sakhe ntoni i-PoC?

Ngale nto, sigqibe ngempumelelo ukuphunyezwa kwePoC ukudala inethiwekhi yeCitcoin. Yintoni enye ekufuneka yenziwe ukwenza i-Citcoin ibe yinethiwekhi epheleleyo yokudlulisela ingqekembe? Ncnci kakhulu:

  • Kwinqanaba lokudala iakhawunti, phumeza ukuveliswa kwesitshixo sabucala / sikawonke-wonke. Isitshixo sabucala kufuneka sigcinwe yiakhawunti yomsebenzisi, eluluntu kwi-blockchain.
  • Yenza ukutshintshwa kweengqekembe, apho ingekho igama, kodwa isitshixo sikawonke-wonke sisetyenziselwa ukuchonga umsebenzisi.
  • Uguqulelo oluntsonkothileyo olusuka kumsebenzisi lusiya kumncedisi ngeqhosha lakhe labucala.

isiphelo

Siphumeze inethiwekhi yeCitcoin kunye nale misebenzi ilandelayo: yongeza i-akhawunti, fumana ibhalansi, uzalise i-akhawunti yakho, udlulise iingqekembe zemali ukusuka kwelinye ukuya kwelinye. Ke kwasixabisa ntoni ukwakha iPoC?

  • Kuyimfuneko ukufunda i-blockchain ngokubanzi kunye ne-Hyperledger Fabric ngokukodwa;
  • Funda indlela yokusebenzisa i-IBM okanye amafu e-Amazon;
  • Funda ulwimi lweprogram ye-JS kunye nesakhelo sewebhu;
  • Ukuba idatha ethile idinga ukugcinwa kungekhona kwi-blockchain, kodwa kwi-database eyahlukileyo, ngoko ufunde indlela yokudibanisa, umzekelo, kunye ne-PostgreSQL;
  • Kwaye okokugqibela kodwa okungancinci - ngaphandle kolwazi lweLinux kwihlabathi lanamhlanje, akukho ndawo!)

Ewe, hayi isayensi yerokhethi, kodwa kufuneka ubile!

Imithombo kwiGitHub

Imithombo ibekwe GitHub. Inkcazo emfutshane yendawo yokugcina:
Ikhathalogu Β«MncedisiΒ»- iseva yeNode.js
Ikhathalogu Β«UmxhasiΒ»- umxhasi weNode.js
Ikhathalogu Β«blockchainΒ» (amaxabiso eparameters kunye nezitshixo, ewe, ayisebenzi kwaye inikwa umzekelo kuphela):

  • isivumelwano - umthombo wekhontrakthi ehlakaniphile
  • isipaji - izitshixo umsebenzisi ngokusebenzisa Hyperledger Fabric API.
  • * .cds - iinguqulelo eziqokelelweyo zeekontraki ezihlakaniphile
  • * .json iifayile - imizekelo yeefayile zokucwangcisa ukusetyenziswa kwe-Hyperledger Fabric API

Sisiqalo nje!

umthombo: www.habr.com

Yongeza izimvo