Blockchain: PoC tiyenera kumanga chiyani?

Maso anu ali ndi mantha ndipo manja anu akuyabwa!

M'nkhani zam'mbuyomu, tidachita ndi matekinoloje omwe blockchains amamangidwa (Kodi tiyenera kupanga blockchain chiyani?) ndi milandu yomwe ingagwiritsidwe ntchito ndi chithandizo chawo (Chifukwa chiyani tiyenera kupanga mlandu?). Yakwana nthawi yogwira ntchito ndi manja anu! Kukhazikitsa oyendetsa ndege ndi PoC (Proof of Concept), ndimakonda kugwiritsa ntchito mitambo, chifukwa... atha kupezeka kulikonse padziko lapansi ndipo, nthawi zambiri, palibe chifukwa chotaya nthawi pakuyika kotopetsa kwa chilengedwe, chifukwa Pali masinthidwe okonzedweratu. Chifukwa chake, tiyeni tipange chinthu chosavuta, mwachitsanzo, netiweki yosinthira ndalama pakati pa omwe atenga nawo mbali ndipo tiyeni tiyitchule modzichepetsa kuti Bitcoin. Kwa ichi tidzagwiritsa ntchito mtambo wa IBM ndi universal blockchain Hyperledger Fabric. Choyamba, tiyeni tiwone chifukwa chake Hyperledger Fabric imatchedwa universal blockchain?

Blockchain: PoC tiyenera kumanga chiyani?

Hyperledger Fabric - blockchain yapadziko lonse lapansi

Nthawi zambiri, chidziwitso chapadziko lonse lapansi ndi:

  • Seti ya ma seva ndi maziko a mapulogalamu omwe amapanga malingaliro abizinesi;
  • Mawonekedwe okhudzana ndi dongosolo;
  • Zida zolembera, kutsimikizira ndi kuvomereza zipangizo / anthu;
  • Kusunga deta yogwira ntchito ndi zakale:

Blockchain: PoC tiyenera kumanga chiyani?

Mtundu wovomerezeka wa Hyperledger Fabric ukhoza kuwerengedwa malo, ndipo mwachidule, Hyperledger Fabric ndi nsanja yotseguka yomwe imakulolani kuti mupange ma blockchains apadera ndikuchita mapangano anzeru olembedwa m'zilankhulo za JS ndi Go. Tiyeni tiwone mwatsatanetsatane kamangidwe ka Hyperledger Fabric ndikuwonetsetsa kuti iyi ndi dongosolo lapadziko lonse lapansi lomwe lili ndi zenizeni zosungira ndi kujambula deta. Chodziwika bwino ndi chakuti deta, monga mu blockchains onse, imasungidwa muzitsulo zomwe zimayikidwa pa blockchain pokhapokha ngati ophunzira afika pa mgwirizano ndipo atatha kujambula deta sangathe kukonzedwa mwakachetechete kapena kuchotsedwa.

Hyperledger Fabric Architecture

Chithunzichi chikuwonetsa kapangidwe ka Hyperledger Fabric:

Blockchain: PoC tiyenera kumanga chiyani?

Mipingo - mabungwe ali ndi anzawo, i.e. blockchain ilipo chifukwa chothandizidwa ndi mabungwe. Mabungwe osiyanasiyana akhoza kukhala mbali ya njira imodzi.

Channel - dongosolo lomveka lomwe limagwirizanitsa anzawo m'magulu, i.e. blockchain yafotokozedwa. Hyperledger Fabric imatha kukonza nthawi imodzi ma blockchain angapo okhala ndi malingaliro osiyanasiyana abizinesi.

Wothandizira Umembala (MSP) ndi CA (Certificate Authority) popereka zidziwitso ndikugawa maudindo. Kuti mupange node, muyenera kulumikizana ndi MSP.

