Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Ang mga mata nahadlok, ug ang mga kamot mangatol!

Sa nangaging mga artikulo, among gihisgutan ang mga teknolohiya diin ang mga blockchain gitukod (Unsa ang kinahanglan naton nga magtukod usa ka blockchain?) ug mga kaso nga mahimong ipatuman sa ilang tabang (Unsa ang gasto sa paghimo sa usa ka kaso?). Panahon na sa pagtrabaho gamit ang imong mga kamot! Alang sa pagpatuman sa mga piloto ug PoC (Proof of Concept), mas gusto nako nga gamiton ang mga panganod, tungod kay. sila adunay access gikan sa bisan asa sa kalibutan ug, sa kasagaran, dili kinahanglan nga mogahin og panahon sa makapakapoy nga pag-instalar sa palibot, tungod kay. Adunay mga preset nga mga pag-configure. Busa, maghimo kita og usa ka butang nga yano, sama sa usa ka network alang sa pagbalhin sa mga sensilyo tali sa mga partisipante ug tawgon kini nga kasarangan nga Citcoin. Sa pagbuhat niini, atong gamiton ang IBM cloud ug ang Hyperledger Fabric universal blockchain. Una, atong mahibal-an kung nganong ang Hyperledger Fabric gitawag nga usa ka universal blockchain?

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Hyperledger Fabric - Universal Blockchain

Sa kinatibuk-an, ang usa ka unibersal nga sistema sa impormasyon mao ang:

  • Usa ka set sa mga server ug usa ka software core nga naghimo sa lohika sa negosyo;
  • Mga interface alang sa interaksyon sa sistema;
  • Mga paagi alang sa pagrehistro, pag-authenticate ug pagtugot sa mga aparato / tawo;
  • Pagtipig sa database sa operasyon ug gi-archive nga datos:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Ang opisyal nga bersyon kung unsa ang Hyperledger Fabric mabasa sa site, ug sa laktod nga pagkasulti, ang Hyperledger Fabric usa ka open source nga plataporma nga nagtugot kanimo sa pagtukod og mga pribadong blockchain ug pagpatuman sa arbitraryong mga kontrata nga gisulat sa JS ug Go programming languages. Atong tan-awon pag-ayo ang Hyperledger Fabric nga arkitektura ug siguruha nga kini usa ka unibersal nga sistema nga adunay mga detalye lamang alang sa pagtipig ug pagrekord sa datos. Ang espesipiko anaa sa kamatuoran nga ang datos, sama sa tanan nga mga blockchain, gitipigan sa mga bloke nga gibutang sa blockchain lamang kung ang mga partisipante nakaabot sa usa ka consensus ug human sa pagrekord, ang mga datos dili mahimong hilom nga matul-id o mapapas.

Hyperledger nga Arkitektura sa Tela

Ang diagram nagpakita sa Hyperledger Fabric nga arkitektura:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Organizations - ang mga organisasyon adunay mga kaedad, busa blockchain anaa tungod sa suporta sa mga organisasyon. Ang lainlaing mga organisasyon mahimong bahin sa parehas nga channel.

channel - usa ka lohikal nga istruktura nga naghiusa sa mga kauban sa mga grupo, sa ingon. gibutang ang blockchain. Ang Hyperledger Fabric mahimo nga dungan nga magproseso sa daghang mga blockchain nga adunay lainlaing lohika sa negosyo.

Membership Services Provider (MSP) usa ka CA (Certificate Authority) alang sa pag-isyu sa pagkatawo ug paghatag ug mga tahas. Aron makahimo usa ka node, kinahanglan nimo nga makig-uban sa MSP.

