Blockchain: inona no PoC tokony hamboarintsika?

Matahotra ny masonao ary mangidihidy ny tananao!

Ao amin'ny lahatsoratra teo aloha, dia niresaka momba ny teknolojia izay nananganana blockchains (Inona no tokony hataontsika blockchain?) sy ireo tranga azo ampiharina miaraka amin'ny fanampiany (Nahoana isika no tokony hanangana raharaha?). Fotoana hiasa amin'ny tananao izao! Mba hampiharana ny mpanamory sy ny PoC (Proof of Concept), aleoko mampiasa ny rahona, satria... azo idirana na aiza na aiza eto amin'izao tontolo izao ary matetika, tsy mila mandany fotoana amin'ny fametrahana ny tontolo iainana mandreraka, satria Misy configures preset. Noho izany, andeha isika hanao zavatra tsotra, ohatra, tambajotra amin'ny famindrana vola madinika eo amin'ny mpandray anjara ary ndao hiantso azy io amin'ny fomba maotina Bitcoin. Ho an'izany dia hampiasa ny rahona IBM sy ny Hyperledger Fabric blockchain manerantany isika. Voalohany, andeha hojerentsika hoe nahoana ny Hyperledger Fabric no antsoina hoe blockchain universal?

Blockchain: inona no PoC tokony hamboarintsika?

Hyperledger Fabric - sakana manerantany

Amin'ny ankapobeny, ny rafitra fampahalalam-baovao manerantany dia:

  • Sehatry ny mpizara sy ny fototry ny rindrambaiko izay manatanteraka lojika raharaham-barotra;
  • Fifandraisana amin'ny rafitra;
  • Fitaovana fisoratana anarana, fanamarinana ary fanomezan-dΓ lana ny fitaovana/olona;
  • Mitahiry angon-drakitra momba ny asa sy arisiva:

Blockchain: inona no PoC tokony hamboarintsika?

Ny dikan-teny ofisialin'ny Hyperledger Fabric dia azo vakiana ao tranonkala, ary raha fintinina, Hyperledger Fabric dia sehatra opensource izay ahafahanao manangana blockchains manokana ary manatanteraka fifanarahana marani-tsaina tsy misy dikany voasoratra amin'ny fiteny fandaharana JS sy Go. Andeha hojerentsika amin'ny antsipiriany ny maritrano amin'ny Hyperledger Fabric ary ho azo antoka fa ity dia rafitra manerantany izay tsy misy afa-tsy amin'ny fitehirizana sy firaketana angon-drakitra. Ny tena manokana dia ny angon-drakitra, toy ny amin'ny blockchains rehetra, dia voatahiry ao anaty sakana izay apetraka amin'ny blockchain raha tsy misy ny marimaritra iraisana ny mpandray anjara ary aorian'ny firaketana ny angon-drakitra dia tsy azo ahitsy na voafafa.

Hyperledger Fabric Architecture

Ny kisary dia mampiseho ny rafitra Hyperledger Fabric:

Blockchain: inona no PoC tokony hamboarintsika?

fikambanana - ny fikambanana dia misy mpiara-miasa, i.e. misy ny blockchain noho ny fanohanan'ny fikambanana. Ny fikambanana samihafa dia mety ho anisan'ny fantsona iray ihany.

fantsona - rafitra lojika izay mampiray ny mitovy aminy ho vondrona, i.e. voatondro ny blockchain. Ny Hyperledger Fabric dia afaka manodina sakana maromaro miaraka amin'ny lojika fandraharahana samihafa.

Mpanome serivisy ho mpikambana (MSP) dia CA (Fahefana fanamarinana) amin'ny famoahana ny maha-izy azy sy ny fanomezana andraikitra. Mba hamoronana node dia mila mifandray amin'ny MSP ianao.

