Blockchain: chii PoC chatinofanira kuvaka?

Meso ako ari kutya uye maoko ako ari kuvava!

Muzvinyorwa zvakapfuura, takabata matekinoroji pakavakirwa blockchains (Chii chatinofanira kuvaka blockchain?) uye zviitiko zvinogona kuitwa nerubatsiro rwavo (Sei tichifanira kugadzira nyaya?) Inguva yekushanda nemaoko ako! Kuita vatyairi uye PoC (Chiratidzo chePfungwa), ini ndinosarudza kushandisa makore, nekuti... vanogona kuwanikwa kubva chero kupi zvako pasirese uye, kazhinji, hapana chikonzero chekutambisa nguva pakutemesa kuisa nharaunda, nekuti. Pane preset zvigadziriso. Saka, ngatiite chimwe chinhu chakareruka, semuenzaniso, network yekuendesa mari pakati pevatori vechikamu uye ngatiidze zvine mwero kuti Bitcoin. Kune izvi isu tichashandisa iyo IBM gore uye universal blockchain Hyperledger Fabric. Kutanga, ngatione kuti nei Hyperledger Fabric ichinzi universal blockchain?

Blockchain: chii PoC chatinofanira kuvaka?

Hyperledger Fabric - universal blockchain

Kazhinji kutaura, a universal information system ndeiyi:

  • Seti yemaseva uye software musimboti inoita bhizinesi logic;
  • Interfaces yekudyidzana nehurongwa;
  • Zvishandiso zvekunyoresa, kutendeseka uye mvumo yemidziyo / vanhu;
  • Dhatabhesi inochengeta data rekushanda uye rekuchengetedza:

Blockchain: chii PoC chatinofanira kuvaka?

Iyo yepamutemo vhezheni yeiyo Hyperledger Fabric inogona kuverengerwa pa site, uye muchidimbu, Hyperledger Fabric ipuratifomu yakavhurika iyo inokutendera iwe kuvaka yakavanzika blockchains uye kuita zvehungwaru zvibvumirano zvakanyorwa muJS uye Go programming mitauro. Ngatitarisei zvakadzama pakuvakwa kweHyperledger Fabric uye ita shuwa kuti iyi inzira yepasirese inongove neruzivo rwekuchengetedza uye kurekodha data. Izvo chaizvo ndezvekuti iyo data, senge mune ese blockchains, inochengetwa mumabhuroki anoiswa pa blockchain chete kana vatori vechikamu vasvika pakubvumirana uye mushure mekurekodha iyo data haigone kugadziriswa chinyararire kana kubviswa.

Hyperledger Fabric Architecture

Dhiagiramu inoratidza iyo Hyperledger Fabric architecture:

Blockchain: chii PoC chatinofanira kuvaka?

Misangano - masangano ane vezera, i.e. blockchain iripo nekuda kwekutsigirwa kwemasangano. Masangano akasiyana anogona kuve chikamu chegwara rimwe chete.

mugero - chimiro chinonzwisisika chinobatanidza vezera mumapoka, i.e. iyo blockchain inotsanangurwa. Hyperledger Fabric inogona panguva imwe chete kugadzirisa akawanda blockchains ane akasiyana bhizinesi logic.

Nhengo dzeSevhisi Vanopa (MSP) iCA (Chiremera Chiremera) chekupa chitupa uye kugovera mabasa. Kuti ugadzire node, unofanirwa kutaurirana neMSP.

Peer nodes - simbisa kutengeserana, chengetedza blockchain, ita zvibvumirano zvakangwara uye pindirana nemaapplication. Vezera ravo vane chitupa (digital certificate), chinopihwa neMSP. Kusiyana neBitcoin kana Etherium network, uko node dzese dzine kodzero dzakaenzana, muHyperledger Fabric node dzinotamba mabasa akasiyana:

  • Peer pamwe kutsigira shamwari (EP) uye ita zvibvumirano zvakangwara.
  • Kuzvipira vezera (CP) - chengetedza chete data mu blockchain uye gadzirisa iyo "Nyika yenyika".
  • Anchor Peer (AP) - kana masangano akati wandei akatora chikamu mu blockchain, ipapo anchor vezera rinoshandiswa kutaurirana pakati pavo. Sangano rega rega rinofanirwa kunge riine mumwe kana anopfuura anchor vezera. Uchishandisa AP, chero vezera musangano vanogona kuwana ruzivo nezve vese vezera mune mamwe masangano. Inoshandiswa kuwiriranisa ruzivo pakati peAPs makuhwa protocol.
  • Mutungamiriri Peer - kana sangano riine vezera rakati wandei, saka mutungamiri wezera chete ndiye achagamuchira mabhuroko kubva kuKurongedzera sevhisi uye agovapa kune vamwe vese vezera. Mutungamiri anogona kutsanangurwa zvakamira kana kusarudzwa zvine simba nevezera rake musangano. Iyo gossip protocol inoshandiswawo kuwiriranisa ruzivo nezvevatungamiriri.