Peer nodes β€” pamatud-i ang mga transaksyon, itago ang blockchain, ipatuman ang mga smart nga kontrata ug makig-uban sa mga aplikasyon. Ang mga kaedad adunay identidad (digital certificate) nga gi-isyu sa MSP. Dili sama sa network sa Bitcoin o Etherium, diin ang tanan nga mga node managsama, ang mga node adunay lainlaing mga tahas sa Hyperledger Fabric:

  • Mahimong kauban nag-endorso nga kauban (EP) ug ipatuman ang mga smart nga kontrata.
  • Pagpasalig nga kauban (CP) - i-save lamang ang datos sa blockchain ug i-update ang "World state".
  • Anchor Peer (AP) - kung daghang mga organisasyon ang moapil sa blockchain, unya ang mga kaedad sa angkla gigamit aron makigsulti tali kanila. Ang matag organisasyon kinahanglang adunay usa o daghan pang mga anchor peer. Uban sa tabang sa AP, ang bisan kinsa nga kaedad sa usa ka organisasyon makakuha og kasayuran bahin sa tanan nga mga kauban sa ubang mga organisasyon. Gigamit sa pag-synchronize sa impormasyon tali sa mga AP. protocol sa tsismis.
  • Lider nga Peer - kung ang organisasyon adunay daghang mga kaedad, nan ang lider ra sa kaedad ang makadawat mga bloke gikan sa serbisyo sa Pag-order ug ihatag kini sa ubang mga kauban. Ang lider mahimong itakda sa static o dinamikong pagpili sa mga kaedad sa organisasyon. Ang gossip protocol gigamit usab sa pag-synchronize sa impormasyon sa lider.

assets β€” mga entidad nga adunay kantidad nga gitipigan sa blockchain. Labi nga espesipiko, kini ang datos nga hinungdanon nga kantidad sa format nga JSON. Kini ang datos nga natala sa Blockchain blockchain. Adunay sila usa ka kasaysayan nga gitipigan sa blockchain ug usa ka kasamtangan nga estado nga gitipigan sa database sa "World state". Ang mga istruktura sa datos napuno nga arbitraryo depende sa mga buluhaton sa negosyo. Wala'y gikinahanglan nga mga natad, ang bugtong rekomendasyon mao nga ang mga kabtangan kinahanglan adunay tag-iya ug adunay bili.

Ledger - naglangkob sa Blockchain blockchain ug ang Word state database, nga nagtipig sa kasamtangan nga kahimtang sa mga kabtangan. Ang estado sa kalibutan naggamit sa LevelDB o CouchDB.

Smart nga kontrata β€” sa tabang sa mga smart nga kontrata, ang lohika sa negosyo sa sistema gipatuman. Sa Hyperledger Fabric, ang mga smart nga kontrata gitawag nga chaincode. Sa tabang sa chaincode, gipiho ang mga kabtangan ug mga transaksyon sa ibabaw nila. Sa teknikal nga pinulongan, ang mga smart contract kay software modules nga gipatuman sa JS o Go programming languages.

Polisiya sa pag-endorso - alang sa matag chaincode, mahimo nimong itakda ang mga palisiya kung pila ug gikan kang kinsa kinahanglan nimo nga paabuton ang mga kumpirmasyon alang sa transaksyon. Kung ang palisiya wala gitakda, nan ang default mao ang: "ang transaksyon kinahanglan nga kumpirmahon sa bisan kinsa nga miyembro sa bisan unsang organisasyon sa channel". Mga pananglitan sa polisiya:

  • Ang transaksyon kinahanglang kumpirmahon sa bisan kinsang tigdumala sa organisasyon;
  • Kinahanglan nga kumpirmahon sa bisan kinsa nga miyembro o kliyente sa organisasyon;
  • Kinahanglan nga kumpirmahon ang bisan kinsa nga kauban sa organisasyon.

Serbisyo sa pag-order - nag-pack sa mga transaksyon sa mga bloke ug gipadala kini sa mga kaedad sa channel. Gisiguro ang paghatud sa mensahe sa tanan nga mga kauban sa network. Gigamit alang sa mga sistema sa industriya Broker sa mensahe sa Kafka, alang sa kalamboan ug pagsulay solo.