Peer nodes - manamarina ny fifampiraharahana, mitahiry ny blockchain, manatanteraka fifanarahana marani-tsaina ary mifandray amin'ny fampiharana. Ny namana dia manana ny maha-izy azy (certificat nomerika), izay navoakan'ny MSP. Tsy toy ny tamba-jotra Bitcoin na Etherium, izay manana zo mitovy ny nodes rehetra, ao amin'ny Hyperledger Fabric nodes dia samy manana andraikitra samihafa:

  • Peer angamba mpiara-miasa (EP) ary manatanteraka fifanarahana marani-tsaina.
  • Fanoloran-tena mitovy (CP) - mitahiry angon-drakitra ao amin'ny blockchain ary manavao ny "fanjakan'izao tontolo izao".
  • Vatofantsika Peer (AP) - raha misy fikambanana maromaro mandray anjara amin'ny blockchain, dia ampiasaina amin'ny fifandraisana eo amin'izy ireo ny mpiara-miasa. Ny fikambanana tsirairay dia tsy maintsy manana namana vatofantsika iray na maromaro. Amin'ny fampiasana AP, ny mpiara-mianatra rehetra ao amin'ny fikambanana dia afaka mahazo vaovao momba ny namana rehetra ao amin'ny fikambanana hafa. Ampiasaina mba hampifanaraka ny vaovao eo amin'ny AP protocole fifosana.
  • Leader Peer - raha manana mpiara-miasa maromaro ny fikambanana iray, dia ny mpitarika ny mpiara-mianatra ihany no hahazo sakana avy amin'ny serivisy famandrihana ary hanome izany ho an'ny mpiara-miasa hafa. Ny mpitarika dia azo faritana amin'ny fomba static na voafantina amin'ny fomba mavitrika ataon'ny mpiara-miasa ao amin'ny fikambanana. Ny protocol gossip dia ampiasaina koa mba hampifanaraka ny vaovao momba ny mpitarika.

fananana - sampana manana sanda ary voatahiry ao amin'ny blockchain. Amin'ny ankapobeny, ity dia angon-drakitra manan-danja amin'ny endrika JSON. Io angon-drakitra io no voarakitra ao amin'ny Blockchain. Manana tantara izy ireo, izay voatahiry ao amin'ny blockchain, ary fanjakana ankehitriny, izay voatahiry ao amin'ny tahiry "World state". Ny firafitry ny angon-drakitra dia fenoina tsy misy dikany arakaraka ny asa fandraharahana. Tsy misy saha takiana, ny hany tolo-kevitra dia ny fananana dia tsy maintsy manana tompony ary sarobidy.

masiaka natao tamintsika - dia ahitana ny Blockchain sy ny angon-drakitra fanjakana Word, izay mitahiry ny toetry ny fananana ankehitriny. Ny fanjakana eran-tany dia mampiasa LevelDB na CouchDB.

Smart fifanarahana - amin'ny fampiasana fifanarahana marani-tsaina, ny lojikan'ny orinasan'ny rafitra dia ampiharina. Ao amin'ny Hyperledger Fabric, ny fifanarahana hendry dia antsoina hoe chaincode. Ny fampiasana chaincode, ny fananana sy ny fifampiraharahana amin'izy ireo dia voafaritra. Amin'ny lafiny teknika, ny fifanarahana marani-tsaina dia maody rindrambaiko ampiharina amin'ny fiteny fandaharana JS na Go.

Politika fanohanana - ho an'ny kaody rojo tsirairay dia azonao atao ny mametraka politika momba ny isan'ny fanamafisana ho an'ny fifampiraharahana tokony andrasana ary avy amin'iza. Raha toa ka tsy napetraka ny politika, dia ny default dia: "tsy maintsy hohamafisin'ny mpikambana rehetra ao amin'ny fantsona ny fifampiraharahana." Ohatra amin'ny politika:

  • Ny fifampiraharahana dia tsy maintsy ankatoavin'ny mpitantana ny fikambanana;
  • Tsy maintsy hamafisin'ny mpikambana na mpanjifan'ny fikambanana;
  • Tsy maintsy hamafisin'ny fikambanana mitovy aminy.

Serivisy manafatra - mametaka ny fifampiraharahana ho blocs ary mandefa azy ireo amin'ny mpiara-miasa ao amin'ny fantsona. Miantoka ny fandefasana hafatra amin'ny mpiara-miasa rehetra amin'ny tambajotra. Ampiasaina amin'ny rafitra indostrialy Kafka message broker, ho an'ny fampandrosoana sy fitsapana Solo.

CallFlow