midziyo - masangano ane kukosha uye akachengetwa pa blockchain. Kunyanya zvakanyanya, iyi kiyi-yakakosha data muJSON fomati. Ndiyo data iyi yakanyorwa muBlockchain. Vane nhoroondo, iyo inochengetwa mu blockchain, uye ikozvino mamiriro, iyo inochengetwa mu "World state" database. Data zvimiro zvinozadzwa zvisina tsarukano zvichienderana nemabasa ebhizinesi. Iko hakuna minda inodiwa, kurudziro chete ndeyekuti midziyo inofanirwa kuve nemuridzi uye yakakosha.

Ledger -Inosanganisira iyo Blockchain uye iyo Word state dhatabhesi, iyo inochengeta iyo iripo mamiriro ezvinhu. Nyika yenyika inoshandisa LevelDB kana CouchDB.

Chibvumirano chakangwara - Uchishandisa smart zvibvumirano, iyo bhizinesi logic yehurongwa inoitwa. MuHyperledger Fabric, zvibvumirano zvakangwara zvinonzi chaincode. Kushandisa chaincode, zvinhu uye kutengeserana pamusoro pazvo zvinotsanangurwa. Mukutaura kwehunyanzvi, zvibvumirano zvakangwara isoftware modules inoshandiswa muJS kana Go programming mitauro.

Endorsement policy - yechaincode yega yega, unogona kuseta mutemo wekuti mangani ekusimbisa kwekutengeserana kunofanirwa kutarisirwa uye kubva kunaani. Kana mutemo usina kugadzwa, zvino zvazvinoita ndezvekuti: "kutengeserana kunofanirwa kusimbiswa nechero nhengo yechero sangano muchiteshi." Mienzaniso yemitemo:

  • Kudyidzana kunofanirwa kubvumidzwa nechero maneja wesangano;
  • Inofanirwa kusimbiswa nechero nhengo kana mutengi wesangano;
  • Inofanirwa kusimbiswa nechero sangano revezera.

Kuhodha sevhisi - inorongedza kutengeserana mumabhuroko uye inotumira kune vezera muchiteshi. Inovimbisa kutumirwa kwemeseji kune vese vezera pane network. Inoshandiswa kumaindasitiri masisitimu Kafka message broker, yekuvandudza uye kuongororwa Solo.

CallFlow

Blockchain: chii PoC chatinofanira kuvaka?

  • Chishandiso chinotaurirana neHyperledger Fabric uchishandisa Go, Node.js kana Java SDK;
  • Mutengi anogadzira tx transaction uye anoitumira kune vanobvumira vezera;
  • Iyo Peer inosimbisa siginicha yemutengi, inopedza kutengeserana, uye inotumira siginecha yekubvumidza kudzosera kumutengi. Chaincode inourayiwa chete kune vezera rinotsigira, uye mhedzisiro yekuitwa kwayo inotumirwa kune vese vezera. Iyi algorithm yebasa inonzi PBFT (Practical Byzantine Fault Tolerant) kubvumirana. Yakasiyana ne classic BFT chokwadi chekuti meseji inotumirwa uye kusimbiswa kunotarisirwa kwete kubva kune vese vatori vechikamu, asi chete kubva kune imwe seti;
  • Mushure mekunge mutengi agamuchira nhamba yemhinduro dzinoenderana nemutemo wekusimbisa, anotumira kutengeserana kuKuraira sevhisi;
  • Iyo Kuodha sevhisi inogadzira block uye inotumira kune vese vanoita vezera. Kuodha sevhisi inovimbisa kuteedzana kurekodha kwezvivharo, izvo zvinobvisa iyo inonzi ledger fork (ona chikamu "Forks");
  • Vezera vanogashira block, tarisa iyo endorsement policy zvakare, nyora iyo block ku blockchain uye shandura iyo nyika mu "World state" DB.