dagan sa tawag

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

  • Ang aplikasyon nakig-uban sa Hyperledger Fabric gamit ang Go, Node.js o Java SDK;
  • Ang kliyente nagmugna og usa ka transaksyon tx ug gipadala kini sa pag-endorso sa mga kaedad;
  • Ang kaedad nagpamatuod sa pirma sa kliyente, nagkompleto sa transaksyon, ug nagpadala sa pirma sa pag-endorso balik sa kliyente. Ang Chaincode gipatuman lamang sa nag-endorso nga peer, ug ang resulta sa pagpatuman niini ipadala sa tanang mga kaedad. Ang ingon nga algorithm sa trabaho gitawag nga - PBFT (Practical Byzantine Fault Tolerant) consensus. Lahi sa klasiko nga BFT ang kamatuoran nga ang mensahe gipadala ug ang kumpirmasyon gilauman dili gikan sa tanan nga mga partisipante, apan gikan lamang sa usa ka set;
  • Human madawat sa kliyente ang gidaghanon sa mga tubag nga katumbas sa polisiya sa pag-endorso, ipadala niini ang transaksyon ngadto sa serbisyo sa Pag-order;
  • Ang serbisyo sa pag-order nagporma usa ka bloke ug gipadala kini sa tanan nga mga kauban nga nagpasalig. Ang serbisyo sa Pag-order nagsiguro nga ang mga bloke gisulat nga sunud-sunod, nga nagtangtang sa gitawag nga ledger fork (tan-awa ang seksyon nga "Mga tinidor");
  • Ang mga kaedad makadawat sa block, susihon pag-usab ang polisiya sa pag-endorso, isulat ang block sa blockchain, ug usba ang estado sa "World state" DB.

Mga. kini turns sa pagbahin sa mga tahas tali sa mga node. Kini nagsiguro sa scalability ug seguridad sa blockchain:

  • Ang mga smart contract (chaincode) nagpahigayon sa pag-endorso sa mga kaedad. Gisiguro niini ang pagkakompidensyal sa mga smart nga kontrata, ingon wala kini gitipigan sa tanan nga mga partisipante, apan pinaagi lamang sa pag-endorso sa mga kaedad.
  • Ang pag-order kinahanglan nga molihok dayon. Gisiguro kini sa kamatuoran nga ang Pag-order nagporma lamang sa usa ka bloke ug gipadala kini sa usa ka pirmi nga hugpong sa mga kauban sa lider.
  • Ang pag-commit sa mga kaubanan nagtipig lamang sa blockchain - mahimo nga daghan kanila ug wala sila magkinahanglan og daghang gahum ug diha-diha nga trabaho.

Dugang nga mga solusyon sa arkitektura sa Hyperledger Fabric ug ngano nga kini nagtrabaho sa ingon niini nga paagi ug dili kung dili makita dinhi: Mga Sinugdanan sa Arkitektura o dinhi: Hyperledger Fabric: Usa ka Distributed Operating System alang sa Gitugotan nga Blockchains.

Mao nga, ang Hyperledger Fabric usa ka tinuud nga unibersal nga sistema diin mahimo nimo:

  • Ipatuman ang arbitraryong lohika sa negosyo gamit ang smart contract mechanism;
  • Pagsulat ug pagdawat sa datos gikan sa blockchain database sa JSON format;
  • Hatag ug balido ang pag-access sa API gamit ang Certificate Authority.

Karon nga aduna na kitay gamay nga detalye sa Hyperledger Fabric nga wala na sa dalan, sa katapusan atong buhaton ang usa ka butang nga mapuslanon!

Pag-deploy sa blockchain

Pagbuot sa problema