Zolemba za anzawo - Tsimikizani zochitika, sungani blockchain, chitani mapangano anzeru ndikulumikizana ndi mapulogalamu. Anzako ali ndi chizindikiritso (satifiketi ya digito), yomwe imaperekedwa ndi MSP. Mosiyana ndi netiweki ya Bitcoin kapena Etherium, pomwe ma node onse ali ndi ufulu wofanana, mu Hyperledger Fabric node zimagwira ntchito zosiyanasiyana:

  • Penyani mwina kuvomereza anzako (EP) ndikuchita mapangano anzeru.
  • Kudzipereka kwa anzawo (CP) - ingosungani deta mu blockchain ndikusintha "dziko lonse lapansi".
  • Anchor Peer (AP) - ngati mabungwe angapo atenga nawo gawo mu blockchain, ndiye kuti anzawo a nangula amagwiritsidwa ntchito polumikizana pakati pawo. Gulu lirilonse liyenera kukhala ndi mnzako mmodzi kapena angapo. Pogwiritsa ntchito AP, mnzake aliyense m'bungwe atha kudziwa zambiri za anzawo m'mabungwe ena. Amagwiritsidwa ntchito kulumikiza zambiri pakati pa ma AP miseche protocol.
  • Mtsogoleri Peer - ngati bungwe liri ndi anzawo angapo, ndiye mtsogoleri yekha wa anzawo adzalandira midadada kuchokera ku utumiki wa Kuyitanitsa ndikuwapatsa anzawo ena onse. Mtsogoleriyo atha kufotokozedwa mokhazikika kapena kusankhidwa mokhazikika ndi anzawo m'bungwe. Ndondomeko ya miseche imagwiritsidwanso ntchito kulumikiza zambiri za atsogoleri.

Zosowa - mabungwe omwe ali ndi mtengo ndipo amasungidwa pa blockchain. Makamaka, iyi ndi data yamtengo wapatali mumtundu wa JSON. Ndi deta iyi yomwe imalembedwa mu Blockchain. Iwo ali ndi mbiri yakale, yomwe imasungidwa mu blockchain, ndi dziko lamakono, lomwe limasungidwa mu "World state" database. Ma data amadzazidwa mosasamala kutengera ntchito zamabizinesi. Palibe minda yofunikira, malingaliro okhawo ndikuti katundu ayenera kukhala ndi eni ake ndikukhala ofunikira.

Ledger - ili ndi Blockchain ndi Word state database, yomwe imasunga zomwe zilipo panopa. Dziko lapansi limagwiritsa ntchito LevelDB kapena CouchDB.

Makhalidwe abwino - Pogwiritsa ntchito makontrakitala anzeru, malingaliro abizinesi adongosolo amakwaniritsidwa. Mu Hyperledger Fabric, mapangano anzeru amatchedwa chaincode. Pogwiritsa ntchito chaincode, katundu ndi zochitika pa iwo zimatchulidwa. M'mawu aukadaulo, makontrakitala anzeru ndi ma module apulogalamu omwe amakhazikitsidwa m'zilankhulo za JS kapena Go.

Ndondomeko yotsimikizira - pa chaincode iliyonse, mutha kukhazikitsa ndondomeko ya kuchuluka kwa zitsimikizo zomwe ziyenera kuyembekezera komanso kuchokera kwa ndani. Ngati lamuloli silinakhazikitsidwe, ndiye kuti chokhazikika ndi: "ntchitoyo iyenera kutsimikiziridwa ndi membala aliyense wa bungwe lililonse panjira." Zitsanzo za ndondomeko:

  • Ntchitoyi iyenera kuvomerezedwa ndi woyang'anira aliyense wa bungwe;
  • Ayenera kutsimikiziridwa ndi membala aliyense kapena kasitomala wa bungwe;
  • Iyenera kutsimikiziridwa ndi gulu lililonse la anzawo.

Kuyitanitsa utumiki - amalongedza zochitika mu midadada ndikuzitumiza kwa anzawo panjira. Zimatsimikizira kutumizidwa kwa mauthenga kwa anzanu onse pa intaneti. Amagwiritsidwa ntchito pamakampani Kafka message broker, kwa chitukuko ndi kuyesa payekha.

CallFlow