Avo. Izvi zvinoguma nekuparadzaniswa kwemabasa pakati pemanodhi. Izvi zvinoita kuti blockchain iwedzere uye yakachengeteka:

  • Zvibvumirano zveSmart (chaincode) zvinoita kutsigira vezera. Izvi zvinovimbisa kuvanzika kwezvibvumirano zvakangwara, nekuti haina kuchengetwa nevose vatori vechikamu, asi chete nekutsigira vezera.
  • Kuraira kunofanira kushanda nekukurumidza. Izvi zvinosimbiswa nenyaya yekuti Kurongeka kunongoumba bhuroka uye kunotumira kune yakagadziriswa seti yevatungamiri vezera.
  • Kuzvipira vezera kunongochengeta blockchain - panogona kunge paine akawanda acho uye haadi simba rakawanda uye kushanda ipapo.

Mamwe mashoko pamusoro pezvigadziriso zveHyperledger Fabric uye nei ichishanda nenzira iyi uye kwete neimwe nzira inogona kuwanikwa pano: Architecture Origins kana pano: Hyperledger Fabric: Yakagoverwa Operating System yeBlockchains Inobvumirwa.

Saka, Hyperledger Fabric ndeyechokwadi yepasirese system yaunogona nayo:

  • Ita zvisina tsarukano bhizinesi logic uchishandisa smart contract mechanism;
  • Rekodha uye ugamuchire data kubva kune blockchain database muJSON fomati;
  • Ipa uye simbisa kuwanikwa kweAPI uchishandisa Chiremera Chiremera.

Iye zvino zvatiri kunzwisisa zvishoma nezve izvo chaizvo zveHyperledger Fabric, ngatiite chimwe chinhu chinobatsira!

Kutumira blockchain

Kugadzirwa kwedambudziko

Basa nderekushandisa iyo Citcoin network neanotevera mabasa: gadzira account, tora chiyero, wedzera account yako, kuendesa mari kubva kune imwe account kuenda kune imwe. Ngatidhirowei modhi yechinhu, yatichazowedzera kuita muchibvumirano chakangwara. Saka, isu tichava nemaakaundi anozivikanwa nemazita uye ane chiyero, uye rondedzero yemaakaundi. Maakaunti uye rondedzero yeakaunti, maererano neHyperledger Fabric assets. Naizvozvo, vane nhoroondo uye mamiriro azvino. Ndichaedza kudhirowa izvi zvakajeka:

Blockchain: chii PoC chatinofanira kuvaka?

Nhamba dzepamusoro ihurumende iripo, iyo inochengetwa mu "World state" database. Pazasi pavo pane manhamba anoratidza nhoroondo iyo yakachengetwa mu blockchain. Mamiriro ezvinhu aripo iye zvino anochinjwa nekutengeserana. Iyo Asset inoshanduka chete seyakazara, saka semugumisiro wekutengesa, chinhu chitsva chinogadzirwa, uye kukosha kwezvino kweasset kunopinda munhoroondo.

IBM Cloud

Isu tinogadzira account mukati IBM gore. Kuti ushandise blockchain papuratifomu, inofanirwa kukwidziridzwa kuPay-As-You-Go. Iyi nzira inogona kunge isiri kukurumidza, nekuti ... IBM inokumbira rumwe ruzivo uye inoisimbisa pamaoko. Pamusoro pezvakanaka, ndinogona kutaura kuti IBM ine zvinhu zvakanaka zvekudzidzisa zvinokutendera kuti uise Hyperledger Fabric mugore ravo. Ndakafarira zvinotevera nhevedzano yezvinyorwa uye mienzaniso:

Izvi zvinotevera zviratidziro zve IBM Blockchain papuratifomu. Uyu hausi murairo wekuti ungagadzira sei blockchain, asi kungoratidza chiyero chebasa racho. Saka, nekuda kwezvinangwa zvedu, tinoita Sangano rimwechete:

Blockchain: chii PoC chatinofanira kuvaka?

Isu tinogadzira node mairi: Orderer CA, Org1 CA, Orderer Peer:

Blockchain: chii PoC chatinofanira kuvaka?

Isu tinogadzira vashandisi:

Blockchain: chii PoC chatinofanira kuvaka?

Gadzira Chiteshi uye woidaidza kuti citcoin:

Blockchain: chii PoC chatinofanira kuvaka?

Chaizvoizvo Channel i blockchain, saka inotanga ne block zero (Genesis block):

Blockchain: chii PoC chatinofanira kuvaka?

Kunyora A Smart Contract