Ang tahas mao ang pagpatuman sa Citcoin network nga adunay mosunod nga mga gimbuhaton: paghimo og account, pagkuha og balanse, pagpuno sa usa ka account, pagbalhin sa mga sensilyo gikan sa usa ka account ngadto sa lain. Magdrowing kita og modelo sa butang, nga atong ipatuman sa usa ka smart contract. Busa, kita adunay mga asoy nga giila pinaagi sa mga ngalan (ngalan) ug adunay usa ka balanse (balanse), ug usa ka listahan sa mga asoy. Ang mga account ug usa ka lista sa mga account naa sa termino sa Hyperledger Fabric assets. Tungod niini, sila adunay kasaysayan ug kasamtangan nga kahimtang. Akong sulayan ang pagdrowing niini nga biswal:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Ang pinakataas nga mga numero mao ang kasamtangan nga estado, nga gitipigan sa "World state" database. Ubos niini mao ang mga numero nga nagpakita sa kasaysayan nga gitipigan sa blockchain. Ang kasamtangan nga kahimtang sa mga kabtangan giusab pinaagi sa mga transaksyon. Ang asset nagbag-o lamang sa kinatibuk-an niini, mao nga isip resulta sa transaksyon, usa ka bag-ong butang ang gibuhat, ug ang kasamtangan nga bili sa asset moadto sa kasaysayan.

IBM Cloud

Naghimo mi og account sa IBM panganod. Aron magamit ang plataporma sa blockchain, kinahanglan kini i-upgrade sa Pay-As-You-Go. Kini nga proseso mahimong dili paspas, tungod kay Ang IBM nangayo og dugang nga impormasyon ug gi-verify kini sa mano-mano. Sa positibo nga bahin, makaingon ako nga ang IBM adunay maayo nga mga materyales sa pagbansay nga nagtugot kanimo sa pag-deploy sa Hyperledger Fabric sa ilang panganod. Ganahan ko sa mosunod nga serye sa mga artikulo ug mga pananglitan:

Ang mosunod mao ang mga screenshot sa IBM Blockchain nga plataporma. Dili kini usa ka panudlo alang sa paghimo sa usa ka blockchain, apan usa lamang ka pagpakita sa sakup sa buluhaton. Mao nga, alang sa among katuyoan, naghimo kami usa ka Organisasyon:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Naghimo kami og mga node niini: Orderer CA, Org1 CA, Orderer Peer:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Nagsugod kami sa mga tiggamit:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Paghimo og Channel ug tawga kini nga citcoin:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Sa esensya, ang Channel usa ka blockchain, busa nagsugod kini sa zero block (block sa Genesis):

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Pagsulat og 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;

Sa intuitively, ang tanan kinahanglan nga klaro dinhi:

  • Adunay daghang mga gimbuhaton (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) nga tawgon sa demo program gamit ang Hyperledger Fabric API.
  • Ang SendFrom ug RefillBalance function makamugna og mga panghitabo (Event) nga madawat sa demo program.
  • Ang instantiate function gitawag kausa sa diha nga ang smart contract kay instantiated. Sa pagkatinuod, kini gitawag dili kausa, apan sa matag higayon nga ang bersyon sa smart nga kontrata mausab. Busa, ang pagsugod sa usa ka lista nga adunay usa ka walay sulod nga laray usa ka dili maayo nga ideya, tungod kay karon kung usbon ang bersyon sa smart nga kontrata, mawala ang kasamtangan nga listahan. Pero wala, nagkat-on lang ko).
  • Ang mga account ug ang lista sa mga account (account) mga istruktura sa datos sa JSON. Ang JS gigamit alang sa pagmaniobra sa datos.
  • Makuha nimo ang kasamtangan nga bili sa usa ka asset pinaagi sa pagtawag sa getState function, ug i-update kini gamit ang putState.
  • Sa paghimo sa usa ka Account, ang AddAccount function gitawag, diin ang usa ka pagtandi gihimo alang sa labing kadaghan nga mga account sa blockchain (maxAccounts = 5). Ug adunay usa ka jamb (namatikdan?), Nga modala ngadto sa usa ka walay katapusan nga pagtaas sa gidaghanon sa mga asoy. Ang mga sayop nga sama niini kinahanglan nga likayan