Blockchain: inona no PoC tokony hamboarintsika?

  • Ny fampiharana dia mifandray amin'ny Hyperledger Fabric mampiasa Go, Node.js na Java SDK;
  • Mamorona fifampiraharahana tx ny mpanjifa ary mandefa izany amin'ny mpiara-mianatra manohana azy;
  • Ny Peer dia manamarina ny sonian'ny mpanjifa, mamita ny fifampiraharahana, ary mamerina ny sonia fanohanana amin'ny mpanjifa. Ny Chaincode dia tanterahina amin'ny mpiara-miasa ihany, ary ny vokatry ny fanatanterahana azy dia alefa any amin'ny mpiara-miasa rehetra. Ity algorithm amin'ny asa ity dia antsoina hoe PBFT (Practical Byzantine Fault Tolerant) consensus. Tsy mitovy amin'ny Classic BFT ny hoe alefa ny hafatra sy ny fanamafisana dia tsy andrasana amin'ny mpandray anjara rehetra, fa avy amin'ny andian-dahatsoratra iray ihany;
  • Rehefa voarain'ny mpanjifa ny isan'ny valiny mifanaraka amin'ny politikan'ny fankatoavana, dia alefany any amin'ny serivisy famandrihana ny varotra;
  • Ny serivisy Ordering dia mamorona sakana ary mandefa izany amin'ny mpiara-miasa rehetra. Ny serivisy famandrihana dia miantoka ny firaketana an-tsoratra ny sakana, izay manafoana ilay antsoina hoe fork ledger (jereo ny fizarana "Forks");
  • Ny mpiara-mianatra dia mahazo sakana, jereo indray ny politikan'ny fankatoavana, soraty amin'ny sakana ny sakana ary ovay ny fanjakana ao amin'ny DB "Fanjakana manerantany".

Ireo. Izany dia miteraka fizarazarana andraikitra eo amin'ireo nodes. Izany dia miantoka fa ny blockchain dia azo ekena sy azo antoka:

  • Ny fifanarahana marani-tsaina (chaincode) dia manatanteraka mpiara-miasa manohana. Izany dia miantoka ny tsiambaratelon'ny fifanarahana marani-tsaina, satria tsy voatahiry amin'ny mpandray anjara rehetra izany, fa amin'ny fanohanana ny mpiara-mianatra ihany.
  • Tokony hiasa haingana ny baiko. Izany dia azo antoka amin'ny zava-misy fa ny Ordering dia mamorona sakana fotsiny ary mandefa izany amin'ny vondron'ny mpitarika mitovy aminy.
  • Ny faneken'ny mpiara-mianatra ihany no mitahiry ny blockchain - mety ho maro amin'izy ireo ary tsy mila hery be sy miasa eo noho eo.

Ny antsipiriany bebe kokoa momba ny vahaolana ara-javakanto an'ny Hyperledger Fabric sy ny antony miasa toy izany fa tsy raha tsy izany dia hita eto: Origins Architecture na eto: Lamba Hyperledger: Rafitra fiasana zaraina ho an'ny Blockchains nahazo alalana.

Noho izany, ny Hyperledger Fabric dia rafitra iray manerantany izay ahafahanao:

  • Mampihatra lojika fandraharahana tsy misy dikany amin'ny alΓ lan'ny mekanika fifanarahana marani-tsaina;
  • Raketo sy raiso ny angona avy amin'ny tahiry blockchain amin'ny endrika JSON;
  • Omeo sy hamarino ny fidirana API amin'ny alΓ lan'ny Certificate Authority.

Ankehitriny rehefa mahazo kely momba ny mombamomba ny Hyperledger Fabric isika, andao hanao zavatra mahasoa!

Mampiasa blockchain

Fanambarana olana

Ny asa dia ny fampiharana ny tambajotra Citcoin miaraka amin'ireto fiasa manaraka ireto: mamorona kaonty, mahazo fifandanjana, manangana ny kaontinao, mamindra vola avy amin'ny kaonty iray mankany amin'ny iray hafa. Andao hanao sary modely amin'ny zavatra iray, izay hampiharintsika bebe kokoa amin'ny fifanarahana marani-tsaina. Noho izany, hanana kaonty izay fantatra amin'ny anarana isika ary misy fifandanjana, ary lisitry ny kaonty. Ny kaonty sy ny lisitry ny kaonty dia, amin'ny resaka fananan'ny Hyperledger Fabric. Araka izany, manana tantara sy fanjakana ankehitriny izy ireo. Hiezaka aho hanao sary mazava tsara ity:

Blockchain: inona no PoC tokony hamboarintsika?

Ny tarehimarika ambony dia ny fanjakana ankehitriny, izay voatahiry ao amin'ny tahiry "World state". Ireto ambany ireto ny tarehimarika mampiseho ny tantara voatahiry ao amin'ny blockchain. Ovain'ny fifampiraharahana ny toetry ny fananana ankehitriny. Ny Asset dia miova amin'ny ankapobeny ihany, ka vokatry ny fifampiraharahana dia misy zavatra vaovao noforonina, ary miditra amin'ny tantara ny sandan'ny fananana ankehitriny.

IBM Cloud

Mamorona kaonty ao amin'ny IBM rahona. Raha hampiasa ny sehatra blockchain, dia tsy maintsy havaozina ho Pay-As-You-Go. Mety tsy ho haingana izany dingana izany, satria... Mangataka fampahalalana fanampiny ny IBM ary manamarina izany amin'ny tanana. Amin'ny fanamarihana tsara, afaka milaza aho fa manana fitaovana fanofanana tsara ny IBM izay ahafahanao mametraka Hyperledger Fabric ao amin'ny rahona. Tiako ireto andian-dahatsoratra sy ohatra manaraka ireto:

Ireto manaraka ireto ny pikantsarin'ny sehatra IBM Blockchain. Tsy torolΓ lana momba ny fomba hamoronana blockchain izany, fa fanehoana fotsiny ny sahan'ny asa. Noho izany, ho an'ny tanjonay dia manao Fikambanana iray izahay:

Blockchain: inona no PoC tokony hamboarintsika?

Mamorona nodes ao anatiny izahay: Orderer CA, Org1 CA, Orderer Peer:

Blockchain: inona no PoC tokony hamboarintsika?

Mamorona mpampiasa izahay:

Blockchain: inona no PoC tokony hamboarintsika?

Mamorona fantsona ary antsoy hoe citcoin:

Blockchain: inona no PoC tokony hamboarintsika?

Amin'ny ankapobeny dia blockchain ny Channel, noho izany dia manomboka amin'ny sakana aotra (Genesisy block):

Blockchain: inona no PoC tokony hamboarintsika?

Manoratra fifanarahana 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;

Intuitively, ny zava-drehetra dia tokony ho mazava eto:

  • Misy fiasa maromaro (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) izay hiantsoan'ny programa demo amin'ny fampiasana ny Hyperledger Fabric API.
  • Ny asa SendFrom sy RefillBalance dia miteraka hetsika izay ho azon'ny programa demo.
  • Antsoina indray mandeha ny fiasa instantiate rehefa misy fifanarahana marani-tsaina. Raha ny marina, tsy indray mandeha ihany no iantsoana azy, fa isaky ny miova ny dikan-teny smart contract. Noho izany, ny fanombohana lisitra miaraka amin'ny array foana dia hevitra ratsy, satria Ankehitriny, rehefa manova ny dikan'ny fifanarahana marani-tsaina isika dia ho very ny lisitra ankehitriny. Fa tsy maninona, vao mianatra aho).
  • Ny kaonty sy ny lisitry ny kaonty dia rafitra data JSON. JS dia ampiasaina amin'ny fanodinkodinana angona.
  • Azonao atao ny mahazo ny sandan'ny fananana amin'izao fotoana izao amin'ny alΓ lan'ny antso fampiasa getState, ary manavao izany amin'ny fampiasana putState.
  • Rehefa mamorona kaonty dia antsoina ny fiasa AddAccount, izay anaovana fampitahana ho an'ny kaonty ambony indrindra ao amin'ny blockchain (maxAccounts = 5). Ary eto dia misy jamb (efa voamarikao ve?), izay mitarika ho amin'ny fitomboana tsy misy farany ny isan'ny kaonty. Tokony hohalavirina ny fahadisoana toy izany)

Avy eo, ampidirinay ao amin'ny Channel ny fifanarahana marani-tsaina ary apetrakay:

Blockchain: inona no PoC tokony hamboarintsika?

Andeha hojerentsika ny fifampiraharahana amin'ny fametrahana Smart Contract:

Blockchain: inona no PoC tokony hamboarintsika?

Andeha hojerentsika ny antsipiriany momba ny Channel:

Blockchain: inona no PoC tokony hamboarintsika?

Vokatr'izany dia mahazo ity kisary manaraka ity amin'ny tambajotra blockchain ao amin'ny rahona IBM isika. Ny kisary koa dia mampiseho programa demo mandeha amin'ny rahona Amazon amin'ny mpizara virtoaly (miresaka bebe kokoa momba izany ao amin'ny fizarana manaraka):

Blockchain: inona no PoC tokony hamboarintsika?

Mamorona GUI ho an'ny Hyperledger Fabric API antso

Hyperledger Fabric dia manana API azo ampiasaina amin'ny:

  • Mamorona fantsona;
  • Ny fifandraisana dia mitovy amin'ny fantsona;
  • Fametrahana sy fametrahana fifanarahana marani-tsaina ao amin'ny fantsona;
  • Fiantsoana fifanakalozana;
  • Mangataha fampahalalana momba ny blockchain.

Fampivoarana fampiharana

Ao amin'ny programa demo dia hampiasa ny API fotsiny izahay hiantso ny fifanakalozana sy hangataka fampahalalana, satria Efa nahavita ny dingana sisa tamin'ny fampiasana ny sehatra blockchain IBM izahay. Manoratra GUI izahay amin'ny fampiasana stack teknolojia mahazatra: Express.js + Vue.js + Node.js. Azonao atao ny manoratra lahatsoratra mitokana momba ny fomba hanombohana ny famoronana rindranasa an-tranonkala maoderina. Eto aho dia hamela rohy mankany amin'ireo andiana lahateny izay tiako indrindra: Full Stack Web App mampiasa Vue.js & Express.js. Ny vokatr'izany dia fampiharana mpanjifa-server miaraka amin'ny interface an-tsary mahazatra amin'ny fomba famolavolana Material an'ny Google. Ny REST API eo anelanelan'ny mpanjifa sy ny mpizara dia misy antso maromaro:

  • HyperledgerDemo/v1/init - manomboka ny blockchain;
  • HyperledgerDemo/v1/accounts/list β€” mahazo lisitry ny kaonty rehetra;
  • HyperledgerDemo/v1/account?name=Bob&balance=100 β€” mamorona kaonty Bob;
  • HyperledgerDemo/v1/info?account=Bob β€” maka vaovao momba ny kaonty Bob;
  • HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 β€” mamindra vola madinika roa avy amin'i Bob mankany Alice;
  • HyperledgerDemo/v1/disconnect - manakatona ny fifandraisana amin'ny blockchain.

Famaritana ny API miaraka amin'ny ohatra tafiditra ao Tranonkala Postman - programa fanta-daza amin'ny fitiliana HTTP API.

Fampiharana demo amin'ny rahona Amazon