/*
 * 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;

Intuitively, zvese zvinofanirwa kujeka pano:

  • Kune akati wandei mabasa (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) ayo chirongwa chedemo chichadaidza uchishandisa Hyperledger Fabric API.
  • Iyo SendFrom uye RefillBalance mabasa anoburitsa Zviitiko izvo chirongwa chedemo chinogashira.
  • Iyo instantiate function inodaidzwa kamwe chete kana kontrakiti yakangwara yaiswa. Muchokwadi, inodanwa kwete kamwe chete, asi nguva dzese iyo smart contract vhezheni inoshanduka. Naizvozvo, kutanga rondedzero ine isina chinhu array ipfungwa yakaipa, nekuti Zvino, kana isu tashandura vhezheni yekontrakiti yakangwara, isu tinorasikirwa nerondedzero iripo. Asi zvakanaka, ndiri kungodzidza).
  • Maakaunti uye rondedzero yeakaunti JSON data zvimiro. JS inoshandiswa kugadzirisa data.
  • Iwe unogona kuwana kukosha kwazvino kweasset uchishandisa iyo getState function call, uye kuigadzirisa uchishandisa putState.
  • Paunenge uchigadzira Akaundi, iyo AddAccount basa inodanwa, umo kuenzanisa kunoitwa kwehuwandu hwehuwandu hweakaundi mu blockchain (maxAccounts = 5). Uye pano pane jamb (wacherechedza here?), iyo inotungamirira kukuwedzera kusingagumi kwenhamba yeakaunti. Kukanganisa kwakadaro kunofanira kudzivirirwa)

Tevere, tinorodha kondirakiti yakangwara muChannel uye toisimbisa:

Blockchain: chii PoC chatinofanira kuvaka?

Ngatitarisei kutengeserana kwekuisa Smart Contract:

Blockchain: chii PoC chatinofanira kuvaka?

Ngatitarisei ruzivo nezve Channel yedu:

Blockchain: chii PoC chatinofanira kuvaka?

Nekuda kweizvozvo, tinowana iyo inotevera dhizaini ye blockchain network mune IBM gore. Iyo dhizaini inoratidzawo chirongwa chedemo chinomhanya muAmazon gore pane chaiyo server (zvimwe nezvayo muchikamu chinotevera):

Blockchain: chii PoC chatinofanira kuvaka?

Kugadzira GUI yeHyperledger Fabric API mafoni

Hyperledger Fabric ine API inogona kushandiswa ku:

  • Gadzira chiteshi;
  • Zvisungo zvinotarisa kune chiteshi;
  • Kuiswa uye kuisirwa kweakangwara zvibvumirano muchiteshi;
  • Kufona kutengeserana;
  • Kumbira ruzivo nezve blockchain.

Kuvandudza application

Muchirongwa chedu chedemo isu tichashandisa iyo API chete kufonera mabatiro uye kukumbira ruzivo, nekuti Isu takatopedza matanho asara tichishandisa IBM blockchain chikuva. Isu tinonyora GUI tichishandisa yakajairwa tekinoroji stack: Express.js + Vue.js + Node.js. Iwe unogona kunyora chinyorwa chakasiyana chekuti ungatanga sei kugadzira mawebhusaiti emazuva ano. Pano ini ndichasiya chinongedzo kune dzakatevedzana dzehurukuro dzandainyanya kufarira: Yakazara Stack Webhu App uchishandisa Vue.js & Express.js. Mhedzisiro iyi ndeyemutengi-server application ine yakajairika graphical interface muGoogle's Material Design maitiro. Iyo REST API pakati pemutengi neseva ine akati wandei mafoni:

  • HyperledgerDemo/v1/init - tanga iyo blockchain;
  • HyperledgerDemo/v1/accounts/list - tora runyoro rweakaundi ese;
  • HyperledgerDemo/v1/account?name=Bob&balance=100 β€” gadzira account yaBob;
  • HyperledgerDemo/v1/info?account=Bob β€” wana ruzivo nezveakaundi yaBob;
  • HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 - kutamisa mari mbiri kubva kuBob kuenda kuna Alice;
  • HyperledgerDemo/v1/disconnect - vhara kubatana kune blockchain.

Tsanangudzo yeAPI ine mienzaniso inosanganisirwa mukati Postman webhusaiti - chirongwa chinozivikanwa chekuyedza HTTP API.

Demo application muAmazon gore

Ndakaisa application kuAmazon nekuti... IBM haisati yakwanisa kukwidziridza account yangu uye kunditendera kugadzira maseva chaiwo. Maitiro ekuwedzera cherry kune domain: www.citcoin.info. Ini ndichachengeta server kwechinguva, ndozoidzima, nekuti... masendi erendi ari kudonha, uye mari yecitcoin haisati yanyorwa pastock exchange) Ndiri kusanganisira zviratidziro zvedemo mune chinyorwa kuitira kuti pfungwa dzebasa dzive pachena. Iyo demo application inogona:

  • Kutanga iyo blockchain;
  • Gadzira Akaunti (asi ikozvino haugone kugadzira Akaunti nyowani, nekuti iyo yakawanda nhamba yeakaundi yakatsanangurwa muchibvumirano che smart yasvikwa mu blockchain);
  • Gamuchira runyoro rweMaakaundi;
  • Kuendesa citcoin mari pakati paAlice, Bob naAlex;
  • Gamuchira zviitiko (asi ikozvino hapana nzira yekuratidza zviitiko, saka kuti zvive nyore, iyo interface inoti zviitiko hazvitsigirwe);
  • Log zviito.

Kutanga isu tinotanga iyo blockchain:

Blockchain: chii PoC chatinofanira kuvaka?

Tevere, isu tinogadzira account yedu, usatambise nguva nechiyero:

Blockchain: chii PoC chatinofanira kuvaka?

Isu tinowana rondedzero yemaakaundi ese aripo:

Blockchain: chii PoC chatinofanira kuvaka?

Isu tinosarudza mutumiri uye mugamuchiri, uye tinotora zviyero zvavo. Kana iye anotumira uye anogamuchira vakafanana, saka account yake inozadzikiswa:

Blockchain: chii PoC chatinofanira kuvaka?

Mune iyo log isu tinotarisisa maitirwo ekutengeserana:

Blockchain: chii PoC chatinofanira kuvaka?

Chaizvoizvo, ndizvo zvese nedemo chirongwa. Pazasi iwe unogona kuona kutengeserana kwedu mu blockchain:

Blockchain: chii PoC chatinofanira kuvaka?

Uye iyo general rondedzero yekutengeserana:

Blockchain: chii PoC chatinofanira kuvaka?

Neizvi, takabudirira kupedza kushandiswa kwePoC kugadzira iyo Citcoin network. Chii chimwe chinofanira kuitwa kuti Citcoin ive network yakazara-yakazara yekufambisa mari? Zvishoma-shoma:

  • Padanho rekugadzira account, ita chizvarwa cheyakavanzika / yeruzhinji kiyi. Kiyi yakavanzika inofanirwa kuchengetwa nemushandisi weakaundi, kiyi yeruzhinji inofanirwa kuchengetwa mu blockchain.
  • Ita kuendesa mari uko kiyi yeruzhinji, kwete zita, inoshandiswa kuzivisa mushandisi.
  • Encrypt transactions kubva kumushandisi kuenda kune server nekiyi yake yakavanzika.

mhedziso

Isu takaita iyo Citcoin network neanotevera mabasa: wedzera account, tora chiyero, wedzera account yako, kuendesa mari kubva kune imwe account kuenda kune imwe. Saka, zvakatidyira chii kuvaka PoC?

  • Iwe unofanirwa kudzidza blockchain kazhinji uye Hyperledger Fabric kunyanya;
  • Dzidza kushandisa IBM kana Amazon makore;
  • Dzidza JS programming mutauro uye imwe web framework;
  • Kana imwe data inoda kuchengetwa kwete mu blockchain, asi mune imwe dhatabhesi, zvino dzidza kubatanidza, semuenzaniso, nePostgreSQL;
  • Uye chekupedzisira asi chisiri chidiki - haugone kugara munyika yazvino usina ruzivo rweLinux!)

Ehe, haisi rocket sainzi, asi iwe unofanirwa kushanda nesimba!

Zvinyorwa paGitHub

Zvinyorwa zvinoiswa GitHub. Tsanangudzo pfupi yenzvimbo inochengeterwa zvinhu:
Catalog Β«ServerΒ»- Node.js server
Catalog Β«munhu anoda kubetserwaΒ»- Node.js mutengi
Catalog Β«blockchain"(parameter tsika nemakiyi, hongu, hazvisi-kushanda uye zvinopihwa semuenzaniso):

  • chibvumirano - smart contract source code
  • chikwama - mushandisi makiyi ekushandisa iyo Hyperledger Fabric API.
  • * .cds - yakaunganidzwa shanduro dzezvibvumirano zvakangwara
  • *.json mafaira - mienzaniso yemafaira ekugadzirisa ekushandisa Hyperledger Fabric API

Anongova mavambo!

Source: www.habr.com

Voeg