Sunod, among i-load ang smart contract sa Channel ug i-instantiate kini:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Atong tan-awon ang transaksyon sa pag-instalar sa Smart Contract:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Tan-awa ang mga detalye bahin sa among Channel:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Ingon usa ka sangputanan, nakuha namon ang mosunud nga laraw sa network nga blockchain sa panganod sa IBM. Usab sa diagram adunay usa ka demo nga programa nga nagdagan sa Amazon cloud sa usa ka virtual server (ang mga detalye bahin niini anaa sa sunod nga seksyon):

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Paghimo og GUI alang sa Hyperledger Fabric API Calls

Ang Hyperledger Fabric adunay API nga magamit sa:

  • Paghimo og channel;
  • Mga koneksyon sa kauban sa channel;
  • Pag-instalar ug instantiation sa mga smart nga kontrata sa channel;
  • Mga transaksyon sa pagtawag;
  • Pagpangayo og impormasyon sa blockchain.

Pagpalambo sa Aplikasyon

Sa among demo nga programa, gamiton lang namo ang API sa pagtawag sa mga transaksyon ug pagpangayo og impormasyon, tungod kay. nahimo na namo ang uban nga mga lakang gamit ang IBM blockchain platform. Nagsulat kami og GUI gamit ang standard technology stack: Express.js + Vue.js + Node.js. Mahimo kang magsulat og lahi nga artikulo kon unsaon pagsugod sa paghimo og modernong mga aplikasyon sa web. Dinhi magbilin ako usa ka link sa usa ka serye sa mga lektyur nga labing gusto nako: Full Stack Web App gamit ang Vue.js & Express.js. Ang resulta usa ka aplikasyon sa kliyente-server nga adunay pamilyar nga graphical interface sa istilo sa Disenyo sa Materyal sa Google. Ang REST API tali sa kliyente ug server naglangkob sa daghang mga tawag:

  • HyperledgerDemo/v1/init - pagsugod sa blockchain;
  • HyperledgerDemo/v1/accounts/list - pagkuha og lista sa tanang account;
  • HyperledgerDemo/v1/account?name=Bob&balance=100 - paghimo og Bob account;
  • HyperledgerDemo/v1/info?account=Bob - pagkuha og impormasyon mahitungod sa Bob account;
  • HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 - ibalhin ang duha ka sensilyo gikan kang Bob ngadto kang Alice;
  • HyperledgerDemo/v1/disconnect - isira ang koneksyon sa blockchain.

Ang paghulagway sa API nga adunay mga pananglitan nga gibutang Website sa postman usa ka ilado nga programa alang sa pagsulay sa HTTP API.

Demo nga aplikasyon sa Amazon cloud

Ang aplikasyon gi-upload sa Amazon, tungod kay Ang IBM wala gihapon makahimo sa pag-upgrade sa akong account ug nagtugot kanako sa paghimo og mga virtual server. Giunsa ang domain gilakip sa cherry: www.citcoin.info. Akong i-on ang server sa makadiyot, unya i-off kini, tungod kay ang mga sentimo alang sa abang nagtulo, ug ang mga citcoin nga mga sensilyo wala pa nalista sa exchange) Gibutang nako ang mga screenshot sa demo sa artikulo aron ang lohika sa trabaho klaro. Ang demo nga aplikasyon mahimo:

  • Pagsugod sa blockchain;
  • Paghimo og Account (apan karon ang usa ka bag-ong Account dili mahimo, tungod kay ang maximum nga gidaghanon sa mga account nga gipiho sa smart nga kontrata naabot sa blockchain);
  • Pagkuha usa ka lista sa mga Account;
  • Pagbalhin mga citcoin nga mga sensilyo tali ni Alice, Bob ug Alex;
  • Pagdawat mga panghitabo (apan karon wala’y paagi aron ipakita ang mga panghitabo, mao nga alang sa kayano kini gisulat sa interface nga ang mga panghitabo wala gisuportahan);
  • Mga aksyon sa log.