Blockchain: PoC tiyenera kumanga chiyani?

  • Pulogalamuyi imalumikizana ndi Hyperledger Fabric pogwiritsa ntchito Go, Node.js kapena Java SDK;
  • Wothandizira amapanga malonda a tx ndikutumiza kwa anzawo ovomerezeka;
  • Peer imatsimikizira siginecha ya kasitomala, kumaliza ntchitoyo, ndikutumiza siginecha yotsimikizira kwa kasitomala. Chaincode imangoperekedwa kwa mnzake wovomerezeka, ndipo zotsatira zake zimatumizidwa kwa anzawo onse. Algorithm iyi ya ntchito imatchedwa PBFT (Practical Byzantine Fault Tolerant) mgwirizano. Zimasiyana ndi BFT yapamwamba mfundo yakuti uthengawo umatumizidwa ndi kutsimikiziridwa sikuyembekezeredwa kuchokera kwa onse otenga nawo mbali, koma kuchokera ku gulu linalake;
  • Wothandizirayo atalandira chiwerengero cha mayankho omwe akugwirizana ndi ndondomeko yovomerezeka, amatumiza ntchitoyo ku Service Ordering;
  • Ntchito Yoyitanitsa imapanga chipika ndikuchitumiza kwa anzawo onse omwe akuchita. Ntchito yoyitanitsa imawonetsetsa kujambula motsatizana kwa midadada, komwe kumachotsa zomwe zimatchedwa ledger foloko (onani gawo "Forks");
  • Anzako amalandira chipika, fufuzaninso ndondomeko yovomerezeka, lembani chipikacho ku blockchain ndikusintha dziko mu "World state" DB.

Iwo. Izi zimabweretsa kugawanika kwa maudindo pakati pa mfundo. Izi zikuwonetsetsa kuti blockchain ndi yotetezeka komanso yotetezeka:

  • Ma contract anzeru (chaincode) amavomereza anzawo. Izi zimatsimikizira chinsinsi cha makontrakitala anzeru, chifukwa sichimasungidwa ndi onse otenga nawo mbali, koma povomereza anzawo.
  • Kuyitanitsa kuyenera kugwira ntchito mwachangu. Izi zimatsimikiziridwa ndi mfundo yakuti Kuyitanitsa kumangopanga chipika ndikutumiza ku gulu lokhazikika la anzawo amtsogoleri.
  • Anzako odzipereka amangosunga blockchain - pakhoza kukhala zambiri ndipo safuna mphamvu zambiri komanso kugwira ntchito nthawi yomweyo.

Zambiri pamayankho aukadaulo a Hyperledger Fabric ndi chifukwa chake zimagwira ntchito motere osati mwanjira ina zitha kupezeka apa: Zoyambira Zomangamanga kapena apa: Nsalu ya Hyperledger: Njira Yogwiritsira Ntchito Yogawika kwa Blockchains Ololedwa.

Chifukwa chake, Hyperledger Fabric ndi dongosolo lapadziko lonse lapansi lomwe mungathe:

  • Kukhazikitsa malingaliro abizinesi mosasamala pogwiritsa ntchito njira yanzeru yamakontrakitala;
  • Lembani ndi kulandira deta kuchokera ku blockchain database mumtundu wa JSON;
  • Perekani ndi kutsimikizira mwayi wa API pogwiritsa ntchito Certificate Authority.

Tsopano popeza tamvetsetsa pang'ono za Hyperledger Fabric, tiyeni tichitepo kanthu kothandiza!

Kutumiza blockchain

Kupanga kwa vuto

Ntchito ndikukhazikitsa maukonde a Citcoin ndi ntchito zotsatirazi: pangani akaunti, pezani ndalama, onjezerani akaunti yanu, tumizani ndalama kuchokera ku akaunti ina kupita ku ina. Tiyeni tijambule chitsanzo cha chinthu, chomwe tidzagwiritsanso ntchito mumgwirizano wanzeru. Chifukwa chake, tidzakhala ndi maakaunti omwe amadziwika ndi mayina ndipo amakhala ndi ndalama, komanso mndandanda wamaakaunti. Maakaunti ndi mndandanda wamaakaunti ali, malinga ndi katundu wa Hyperledger Fabric. Chifukwa chake, ali ndi mbiri yakale komanso momwe alili pano. Ndiyesera kujambula izi momveka bwino:

Blockchain: PoC tiyenera kumanga chiyani?

Ziwerengero zapamwamba ndi zomwe zilipo panopa, zomwe zimasungidwa mu "World state" database. Pansipa pali ziwerengero zomwe zikuwonetsa mbiri yakale yomwe imasungidwa mu blockchain. Zomwe zilipo panopa za katundu zimasinthidwa ndi zochitika. Chuma chimasintha chokhachokha, kotero chifukwa cha kugulitsako, chinthu chatsopano chimapangidwa, ndipo mtengo wamtengo wapatali wamtengo wapatali umalowa m'mbiri.

Mtengo wa IBM Cloud

Timapanga akaunti mu Mtengo wa IBM. Kuti mugwiritse ntchito nsanja ya blockchain, iyenera kukwezedwa kukhala Pay-As-You-Go. Izi sizingakhale zachangu, chifukwa ... IBM imapempha zambiri ndikuzitsimikizira pamanja. Pazabwino, ndinganene kuti IBM ili ndi zida zabwino zophunzitsira zomwe zimakulolani kuti mugwiritse ntchito Hyperledger Fabric mumtambo wawo. Ndakonda mndandanda wankhani ndi zitsanzo zotsatirazi:

Zotsatirazi ndizithunzi za nsanja ya IBM Blockchain. Ili si malangizo amomwe mungapangire blockchain, koma ndikuwonetsa kukula kwa ntchitoyo. Chifukwa chake, pazolinga zathu, timapanga Gulu limodzi:

Blockchain: PoC tiyenera kumanga chiyani?

Timapanga ma node mmenemo: Orderer CA, Org1 CA, Orderer Peer:

Blockchain: PoC tiyenera kumanga chiyani?

Timalenga ogwiritsa ntchito:

Blockchain: PoC tiyenera kumanga chiyani?

Pangani Channel ndikuyitcha citcoin:

Blockchain: PoC tiyenera kumanga chiyani?

Kwenikweni Channel ndi blockchain, kotero imayamba ndi block zero (Genesis block):

Blockchain: PoC tiyenera kumanga chiyani?

Kulemba Mgwirizano Wanzeru

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

Mwachidziwitso, zonse ziyenera kumveka bwino apa:

  • Pali ntchito zingapo (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) zomwe pulogalamu yachiwonetsero idzayitana pogwiritsa ntchito Hyperledger Fabric API.
  • Ntchito za SendFrom ndi RefillBalance zimapanga Zochitika zomwe pulogalamu yowonetsera idzalandire.
  • Ntchito ya instantiate imatchedwa kamodzi pamene mgwirizano wanzeru wakhazikitsidwa. M'malo mwake, imatchedwa osati kamodzi kokha, koma nthawi iliyonse mtundu wanzeru wa mgwirizano umasintha. Chifukwa chake, kuyambitsa mndandanda wopanda kanthu ndi lingaliro loyipa, chifukwa Tsopano, tikasintha mtundu wa mgwirizano wanzeru, tidzataya mndandanda wamakono. Koma zili bwino, ndikungophunzira).
  • Maakaunti ndi mndandanda wamaakaunti ndi ma data a JSON. JS imagwiritsidwa ntchito kusokoneza deta.
  • Mutha kupeza mtengo wamtengo wapatali pogwiritsa ntchito foni ya getState, ndikusintha pogwiritsa ntchito putState.
  • Popanga Akaunti, ntchito ya AddAccount imatchedwa, momwe kufananitsa kumapangidwira kuchuluka kwa akaunti mu blockchain (maxAccounts = 5). Ndipo apa pali jamb (kodi mwazindikira?), Zomwe zimapangitsa kuti chiwerengero cha akaunti chichuluke kosatha. Zolakwa zotere ziyenera kupewedwa)

