Blockchain: Divê em çi PoC ava bikin?

Çavên te ditirsin û destên te diêşin!

Di gotarên berê de, me bi teknolojiyên ku blok li ser têne çêkirin re mijûl bûn (Divê em blokek çi ava bikin?) û dozên ku dikarin bi alîkariya wan bêne bicîh kirin (Çima divê em dozê ava bikin?). Wext e ku hûn bi destên xwe bixebitin! Ji bo bicihanîna pîlot û PoC (Delîlên Têgînê), ez tercîh dikim ku ewran bikar bînim, ji ber ... ew dikarin ji her deverê cîhanê werin gihîştin û, pir caran, ne hewce ye ku wextê li ser sazkirina jîngehê ya westayî winda bikin, ji ber ku Veavakirinên pêşwext hene. Ji ber vê yekê, em tiştek hêsan çêbikin, mînakî, torgilokek ji bo veguheztina drav di navbera beşdaran de û em bi nermî jê re bibêjin Bitcoin. Ji bo vê yekê em ê ewr IBM û bloka gerdûnî ya Hyperledger Fabric bikar bînin. Pêşîn, em fêhm bikin ka çima Hyperledger Fabric jê re blokek gerdûnî tê gotin?

Blockchain: Divê em çi PoC ava bikin?

Hyperledger Fabric - blokek gerdûnî

Bi gelemperî, pergala agahdariya gerdûnî ev e:

  • Komek pêşkêşker û bingehek nermalavê ku mantiqa karsaziyê pêk tîne;
  • Navberên ji bo danûstendina bi pergalê re;
  • Amûrên ji bo qeydkirin, verastkirin û destûrdayîna cîhazên / mirovan;
  • Database ku daneyên kargêrî û arşîv digire:

Blockchain: Divê em çi PoC ava bikin?

Guhertoya fermî ya ku Hyperledger Fabric çi ye dikare were xwendin malperê, û bi kurtî, Hyperledger Fabric platformek çavkaniyek vekirî ye ku dihêle hûn zincîreyên blokek taybet ava bikin û peymanên jîr ên keyfî yên ku bi zimanên bernamesaziyê JS û Go hatine nivîsandin bicîh bînin. Ka em bi hûrgulî li mîmariya Hyperledger Fabric binihêrin û pê ewle bin ku ev pergalek gerdûnî ye ku tenê ji bo hilanîn û tomarkirina daneyan xwedan taybetmendî ye. Taybetmendî ev e ku dane, wekî di hemî zincîreyan de, di blokên ku li ser zincîra blokê têne danîn de tenê heke beşdar bigihîjin lihevhatinekê têne hilanîn û piştî tomarkirinê dane nekarin bi bêdengî werin rastkirin an jêbirin.

Hyperledger Fabric Architecture

Diagram mîmariya Hyperledger Fabric nîşan dide:

Blockchain: Divê em çi PoC ava bikin?

Rêxistin - Rêxistin hevalan dihewîne, yanî. blockchain ji ber piştgiriya rêxistinan heye. Rêxistinên cuda dikarin bibin beşek ji heman kanalê.

Qenal - avahiyek mentiqî ku hevalan di koman de yek dike, ango. zincîra blokê tê diyar kirin. Hyperledger Fabric dikare di heman demê de gelek blokên bi mantiqa karsaziya cihêreng pêvajoyê bike.

Pêşkêşvanê Karûbarên Endamtiyê (MSP) CA ye (Desthilatdariya Sertîfîkayê) ji bo danasîna nasname û danasîna rolan. Ji bo afirandina nodek, hûn hewce ne ku bi MSP-ê re têkilî bikin.