Nalefako tany amin'ny Amazon ilay fampiharana satria... IBM dia mbola tsy afaka nanavao ny kaontiko ary namela ahy hamorona mpizara virtoaly. Ahoana ny fomba hanampiana serizy amin'ny sehatra: www.citcoin.info. Hatahiko vetivety ny mpizara, dia vonoina, satria... mitete ny cents ho an'ny hofan-trano, ary ny vola madinika citcoin dia tsy mbola voatanisa ao amin'ny fifanakalozana) Ampidiriko ao amin'ny lahatsoratra ny pikantsary momba ny demo mba hazava ny lojika amin'ny asa. Ny fampiharana demo dia afaka:

  • Atombohy ny blockchain;
  • Mamorona kaonty (fa tsy afaka mamorona kaonty vaovao ianao, satria ny isan'ny kaonty ambony indrindra voalaza ao amin'ny fifanarahana marani-tsaina dia tratra tao amin'ny blockchain);
  • Mahazoa lisitry ny kaonty;
  • Mamindra vola madinika citcoin eo anelanelan'i Alice, Bob ary Alex;
  • Mandraisa hetsika (fa ankehitriny tsy misy fomba hanehoana hetsika, noho izany ho an'ny fahatsorana, ny interface dia milaza fa tsy tohanana ny hetsika);
  • Log actions.

Voalohany dia manomboka ny blockchain isika:

Blockchain: inona no PoC tokony hamboarintsika?

Manaraka, mamorona ny kaontintsika isika, aza mandany fotoana amin'ny fifandanjana:

Blockchain: inona no PoC tokony hamboarintsika?

Mahazo lisitry ny kaonty rehetra misy izahay:

Blockchain: inona no PoC tokony hamboarintsika?

Mifidy ny mpandefa sy ny mpandray izahay, ary maka ny mizana. Raha mitovy ny mpandefa sy ny mpandray, dia hofenoina ny kaontiny:

Blockchain: inona no PoC tokony hamboarintsika?

Ao amin'ny log dia manara-maso ny fanatanterahana ny fifampiraharahana izahay:

Blockchain: inona no PoC tokony hamboarintsika?

Raha ny marina, izany rehetra izany dia miaraka amin'ny programa demo. Eto ambany ianao dia afaka mahita ny fifanakalozanay amin'ny blockchain:

Blockchain: inona no PoC tokony hamboarintsika?

Ary ny lisitra ankapobeny ny raharaham-barotra:

Blockchain: inona no PoC tokony hamboarintsika?

Miaraka amin'izany, nahavita soa aman-tsara ny fampiharana ny PoC izahay mba hamoronana ny tambajotra Citcoin. Inona koa no tokony hatao mba hahatonga ny Citcoin ho tambajotra feno amin'ny famindrana vola madinika? Tena kely:

  • Eo amin'ny sehatry ny famoronana kaonty, ampiharo ny famoronana fanalahidy manokana/bahoaka. Ny fanalahidy manokana dia tsy maintsy tahirizina miaraka amin'ny mpampiasa kaonty, ny fanalahidin'ny daholobe dia tsy maintsy tehirizina ao amin'ny blockchain.
  • Manaova famindrana vola madinika izay misy fanalahidin'ny daholobe, fa tsy anarana, ampiasaina hamantarana ny mpampiasa.
  • Ampidiro ny fifampiraharahana avy amin'ny mpampiasa mankany amin'ny mpizara miaraka amin'ny fanalahidiny manokana.

famaranana

Nampihatra ny tambajotra Citcoin izahay miaraka amin'ireto fiasa manaraka ireto: ampio kaonty, alao ny fifandanjana, ampio ny kaontinao, famindrana vola avy amin'ny kaonty iray mankany amin'ny iray hafa. Noho izany, inona no nafoinay tamin'ny fananganana PoC?

  • Mila mianatra blockchain amin'ny ankapobeny ianao ary Hyperledger Fabric manokana;
  • Mianara mampiasa rahona IBM na Amazon;
  • Mianara ny fiteny fandaharana JS sy ny rafitra tranonkala sasany;
  • Raha misy angon-drakitra sasany mila tehirizina tsy ao amin'ny blockchain, fa amin'ny tahiry manokana, dia mianara mampiditra, ohatra, amin'ny PostgreSQL;
  • Ary farany fa tsy ny kely indrindra - tsy afaka miaina amin'ny tontolo maoderina ianao raha tsy manana fahalalana Linux!)

Mazava ho azy fa tsy siansa rocket izany, fa tsy maintsy miasa mafy ianao!

Loharano ao amin'ny GitHub

Napetraka ny loharano GitHub. Famaritana fohy momba ny tahiry:
Catalog Β«mpizaraΒ» β€” mpizara Node.js
Catalog Β«mpanjifaΒ» β€” mpanjifa Node.js
Catalog Β«blockchain"(Ny soatoavina sy ny fanalahidy, mazava ho azy, dia tsy miasa ary omena ohatra fotsiny):

  • fifanarahana β€” smart contract source code
  • poketra β€” fanalahidin'ny mpampiasa amin'ny fampiasana ny Hyperledger Fabric API.
  • *.cds - dikan-teny natambatra amin'ny fifanarahana marani-tsaina
  • *.json files - ohatra amin'ny fisie fisie amin'ny fampiasana ny Hyperledger Fabric API

Vao fiandohana ihany izany!

Source: www.habr.com

Add a comment