Kenako, timayika mgwirizano wanzeru mu Channel ndikuyiyika:

Blockchain: PoC tiyenera kumanga chiyani?

Tiyeni tiwone zomwe zachitika pakukhazikitsa Smart Contract:

Blockchain: PoC tiyenera kumanga chiyani?

Tiyeni tiwone zambiri za Channel yathu:

Blockchain: PoC tiyenera kumanga chiyani?

Zotsatira zake, timapeza chithunzi chotsatira cha network blockchain mumtambo wa IBM. Chithunzichi chikuwonetsanso pulogalamu yachiwonetsero yomwe ikuyenda mumtambo wa Amazon pa seva yeniyeni (zambiri za izo mu gawo lotsatira):

Blockchain: PoC tiyenera kumanga chiyani?

Kupanga GUI ya Hyperledger Fabric API mafoni

Hyperledger Fabric ili ndi API yomwe ingagwiritsidwe ntchito ku:

  • Pangani njira;
  • Kulumikizana kumayang'ana ku njira;
  • Kukhazikitsa ndi kukhazikitsa mapangano anzeru munjira;
  • Kuyitana zochitika;
  • Funsani zambiri za blockchain.

Kupititsa patsogolo ntchito

Mu pulogalamu yathu yowonetsera tidzagwiritsa ntchito API kokha kuyitana zochitika ndikupempha zambiri, chifukwa Tatsiriza kale masitepe otsalawo pogwiritsa ntchito nsanja ya IBM blockchain. Timalemba GUI pogwiritsa ntchito stack yokhazikika yaukadaulo: Express.js + Vue.js + Node.js. Mukhoza kulemba nkhani ina ya momwe mungayambitsire kupanga mapulogalamu amakono a intaneti. Apa ndikusiya ulalo wamaphunziro angapo omwe ndimakonda kwambiri: Full Stack Web App pogwiritsa ntchito Vue.js & Express.js. Zotsatira zake ndi pulogalamu ya seva ya kasitomala yokhala ndi mawonekedwe odziwika bwino a Google Material Design. REST API pakati pa kasitomala ndi seva imakhala ndi mafoni angapo:

  • HyperledgerDemo/v1/init - yambitsani blockchain;
  • HyperledgerDemo/v1/accounts/list - pezani mndandanda wamaakaunti onse;
  • HyperledgerDemo/v1/account?name=Bob&balance=100 β€” pangani akaunti ya Bob;
  • HyperledgerDemo/v1/info?account=Bob β€” pezani zambiri za akaunti ya Bob;
  • HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 - kusamutsa makobidi awiri kuchoka ku Bob kupita ku Alice;
  • HyperledgerDemo/v1/disconnect - Tsekani kulumikizana ndi blockchain.

Kufotokozera kwa API yokhala ndi zitsanzo zophatikizidwa Webusaiti ya Postman - pulogalamu yodziwika bwino yoyesa HTTP API.

Ntchito ya demo mu mtambo wa Amazon

Ndatsitsa pulogalamu ku Amazon chifukwa ... IBM sinathebe kukweza akaunti yanga ndikundilola kupanga ma seva enieni. Momwe mungawonjezere chitumbuwa ku domain: www.citcoin.info. Ndiyimitsa seva kwakanthawi, kenako ndikuyimitsa, chifukwa ... masenti obwereketsa akutsika, ndipo ndalama za citcoin sizinatchulidwe pamalonda a masheya) Ndikuphatikiza zithunzi zachiwonetsero m'nkhaniyi kuti malingaliro a ntchitoyi amveke bwino. Pulogalamu ya demo ikhoza:

  • yambitsani blockchain;
  • Pangani Akaunti (koma tsopano simungathe kupanga Akaunti yatsopano, chifukwa kuchuluka kwa maakaunti omwe akufotokozedwa mumgwirizano wanzeru adafika mu blockchain);
  • Landirani mndandanda wa Akaunti;
  • Kusamutsa ndalama za citcoin pakati pa Alice, Bob ndi Alex;
  • Landirani zochitika (koma tsopano palibe njira yowonetsera zochitika, kotero kuti zikhale zosavuta, mawonekedwewo amanena kuti zochitika sizikuthandizidwa);
  • Zochita za log.