Peer nodes - danûstendinan verast bikin, zincîra blokê hilînin, peymanên biaqil bicîh bînin û bi serîlêdanan re têkilî daynin. Hevalên xwedan nasnameyek (sertîfîkaya dîjîtal) ne, ku ji hêla MSP ve tê derxistin. Berevajî tora Bitcoin an Etherium, ku hemî girêk xwedî mafên wekhev in, di Hyperledger Fabric de girêkên cihêreng dilîzin:

  • Peer dibe peer pejirand (EP) û peymanên biaqil pêk tînin.
  • Pêkhatina peer (CP) - tenê daneyan di zincîra blokê de hilînin û "Dewleta Cîhanê" nûve bikin.
  • Anchor Peer (AP) - heke çend rêxistin beşdarî zincîra blokê bibin, wê hingê hevalên lenger ji bo danûstendina di navbera wan de têne bikar anîn. Pêdivî ye ku her rêxistin yek an çend hevalbendên anker hebe. Bi karanîna AP-ê, her hevalek di rêxistinek de dikare di derheqê hemî hevalên rêxistinên din de agahdarî bistîne. Ji bo senkronîzekirina agahdariya di navbera AP-an de tê bikar anîn protokola gotegotan.
  • Rêberê Peer - heke rêxistinek çend hevalên xwe hebin, wê hingê tenê serokê peer dê blokan ji karûbarê Ordering werbigire û wan bide hevalên mayî. Rêber dikare ji hêla hevalbendên rêxistinê ve ji hêla statîk ve were destnîşankirin an jî dînamîkî were hilbijartin. Protokola gotegotan jî ji bo hevdengkirina agahdariya li ser rêberan tê bikar anîn.

Tiştan - saziyên ku xwedî nirx in û li ser zincîra blokê têne hilanîn. Bi taybetî, ev daneya nirx-kilît di formata JSON de ye. Ev daneyên ku di Blockchain de têne tomar kirin. Dîrokek wan heye, ku di zincîra blokê de tê hilanîn, û rewşek heyî, ku di databasa "Dewleta Cîhanê" de tê hilanîn. Strukturên daneyê li gorî karên karsaziyê bi kêfî têne dagirtin. Zeviyên pêwîst tune, tenê pêşniyar ev e ku pêdivî ye ku malî xwediyê xwedan be û hêja be.

Ledger - ji Blockchain û databasa dewleta Word-ê pêk tê, ku rewşa heyî ya malûmilkan hilîne. Dewleta cîhanê LevelDB an CouchDB bikar tîne.

Peymana zîrek - bi karanîna peymanên biaqil, mantiqa karsaziyê ya pergalê tête bicîh kirin. Di Hyperledger Fabric de, girêbestên biaqil jê re zincîra kod tê gotin. Bikaranîna zincîra kodê, hebûn û danûstandinên li ser wan têne diyar kirin. Di warê teknîkî de, peymanên hişmend modulên nermalavê ne ku di zimanên bernamesaziyê JS an Go de têne bicîh kirin.

Siyaseta pejirandinê - Ji bo her zincîra kodê, hûn dikarin sîyasetek li ser çend piştrastkirina danûstendinê û ji kê were hêvî kirin. Ger sîyaset neyê danîn, wê hingê verastkirin ev e: "Danûstandin divê ji hêla her endamek rêxistinek di kanalê de were pejirandin." Nimûneyên polîtîkayên:

  • Pêdivî ye ku danûstandin ji hêla her rêveberê rêxistinê ve were pejirandin;
  • Pêdivî ye ku ji hêla endamek an muwekîlê rêxistinê ve were pejirandin;
  • Pêdivî ye ku ji hêla her rêxistinek peer ve were pejirandin.

Ordering xizmeta - danûstendinan li blokan pak dike û wan ji hevalên di kanalê re dişîne. Rakirina peyaman ji hemî hevalên li ser torê re garantî dike. Ji bo pergalên pîşesaziyê tê bikaranîn Brokera peyama Kafka, ji bo pêşveçûn û ceribandinê solo.

CallFlow