Una, atong gisugdan ang blockchain:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Sunod, gisugdan namon ang among account, ayaw pagbiaybiay sa balanse:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Nakakuha kami usa ka lista sa tanan nga magamit nga mga account:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Gipili namon ang nagpadala ug nakadawat, makuha namon ang ilang mga balanse. Kung parehas ang nagpadala ug nakadawat, nan ang iyang account mapuno:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Sa log, among gimonitor ang pagpatuman sa mga transaksyon:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Sa tinuud, sa usa ka demo nga programa, kana ra. Sunod, makita nimo ang among transaksyon sa blockchain:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Ug ang kinatibuk-ang listahan sa mga transaksyon:

Blockchain: unsa ang kinahanglan naton nga magtukod usa ka PoC?

Uban niini, malampuson namong nahuman ang pagpatuman sa PoC sa paghimo sa Citcoin network. Unsa pa ang kinahanglan buhaton aron mahimo ang Citcoin nga usa ka hingpit nga network sa pagbalhin sa coin? Gamay kaayo:

  • Sa yugto sa paghimo sa usa ka account, ipatuman ang henerasyon sa usa ka pribado / publiko nga yawe. Ang pribadong yawe kinahanglang tipigan sa user account, nga publiko sa blockchain.
  • Paghimo usa ka pagbalhin sa mga sensilyo, diin dili usa ka ngalan, apan usa ka publiko nga yawe ang gigamit aron mailhan ang tiggamit.
  • I-encrypt ang mga transaksyon gikan sa user ngadto sa server gamit ang iyang pribadong yawe.

konklusyon

Gipatuman namon ang network sa Citcoin nga adunay mga mosunud nga gimbuhaton: pagdugang usa ka account, pagkuha usa ka balanse, pagpuno sa imong account, pagbalhin mga sensilyo gikan sa usa ka account ngadto sa lain. Busa unsa ang gasto kanamo sa pagtukod og PoC?

  • Kinahanglan nga tun-an ang blockchain sa kinatibuk-an ug labi na ang Hyperledger Fabric;
  • Pagkat-on unsaon paggamit sa IBM o Amazon clouds;
  • Pagkat-on sa JS programming language ug pipila ka web framework;
  • Kung ang pipila ka mga datos kinahanglan nga tipigan dili sa blockchain, apan sa usa ka bulag nga database, unya pagkat-on unsaon pag-integrate, pananglitan, sa PostgreSQL;
  • Ug ang katapusan apan dili labing gamay - nga wala’y kahibalo sa Linux sa modernong kalibutan, wala bisan diin!)

Siyempre, dili rocket science, apan kinahanglang singot ka!

Mga tinubdan sa GitHub

Gibutang ang mga tinubdan GitHub. Mubo nga paghulagway sa repository:
Katalogo "serverΒ»- Node.js server
Katalogo "kliyenteΒ» - kliyente sa Node.js
Katalogo "blockchainΒ» (mga bili sa mga parameter ug mga yawe, siyempre, dili nagtrabaho ug gihatag lamang alang sa pananglitan):

  • kontrata β€” intelihenteng tinubdan sa kontrata
  • pitaka - mga yawe sa tiggamit alang sa paggamit sa Hyperledger Fabric API.
  • *.cds - gihugpong nga mga bersyon sa mga smart nga kontrata
  • *.json files - mga pananglitan sa configuration files para sa paggamit sa Hyperledger Fabric API

Sinugdanan pa lang!

Source: www.habr.com

Idugang sa usa ka comment