Choyamba, timayambitsa blockchain:

Blockchain: PoC tiyenera kumanga chiyani?

Kenako, timapanga akaunti yathu, osataya nthawi ndi ndalama:

Blockchain: PoC tiyenera kumanga chiyani?

Timapeza mndandanda wamaakaunti onse omwe alipo:

Blockchain: PoC tiyenera kumanga chiyani?

Timasankha wotumiza ndi wolandira, ndikupeza ndalama zawo. Ngati wotumiza ndi wolandira ali ofanana, ndiye kuti akaunti yake idzabwezeredwa:

Blockchain: PoC tiyenera kumanga chiyani?

Mu logi timayang'anira zochitika zamalonda:

Blockchain: PoC tiyenera kumanga chiyani?

Kwenikweni, ndizo zonse ndi pulogalamu yachiwonetsero. Pansipa mutha kuwona zomwe tikuchita mu blockchain:

Blockchain: PoC tiyenera kumanga chiyani?

Ndipo mndandanda wazinthu zonse zomwe zachitika:

Blockchain: PoC tiyenera kumanga chiyani?

Ndi izi, tatsiriza bwino kukhazikitsidwa kwa PoC kupanga ma network a Citcoin. Ndi chiyani chinanso chomwe chiyenera kuchitidwa kuti Citcoin ikhale network yonse yosamutsa ndalama? Zochepa kwambiri:

  • Popanga akaunti, khazikitsani kiyi yachinsinsi / pagulu. Kiyi yachinsinsi iyenera kusungidwa ndi wogwiritsa ntchito akaunti, kiyi yapagulu iyenera kusungidwa mu blockchain.
  • Pangani kusamutsa ndalama momwe kiyi yapagulu, osati dzina, imagwiritsidwa ntchito kuzindikira wogwiritsa ntchito.
  • Encrypt transactions kuchokera kwa wogwiritsa ntchito kupita ku seva ndi kiyi yake yachinsinsi.

Pomaliza

Takhazikitsa netiweki ya Citcoin ndi ntchito zotsatirazi: onjezani akaunti, pezani ndalama, onjezerani akaunti yanu, sinthani ndalama kuchokera ku akaunti ina kupita ku ina. Ndiye, zidatitengera chiyani kuti timange PoC?

  • Muyenera kuphunzira blockchain ambiri ndi Hyperledger Nsalu makamaka;
  • Phunzirani kugwiritsa ntchito IBM kapena Amazon mitambo;
  • Phunzirani chinenero cha pulogalamu ya JS ndi zina za intaneti;
  • Ngati deta ina iyenera kusungidwa osati mu blockchain, koma mu database yosiyana, ndiye phunzirani kuphatikiza, mwachitsanzo, ndi PostgreSQL;
  • Ndipo chomaliza - simungakhale m'dziko lamakono popanda kudziwa Linux!)

Inde, si sayansi ya rocket, koma muyenera kugwira ntchito mwakhama!

Sources pa GitHub

Magwero aikidwa GitHub. Kufotokozera mwachidule za nkhokwe:
Catalog Β«sevaΒ»- seva ya Node.js
Catalog Β«kasitomalaΒ»- Node.js kasitomala
Catalog Β«blockchain"(magawo ndi makiyi, ndithudi, sakugwira ntchito ndipo amangoperekedwa monga chitsanzo):

  • contract - smart contract source code
  • chikwama - makiyi ogwiritsa ntchito Hyperledger Fabric API.
  • *.cds - adapanga mitundu yamakontrakitala anzeru
  • * .json mafayilo - zitsanzo zamafayilo okonzekera kugwiritsa ntchito Hyperledger Fabric API

Ndi chiyambi chabe!

Source: www.habr.com

Kuwonjezera ndemanga