Blockchain: Divê em çi PoC ava bikin?

  • Serlêdan bi Hyperledger Fabric re bi karanîna Go, Node.js an Java SDK re têkilî dike;
  • Xerîdar danûstendinek tx diafirîne û wê ji hevalên pejirandî re dişîne;
  • Peer îmzeya xerîdar piştrast dike, danûstendinê temam dike, û îmzeya pejirandî ji xerîdar re vedigere. Chaincode tenê li ser peer pejirandî tête darve kirin, û encama darvekirina wê ji hemî hevalan re tê şandin. Ji vê algorîtmaya xebatê re lihevhatinek PBFT (Paktîkî ya Bizantîn Fault Tolerant) tê gotin. Cûdahî ji klasîk BFT rastiya ku peyam tê şandin û pejirandin ne ji hemî beşdaran, lê tenê ji komek diyarkirî tê hêvî kirin;
  • Piştî ku xerîdar hejmara bersivên ku bi polîtîkaya pejirandinê re têkildar in stend, ew danûstendinê ji karûbarê Orderkirinê re dişîne;
  • Karûbarê Ordering blokek çêdike û ji hemî hevalên xwe re dişîne. Karûbarê fermankirinê tomarkirina birêkûpêk a blokan piştrast dike, ku jê re tê gotin ku lingê fork ji holê radike (li beşa "Çarkan" binêre);
  • Heval blokek distînin, dîsa polîtîkaya pejirandinê kontrol dikin, blokê li zincîra blokê binivîsin û di "Dewleta Cîhanê" DB de dewletê biguherînin.

Ewan. Ev dibe sedema dabeşkirina rolan di navbera girêkan de. Ev piştrast dike ku zincîra blokê berbelav û ewledar e:

  • Peymanên biaqil (zincîra kodê) pejirankeran pêk tîne. Ev nepeniya peymanên jîr misoger dike, ji ber ew ji hêla hemî beşdaran ve nayê hilanîn, lê tenê ji hêla pejirandî ve tê hilanîn.
  • Divê ferman bi lez bixebite. Ev ji hêla rastiyê ve tê piştrast kirin ku Ordering tenê blokê çêdike û wê ji komek sabît a hevalên rêber re dişîne.
  • Pêkhatina hevalan tenê zincîra blokê hilîne - dibe ku gelek ji wan hebin û ji wan re pir hêz û operasyona tavilê hewce nake.

Zêdetir hûrgulî li ser çareseriyên mîmarî yên Hyperledger Fabric û çima ew bi vî rengî dixebite û ne wekî din dikare li vir were dîtin: Architecture Origins an li vir: Fabric Hyperledger: Pergalek Xebatê ya Belavkirî ji bo Blockchainsên Destûrdar.

Ji ber vê yekê, Hyperledger Fabric pergalek bi rastî gerdûnî ye ku hûn pê re dikarin:

  • Bi karanîna mekanîzmaya peymana biaqil, mantiqa karsaziya kêfî bicîh bînin;
  • Daneyên ji databasa blokê bi formata JSON tomar bikin û bistînin;
  • Bi karanîna Desthilatdariya Sertîfîkayê ve gihîştina API-ê bidin û verast bikin.

Naha ku em hinekî di derbarê taybetmendiyên Hyperledger Fabric de fam dikin, em di dawiyê de tiştek bikêr bikin!

Bicihkirina blokê

Formulkirina pirsgirêkê

Erk ev e ku hûn tora Citcoin bi fonksiyonên jêrîn bicîh bikin: hesabek çêbikin, hevsengek bistînin, hesabê xwe jor bikin, drav ji yek hesabek din veguherînin. Werin em modelek nesneyê xêz bikin, ku em ê bêtir di peymanek hişmend de bicîh bikin. Ji ber vê yekê, em ê hesabên ku bi navan têne nas kirin û hevsengiyek, û navnîşek hesaban hene. Hesab û navnîşek hesaban, di warê hebûnên Hyperledger Fabric de ne. Li gorî vê yekê, xwedî dîrok û rewşek heyî ne. Ez ê hewl bidim vê yekê bi zelalî xêz bikim:

Blockchain: Divê em çi PoC ava bikin?

Hêjmarên jorîn rewşa heyî ne, ku di databasa "Dewleta Cîhanê" de tê hilanîn. Li jêr wan jimar hene ku dîroka ku di zincîra blokê de hatî hilanîn destnîşan dikin. Rewşa heyî ya hebûnê ji hêla danûstandinan ve tê guhertin. Taybetmendî tenê bi tevahî diguhezîne, ji ber vê yekê di encama danûstendinê de, tiştek nû tê afirandin, û nirxa heyî ya hebûnê diçe dîrokê.

IBM Cloud

Em di nav de hesabek çêbikin ewr IBM. Ji bo karanîna platforma blokê, pêdivî ye ku ew bi Pay-As-You-Go were nûve kirin. Dibe ku ev pêvajo zû nebe, ji ber ku ... IBM agahdariya zêde daxwaz dike û bi destan verast dike. Li ser xalek erênî, ez dikarim bibêjim ku IBM xwedan materyalên perwerdehiyê yên baş e ku dihêle hûn Hyperledger Fabric di ewrê wan de bicîh bikin. Min rêze gotar û nimûneyên jêrîn eciband:

Li jêr dîmenên platforma Blockchain IBM hene. Ev ne rêwerzek e ku meriv çawa zincîra blokê biafirîne, lê tenê xwenîşandanek çarçoveya peywirê ye. Ji ber vê yekê, ji bo mebestên xwe, em yek Rêxistinek çêbikin:

Blockchain: Divê em çi PoC ava bikin?

Em tê de girêkan diafirînin: Orderer CA, Org1 CA, Orderer Peer:

Blockchain: Divê em çi PoC ava bikin?

Em bikarhêneran diafirînin:

Blockchain: Divê em çi PoC ava bikin?

Kanalek çêbikin û jê re citcoin dibêjin:

Blockchain: Divê em çi PoC ava bikin?

Di bingeh de Channel blokek e, ji ber vê yekê ew bi bloka zero dest pê dike (bloka Genesis):

Blockchain: Divê em çi PoC ava bikin?

Nivîsandina Peymana Smart

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

Bi intuitive, divê her tişt li vir zelal be:

  • Gelek fonksiyon hene (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) ku bernameya demo dê bi karanîna Hyperledger Fabric API-ê bang bike.
  • Fonksiyonên SendFrom û RefillBalance Bûyerên ku dê bernameya demo wergire diafirîne.
  • Dema ku peymanek biaqil tê destnîşan kirin, fonksiyona yekser carekê tê gotin. Di rastiyê de, ew ne tenê carekê tê gotin, lê her carê ku guhertoya peymana hişmend diguhezîne. Ji ber vê yekê, destpêkirina navnîşek bi rêzek vala ramanek xirab e, ji ber ku Naha, gava ku em guhertoya peymana hişmend biguhezînin, em ê navnîşa heyî winda bikin. Lê baş e, ez tenê fêr dibim).
  • Hesab û navnîşek hesaban strukturên daneya JSON ne. JS ji bo manipulasyona daneyê tê bikar anîn.
  • Hûn dikarin bi karanîna banga fonksiyonê getState nirxa heyî ya malzemeyê bistînin, û wê bi karanîna putState nûve bikin.
  • Dema afirandina Hesabek, fonksiyona AddAccount tê gotin, ku tê de berhevokek ji bo hejmara herî zêde ya hesabên di zincîra blokê de (maxAccounts = 5) tê çêkirin. Û li vir jambek heye (we ferq kiriye?), ku dibe sedema zêdebûna bêdawî ya hejmara hesaban. Divê dev ji xeletiyên weha berdin)

Dûv re, em peymana hişmend di Kanalê de bar dikin û wê destnîşan dikin:

Blockchain: Divê em çi PoC ava bikin?

Ka em li danûstendina ji bo sazkirina Peymana Smart binêrin:

Blockchain: Divê em çi PoC ava bikin?

Ka em li hûrguliyên kanala xwe binêrin:

Blockchain: Divê em çi PoC ava bikin?

Wekî encamek, em diyagrama jêrîn a tora blokek di ewrê IBM de digirin. Diagram di heman demê de bernameyek demo-yê ku di ewrê Amazon-ê de li ser serverek virtual tê xebitandin destnîşan dike (di beşa pêş de bêtir li ser wê):

Blockchain: Divê em çi PoC ava bikin?

Afirandina GUI ji bo bangên Hyperledger Fabric API

Hyperledger Fabric xwedan API ye ku dikare were bikar anîn:

  • Kanal çêbikin;
  • Girêdanên peer to kanal;
  • Sazkirin û sazkirina peymanên biaqil di kanalê de;
  • Danûstandinên bangkirinê;
  • Agahdariyê li ser blokê bixwazin.

Pêşveçûna sepanê

Di bernameya xweya demo de em ê API-ê tenê bikar bînin da ku danûstendinan bang bikin û agahdariya daxwaz bikin, ji ber Me berê gavên mayî bi karanîna platforma bloka IBM-ê qedand. Em GUI-yek bi karanîna stek teknolojiya standard dinivîsin: Express.js + Vue.js + Node.js. Hûn dikarin gotarek cihêreng binivîsin ka meriv çawa dest bi çêkirina serîlêdanên webê yên nûjen dike. Li vir ez ê girêdanek ji rêze dersên ku min pir jê hez kir bihêlim: Serlêdana Webê ya Full Stack bi Vue.js & Express.js bikar tîne. Encam serîlêdanek xerîdar-server e ku bi navgînek grafîkî ya naskirî di şêwaza sêwirana materyalê ya Google de ye. REST API-ya di navbera xerîdar û serverê de ji çend bangan pêk tê:

  • HyperledgerDemo/v1/init - zincîra blokê dest pê bike;
  • HyperledgerDemo/v1/accounts/list - navnîşek hemî hesaban bistînin;
  • HyperledgerDemo/v1/account?name=Bob&balance=100 — Hesabê Bob biafirîne;
  • HyperledgerDemo/v1/info?account=Bob — li ​​ser hesabê Bob agahdarî bistînin;
  • HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 - du zîv ji Bob bo Alice veguhezîne;
  • HyperledgerDemo/v1/disconnect - girêdana bi zincîra blokê re bigire.

Danasîna API-yê bi mînakên ku tê de hene Malpera postman - Bernameyek naskirî ji bo ceribandina HTTP API.

Serlêdana Demo li Amazon cloudê

Min serîlêdan li Amazonê bar kir ji ber ku ... IBM hîn jî nekariye hesabê min nûve bike û destûr bide ku ez serverên virtual biafirînim. Meriv çawa kirazek li domainê zêde dike: www.citcoin.info. Ez ê serverê ji bo demek vekirî bihêlim, paşê wê vekim, ji ber ku ... centên kirê diherikin, û pereyên citcoin hîna li ser borsayê nehatine navnîş kirin) Ez di gotarê de dîmenên demoyê vedigirim da ku mentiqê xebatê zelal be. Serlêdana demo dikare:

  • Blockchainê bidin destpêkirin;
  • Hesabek biafirînin (lê naha hûn nekarin Hesabek nû biafirînin, ji ber ku hejmara herî zêde ya hesabên ku di peymana hişmend de hatine destnîşan kirin di zincîra blokê de gihîştiye);
  • Lîsteya Hesaban bistînin;
  • Di navbera Alice, Bob û Alex de coinên citcoin veguherînin;
  • Bûyeran bistînin (lê naha rêyek tune ku bûyeran nîşan bide, ji ber vê yekê ji bo sadebûnê, navber dibêje ku bûyer nayên piştgirî kirin);
  • Çalakiyên têketinê.

Pêşî em zincîra blokê dest pê dikin:

Blockchain: Divê em çi PoC ava bikin?

Dûv re, em hesabê xwe diafirînin, bi hevsengiyê re wext winda nekin:

Blockchain: Divê em çi PoC ava bikin?

Em navnîşek hemî hesabên berdest digirin:

Blockchain: Divê em çi PoC ava bikin?

Em şander û wergir hildibijêrin, û hevsengiyên wan digirin. Ger şander û wergir yek bin, wê hingê hesabê wî dê were tije kirin:

Blockchain: Divê em çi PoC ava bikin?

Di têketinê de em pêkanîna danûstendinan dişopînin:

Blockchain: Divê em çi PoC ava bikin?

Bi rastî, ew hemî bi bernameya demo re ye. Li jêr hûn dikarin danûstendina me ya di zincîra blokê de bibînin:

Blockchain: Divê em çi PoC ava bikin?

Û lîsteya giştî ya danûstandinan:

Blockchain: Divê em çi PoC ava bikin?

Bi vê yekê, me pêkanîna PoC-ê bi serfirazî qedand ku tora Citcoin biafirîne. Ji bo ku Citcoin bibe torgilokek bêkêmasî ya veguheztina drav? Gelek kêm:

  • Di qonaxa çêkirina hesabê de, hilberîna mifteyek taybet / giştî bicîh bikin. Divê mifteya taybet bi bikarhênerê hesabê re were hilanîn, mifteya giştî divê di zincîra blokê de were hilanîn.
  • Veguheztinek drav çêbikin ku tê de kilîtek gelemperî, ji bilî navek, tê bikar anîn da ku bikarhêner nas bike.
  • Danûstandinên ku ji bikarhêner berbi serverê bi mifteya wî ya taybet ve diçin şîfre bikin.

encamê

Me tora Citcoin bi fonksiyonên jêrîn bicîh kiriye: hesabek zêde bikin, hevsengiyek bistînin, hesabê xwe jor bikin, drav ji yek hesabek din veguherînin. Ji ber vê yekê, lêçûna me ji bo avakirina PoC çi bû?

  • Pêdivî ye ku hûn blokê bi gelemperî û Hyperledger Fabric bi taybetî bixwînin;
  • Fêr bibin ku ewrên IBM an Amazon bikar bînin;
  • Zimanê bernamesaziya JS û hin çarçoveyek malperê fêr bibin;
  • Ger hewce bike ku hin dane ne di zincîra blokê de, lê di danegehek cihêreng de werin hilanîn, wê hingê fêr bibin ku meriv, mînakî, bi PostgreSQL re entegre bibe;
  • Û ya dawî lê ne hindik - hûn nikarin bêyî zanîna Linux-ê di cîhana nûjen de bijîn!)

Bê guman, ew ne zanistiya rokêtê ye, lê hûn ê hewce bikin ku pir bixebitin!

Çavkaniyên li ser GitHub

Çavkaniyan danîn GitHub. Danasîna kurt a depoyê:
Katalog «server» - Pêşkêşkara Node.js
Katalog «kirrîxwaz» - Node.js muwekîlê
Katalog «blockchain"(nirx û mifteyên parameterê, bê guman, nexebitîne û tenê wekî mînak têne dayîn):

  • peyman - koda çavkaniya peymana jîr
  • wallet - Bişkojkên bikarhêner ji bo karanîna Hyperledger Fabric API.
  • *.cds - guhertoyên berhevkirî yên peymanên jîr
  • Pelên *.json - Nimûneyên pelên vesazkirinê yên ji bo karanîna Hyperledger Fabric API

Ew tenê destpêk e!

Source: www.habr.com

Add a comment