Blockchain: kini PoC yẹ ki a kọ?

Oju rẹ bẹru ati awọn ọwọ rẹ n nyún!

Ninu awọn nkan iṣaaju, a ṣe pẹlu awọn imọ-ẹrọ lori eyiti a kọ awọn blockchains (Kini o yẹ ki a kọ blockchain kan?) ati awọn ọran ti o le ṣe imuse pẹlu iranlọwọ wọn (Kini idi ti o yẹ ki a kọ ọran kan?). O to akoko lati ṣiṣẹ pẹlu ọwọ rẹ! Lati ṣe awọn awakọ ati PoC (Ẹri ti Erongba), Mo fẹ lati lo awọn awọsanma, nitori ... wọn le wọle si lati ibikibi ni agbaye ati, nigbagbogbo, ko si ye lati padanu akoko lori fifi sori ẹrọ ti ayika, nitori Awọn atunto tito tẹlẹ wa. Nitorinaa, jẹ ki a ṣe nkan ti o rọrun, fun apẹẹrẹ, nẹtiwọọki kan fun gbigbe awọn owó laarin awọn olukopa ati jẹ ki a ni iwọntunwọnsi pe Bitcoin. Fun eyi a yoo lo awọsanma IBM ati gbogbo blockchain Hyperledger Fabric. Ni akọkọ, jẹ ki a ro idi ti Hyperledger Fabric ti a pe ni blockchain gbogbo agbaye?

Blockchain: kini PoC yẹ ki a kọ?

Hyperledger Fabric - blockchain gbogbo agbaye

Ni gbogbogbo, eto alaye agbaye ni:

  • Eto ti awọn olupin ati mojuto sọfitiwia ti o ṣe iṣiro iṣowo;
  • Awọn atọkun fun ibaraenisepo pẹlu eto;
  • Awọn irinṣẹ fun iforukọsilẹ, ijẹrisi ati aṣẹ ti awọn ẹrọ / eniyan;
  • Ibi ipamọ data iṣẹ ṣiṣe ati data ipamọ:

Blockchain: kini PoC yẹ ki a kọ?

Ẹya osise ti ohun ti Hyperledger Fabric ni a le ka ni Aaye, ati ni kukuru, Hyperledger Fabric jẹ ipilẹ orisun ṣiṣi ti o fun ọ laaye lati kọ awọn blockchains ikọkọ ati ṣiṣe awọn adehun ọlọgbọn lainidii ti a kọ sinu awọn ede siseto JS ati Go. Jẹ ki a wo ni awọn alaye ni faaji ti Hyperledger Fabric ati rii daju pe eyi jẹ eto gbogbo agbaye ti o ni awọn pato nikan fun titoju ati gbigbasilẹ data. Ni pato ni pe data naa, gẹgẹbi ninu gbogbo awọn blockchains, ti wa ni ipamọ ni awọn bulọọki ti a gbe sori blockchain nikan ti awọn olukopa ba de ipohunpo kan ati lẹhin igbasilẹ data ko le ṣe atunṣe ni idakẹjẹ tabi paarẹ.

Hyperledger Fabric Architecture

Aworan naa fihan faaji aṣọ Hyperledger:

Blockchain: kini PoC yẹ ki a kọ?

Awọn ajo - awọn ajo ni awọn ẹlẹgbẹ, i.e. blockchain wa nitori atilẹyin ti awọn ajo. Awọn ajo oriṣiriṣi le jẹ apakan ti ikanni kanna.

ikanni — ilana ọgbọn ti o so awọn ẹlẹgbẹ pọ si awọn ẹgbẹ, i.e. blockchain ti wa ni pato. Aṣọ Hyperledger le ṣe ilana ọpọlọpọ awọn blockchain nigbakan pẹlu ọgbọn iṣowo oriṣiriṣi.

Olupese Awọn iṣẹ ọmọ ẹgbẹ (MSP) jẹ CA (Aṣẹ iwe-ẹri) fun ipinfunni idanimọ ati fifun awọn ipa. Lati ṣẹda ipade kan, o nilo lati ṣe ajọṣepọ pẹlu MSP.

Awọn apa ẹlẹgbẹ - ṣayẹwo awọn iṣowo, tọju blockchain, ṣiṣẹ awọn adehun ọlọgbọn ati ṣe ajọṣepọ pẹlu awọn ohun elo. Awọn ẹlẹgbẹ ni idanimọ (ijẹrisi oni-nọmba), eyiti MSP ti funni. Ko dabi Bitcoin tabi nẹtiwọọki Etherium, nibiti gbogbo awọn apa ni awọn ẹtọ dogba, ni awọn apa aṣọ Hyperledger ṣe awọn ipa oriṣiriṣi:

  • Ẹlẹgbẹ boya atilẹyin ẹlẹgbẹ (EP) ati ṣiṣe awọn adehun ọlọgbọn.
  • Olufaraji ẹlẹgbẹ (CP) - fipamọ data nikan ni blockchain ki o ṣe imudojuiwọn “ipinle agbaye”.
  • Anchor Ẹlẹgbẹ (AP) - ti ọpọlọpọ awọn ajo ba kopa ninu blockchain, lẹhinna a lo awọn ẹlẹgbẹ oran fun ibaraẹnisọrọ laarin wọn. Ẹgbẹ kọọkan gbọdọ ni ọkan tabi diẹ ẹ sii awọn ẹlẹgbẹ oran. Lilo AP, eyikeyi ẹlẹgbẹ ninu ajo le gba alaye nipa gbogbo awọn ẹlẹgbẹ ni awọn ajo miiran. Ti a lo lati mu alaye ṣiṣẹpọ laarin awọn AP ofofo Ilana.
  • Ẹlẹgbẹ Olori - ti o ba jẹ pe ajo kan ni ọpọlọpọ awọn ẹlẹgbẹ, lẹhinna olori ti ẹlẹgbẹ nikan yoo gba awọn ohun amorindun lati iṣẹ Ibere ​​ati fifun wọn si awọn ẹlẹgbẹ iyokù. Olori le jẹ pato ni iṣiro tabi yan ni agbara nipasẹ awọn ẹlẹgbẹ ninu ajo naa. Ilana olofofo naa tun lo lati mu alaye ṣiṣẹpọ nipa awọn oludari.

ìní - awọn nkan ti o ni iye ati ti wa ni ipamọ lori blockchain. Ni pataki diẹ sii, eyi jẹ data iye-bọtini ni ọna kika JSON. O jẹ data yii ti o gbasilẹ ni Blockchain. Wọn ni itan-akọọlẹ kan, eyiti o wa ni ipamọ ninu blockchain, ati ipo lọwọlọwọ, eyiti o wa ni ipamọ ni aaye data “Ipinlẹ Agbaye”. Awọn ẹya data ti kun lainidii da lori awọn iṣẹ ṣiṣe iṣowo. Ko si awọn aaye ti a beere, iṣeduro nikan ni pe awọn ohun-ini gbọdọ ni oniwun ati ki o niyelori.

Leja - oriširiši Blockchain ati database ipinle Ọrọ, eyiti o tọju ipo awọn ohun-ini lọwọlọwọ. Ipinle agbaye nlo LevelDB tabi CouchDB.

Adehun Smart - lilo awọn iwe adehun ọlọgbọn, ọgbọn iṣowo ti eto naa ni imuse. Ni Hyperledger Fabric, awọn adehun ọlọgbọn ni a pe ni chaincode. Lilo chaincode, awọn ohun-ini ati awọn iṣowo lori wọn jẹ pato. Ni awọn ofin imọ-ẹrọ, awọn adehun ijafafa jẹ awọn modulu sọfitiwia ti a ṣe imuse ni awọn ede siseto JS tabi Go.

Ilana ifọwọsi - fun koodu ẹwọn kọọkan, o le ṣeto eto imulo lori iye awọn ijẹrisi fun idunadura kan yẹ ki o nireti ati lati ọdọ tani. Ti eto imulo naa ko ba ṣeto, lẹhinna aiyipada ni: “Idunadura naa gbọdọ jẹri nipasẹ eyikeyi ọmọ ẹgbẹ ti eyikeyi agbari ni ikanni.” Awọn apẹẹrẹ ti awọn ilana:

  • Idunadura naa gbọdọ fọwọsi nipasẹ eyikeyi oludari ti ajo;
  • Gbọdọ jẹ ifọwọsi nipasẹ eyikeyi ọmọ ẹgbẹ tabi alabara ti ajo naa;
  • Gbọdọ jẹ ifọwọsi nipasẹ eyikeyi ẹgbẹ ẹlẹgbẹ.

Iṣẹ ibere - akopọ awọn iṣowo sinu awọn bulọọki ati firanṣẹ si awọn ẹlẹgbẹ ninu ikanni naa. Ṣe iṣeduro ifijiṣẹ awọn ifiranṣẹ si gbogbo awọn ẹlẹgbẹ lori nẹtiwọọki. Lo fun ise awọn ọna šiše Kafka ifiranṣẹ alagbata, fun idagbasoke ati igbeyewo Solo.

Ipe ipe

Blockchain: kini PoC yẹ ki a kọ?

  • Ohun elo naa ṣe ibaraẹnisọrọ pẹlu Hyperledger Fabric nipa lilo Go, Node.js tabi Java SDK;
  • Onibara ṣẹda iṣowo tx kan ati firanṣẹ si awọn ẹlẹgbẹ ti o fọwọsi;
  • Ẹlẹgbẹ naa ṣe idaniloju ibuwọlu alabara, pari idunadura naa, ati firanṣẹ ibuwọlu ifọwọsi pada si alabara. Chaincode ti wa ni ṣiṣe nikan lori awọn ẹlẹgbẹ ti o fọwọsi, ati pe abajade ti ipaniyan rẹ ni a firanṣẹ si gbogbo awọn ẹlẹgbẹ. Alugoridimu iṣẹ yii ni a pe ni ipinnu PBFT (Practical Byzantine Fault Tolerant). Yato si Ayebaye BFT otitọ pe a firanṣẹ ifiranṣẹ naa ati idaniloju kii ṣe lati ọdọ gbogbo awọn olukopa, ṣugbọn lati awọn eto kan nikan;
  • Lẹhin ti alabara ti gba nọmba awọn idahun ti o baamu si eto imulo ifọwọsi, o firanṣẹ idunadura naa si iṣẹ Ibere;
  • Iṣẹ Ipeṣẹ ​​n ṣe agbekalẹ bulọọki kan ati firanṣẹ si gbogbo awọn ẹlẹgbẹ ṣiṣe. Iṣẹ ibere ṣe idaniloju igbasilẹ igbasilẹ ti awọn bulọọki, eyiti o yọkuro ohun ti a pe ni orita leta (wo apakan "Forks");
  • Awọn ẹlẹgbẹ gba bulọọki kan, ṣayẹwo eto imulo ifọwọsi lẹẹkansi, kọ bulọki si blockchain ki o yi ipo pada ni “Ipinlẹ Agbaye” DB.

Awon. Eyi ṣe abajade ni pipin awọn ipa laarin awọn apa. Eyi ṣe idaniloju blockchain jẹ iwọn ati aabo:

  • Awọn ifowo siwe Smart (chaincode) ṣe awọn ẹlẹgbẹ ti o fọwọsi. Eleyi idaniloju awọn asiri ti smati siwe, nitori ko ṣe ipamọ nipasẹ gbogbo awọn olukopa, ṣugbọn nipasẹ atilẹyin awọn ẹlẹgbẹ nikan.
  • Ibere ​​yẹ ki o ṣiṣẹ ni kiakia. Eyi ni idaniloju nipasẹ otitọ pe Bere fun nikan ṣe agbekalẹ bulọọki kan ati firanṣẹ si eto ti o wa titi ti awọn ẹlẹgbẹ olori.
  • Ṣiṣe awọn ẹlẹgbẹ nikan tọju blockchain - ọpọlọpọ ninu wọn le wa ati pe wọn ko nilo agbara pupọ ati iṣiṣẹ lẹsẹkẹsẹ.

Awọn alaye diẹ sii lori awọn ojutu ayaworan ti Hyperledger Fabric ati idi ti o fi ṣiṣẹ ni ọna yii kii ṣe bibẹẹkọ le ṣee rii nibi: Architecture Origins tabi nibi: Hyperledger Fabric: Eto Iṣiṣẹ Pinpin fun Awọn blockchains ti a gba laaye.

Nitorinaa, Hyperledger Fabric jẹ eto agbaye ni otitọ pẹlu eyiti o le:

  • Ṣe iṣedede iṣowo lainidii nipa lilo ẹrọ adehun ọlọgbọn;
  • Gba silẹ ati gba data lati ibi ipamọ data blockchain ni ọna kika JSON;
  • Fifun ati ṣayẹwo iraye si API nipa lilo Alaṣẹ Ijẹrisi.

Ni bayi ti a loye diẹ nipa awọn pato ti Hyperledger Fabric, jẹ ki a nipari ṣe nkan ti o wulo!

Gbigbe blockchain

Igbekalẹ iṣoro naa

Iṣẹ naa ni lati ṣe imuse nẹtiwọọki Citcoin pẹlu awọn iṣẹ wọnyi: ṣẹda akọọlẹ kan, gba iwọntunwọnsi, gbe akọọlẹ rẹ pọ si, gbe awọn owó lati akọọlẹ kan si ekeji. Jẹ ki a fa awoṣe ohun kan, eyiti a yoo ṣe imuse siwaju sii ni adehun ọlọgbọn kan. Nitorinaa, a yoo ni awọn akọọlẹ ti o jẹ idanimọ nipasẹ awọn orukọ ti o ni iwọntunwọnsi kan, ati atokọ ti awọn akọọlẹ kan. Awọn akọọlẹ ati atokọ ti awọn akọọlẹ jẹ, ni awọn ofin ti awọn ohun-ini Fabric Hyperledger. Nitorinaa, wọn ni itan-akọọlẹ ati ipo lọwọlọwọ. Emi yoo gbiyanju lati fa eyi ni kedere:

Blockchain: kini PoC yẹ ki a kọ?

Awọn nọmba ti o ga julọ jẹ ipo ti o wa lọwọlọwọ, eyiti o wa ni ipamọ ni aaye data "Ipinlẹ Agbaye". Ni isalẹ wọn ni awọn isiro ti n ṣafihan itan-akọọlẹ ti o fipamọ sinu blockchain. Ipo awọn ohun-ini lọwọlọwọ ti yipada nipasẹ awọn iṣowo. Ohun-ini naa yipada nikan bi odidi, nitorinaa abajade ti idunadura naa, a ṣẹda ohun titun kan, ati pe iye lọwọlọwọ ti dukia lọ sinu itan-akọọlẹ.

IBM awọsanma

A ṣẹda iroyin ni IBM awọsanma. Lati lo iru ẹrọ blockchain, o gbọdọ jẹ igbegasoke si Pay-Bi-You-Go. Ilana yii le ma yara, nitori ... IBM n beere fun alaye ni afikun ati pe o jẹrisi pẹlu ọwọ. Lori akọsilẹ ti o dara, Mo le sọ pe IBM ni awọn ohun elo ikẹkọ ti o dara ti o gba ọ laaye lati fi Hyperledger Fabric sinu awọsanma wọn. Mo nifẹ awọn lẹsẹsẹ ti awọn nkan ati apẹẹrẹ:

Awọn atẹle jẹ awọn sikirinisoti ti Syeed IBM Blockchain. Eyi kii ṣe itọnisọna lori bii o ṣe le ṣẹda blockchain kan, ṣugbọn nirọrun ifihan ti ipari iṣẹ naa. Nitorinaa, fun awọn idi wa, a ṣe Ajo kan:

Blockchain: kini PoC yẹ ki a kọ?

A ṣẹda awọn apa inu rẹ: Alakoso CA, Org1 CA, Ẹlẹgbẹ Oluṣe:

Blockchain: kini PoC yẹ ki a kọ?

A ṣẹda awọn olumulo:

Blockchain: kini PoC yẹ ki a kọ?

Ṣẹda ikanni kan ki o pe citcoin:

Blockchain: kini PoC yẹ ki a kọ?

Ni pataki ikanni jẹ blockchain, nitorinaa o bẹrẹ pẹlu idinaki odo (Idina Genesisi):

Blockchain: kini PoC yẹ ki a kọ?

Kikọ a Smart Adehun

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

Ni oye, ohun gbogbo yẹ ki o han nibi:

  • Awọn iṣẹ pupọ wa (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) ti eto demo yoo pe ni lilo Hyperledger Fabric API.
  • Awọn iṣẹ SendFrom ati RefillBalance ṣe ipilẹṣẹ Awọn iṣẹlẹ ti eto demo yoo gba.
  • Iṣẹ-ṣiṣe lẹsẹkẹsẹ ni a pe ni ẹẹkan nigbati adehun ọlọgbọn kan ba wa ni ese. Ni pato, o ti wa ni a npe ni ko o kan ni ẹẹkan, ṣugbọn ni gbogbo igba ti smati guide version ayipada. Nitorinaa, ipilẹṣẹ atokọ pẹlu akojọpọ ofo jẹ ero buburu, nitori Ni bayi, nigba ti a ba yipada ẹya ti adehun ijafafa, a yoo padanu atokọ lọwọlọwọ. Ṣugbọn o dara, Mo kan kọ ẹkọ).
  • Awọn akọọlẹ ati atokọ ti awọn akọọlẹ jẹ awọn ẹya data JSON. JS ti lo fun ifọwọyi data.
  • O le gba iye lọwọlọwọ ti dukia nipa lilo ipe iṣẹ iṣẹ getState, ki o si ṣe imudojuiwọn rẹ nipa lilo putState.
  • Nigbati o ba ṣẹda akọọlẹ kan, iṣẹ AddAccount ni a pe, ninu eyiti a ṣe afiwe fun nọmba ti o pọ julọ ti awọn akọọlẹ ninu blockchain (maxAccounts = 5). Ati pe nibi jamb kan wa (njẹ o ti ṣe akiyesi?), eyiti o yori si ilosoke ailopin ninu nọmba awọn akọọlẹ. Iru awọn aṣiṣe bẹ yẹ ki o yago fun)

Nigbamii ti, a gbe iwe adehun ọlọgbọn sinu ikanni ki o ṣe imudara rẹ:

Blockchain: kini PoC yẹ ki a kọ?

Jẹ ki a wo idunadura naa fun fifi sori iwe adehun Smart:

Blockchain: kini PoC yẹ ki a kọ?

Jẹ ki a wo awọn alaye nipa ikanni wa:

Blockchain: kini PoC yẹ ki a kọ?

Bi abajade, a gba aworan atọka atẹle ti nẹtiwọọki blockchain ninu awọsanma IBM. Aworan naa tun fihan eto demo ti n ṣiṣẹ ninu awọsanma Amazon lori olupin foju kan (diẹ sii nipa rẹ ni apakan atẹle):

Blockchain: kini PoC yẹ ki a kọ?

Ṣiṣẹda GUI kan fun awọn ipe Hyperledger Fabric API

Hyperledger Fabric ni API ti o le ṣee lo lati:

  • Ṣẹda ikanni;
  • Awọn ibatan ẹlẹgbẹ si ikanni;
  • Fifi sori ẹrọ ati isọdọtun ti awọn adehun smati ni ikanni;
  • Awọn iṣowo ipe;
  • Beere alaye lori blockchain.

Ohun elo idagbasoke

Ninu eto demo wa a yoo lo API nikan lati pe awọn iṣowo ati beere alaye, nitori A ti pari awọn igbesẹ ti o ku nipa lilo IBM blockchain Syeed. A kọ GUI kan nipa lilo akopọ imọ-ẹrọ boṣewa: Express.js + Vue.js + Node.js. O le kọ nkan lọtọ lori bi o ṣe le bẹrẹ ṣiṣẹda awọn ohun elo wẹẹbu ode oni. Nibi Emi yoo fi ọna asopọ kan silẹ si lẹsẹsẹ awọn ikowe ti Mo nifẹ julọ: Ohun elo Ayelujara Stack ni kikun nipa lilo Vue.js & Express.js. Abajade jẹ ohun elo olupin-olupin pẹlu wiwo ayaworan ti o faramọ ni ara Apẹrẹ Ohun elo Google. API REST laarin alabara ati olupin ni awọn ipe lọpọlọpọ:

  • HyperledgerDemo/v1/init - ipilẹṣẹ blockchain;
  • HyperledgerDemo/v1/awọn akọọlẹ/akojọ — gba atokọ ti gbogbo awọn akọọlẹ;
  • HyperledgerDemo/v1/account?name=Bob&balance=100 — ṣẹda iroyin Bob;
  • HyperledgerDemo/v1/info?account=Bob — gba alaye nipa akọọlẹ Bob;
  • HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 - gbe owo meji lati Bob si Alice;
  • HyperledgerDemo/v1/ ge asopọ – pa asopọ mọ blockchain.

Apejuwe API pẹlu awọn apẹẹrẹ ti o wa ninu Postman aaye ayelujara - eto ti a mọ daradara fun idanwo HTTP API.

Ririnkiri elo ni Amazon awọsanma

Mo gbe ohun elo naa sori Amazon nitori… IBM ko tii le ṣe igbesoke akọọlẹ mi ati gba mi laaye lati ṣẹda awọn olupin foju. Bii o ṣe le ṣafikun ṣẹẹri kan si agbegbe naa: www.citcoin.info. Emi yoo pa olupin naa mọ fun igba diẹ, lẹhinna pa a, nitori... senti fun iyalo ti n rọ, ati awọn owó citcoin ko ti ṣe atokọ lori paṣipaarọ ọja iṣura) Mo wa pẹlu awọn sikirinisoti ti demo ninu nkan naa ki oye ti iṣẹ naa jẹ kedere. Ohun elo demo le:

  • Bibẹrẹ blockchain;
  • Ṣẹda akọọlẹ kan (ṣugbọn ni bayi o ko le ṣẹda akọọlẹ tuntun kan, nitori pe nọmba ti o pọ julọ ti awọn akọọlẹ ti a sọ pato ninu adehun ọlọgbọn ti de ni blockchain);
  • Gba akojọ kan ti Awọn iroyin;
  • Gbigbe awọn owó citcoin laarin Alice, Bob ati Alex;
  • Gba awọn iṣẹlẹ (ṣugbọn nisisiyi ko si ọna lati ṣe afihan awọn iṣẹlẹ, nitorina fun ayedero, wiwo sọ pe awọn iṣẹlẹ ko ni atilẹyin);
  • Awọn iṣẹ wọle.

Ni akọkọ a bẹrẹ blockchain:

Blockchain: kini PoC yẹ ki a kọ?

Nigbamii ti, a ṣẹda akọọlẹ wa, maṣe padanu akoko pẹlu iwọntunwọnsi:

Blockchain: kini PoC yẹ ki a kọ?

A gba atokọ ti gbogbo awọn akọọlẹ ti o wa:

Blockchain: kini PoC yẹ ki a kọ?

A yan olufiranṣẹ ati olugba, ati gba iwọntunwọnsi wọn. Ti olufiranṣẹ ati olugba ba jẹ kanna, lẹhinna akọọlẹ rẹ yoo kun:

Blockchain: kini PoC yẹ ki a kọ?

Ninu akọọlẹ a ṣe atẹle ipaniyan ti awọn iṣowo:

Blockchain: kini PoC yẹ ki a kọ?

Lootọ, iyẹn ni gbogbo pẹlu eto demo naa. Ni isalẹ o le wo iṣowo wa ni blockchain:

Blockchain: kini PoC yẹ ki a kọ?

Ati atokọ gbogbogbo ti awọn iṣowo:

Blockchain: kini PoC yẹ ki a kọ?

Pẹlu eyi, a ti pari ni aṣeyọri ti imuse ti PoC lati ṣẹda nẹtiwọki Citcoin. Kini ohun miiran nilo lati ṣe fun Citcoin lati di nẹtiwọki ti o ni kikun fun gbigbe awọn owó? Bíntín:

  • Ni ipele ẹda akọọlẹ, ṣe imuse iran ti bọtini ikọkọ / ti gbogbo eniyan. Bọtini ikọkọ gbọdọ wa ni ipamọ pẹlu olumulo akọọlẹ, bọtini gbogbogbo gbọdọ wa ni ipamọ sinu blockchain.
  • Ṣe gbigbe owo kan ninu eyiti bọtini ita gbangba, dipo orukọ kan, ti lo lati ṣe idanimọ olumulo naa.
  • Encrypt awọn iṣowo n lọ lati ọdọ olumulo si olupin pẹlu bọtini ikọkọ rẹ.

ipari

A ti ṣe imuse nẹtiwọọki Citcoin pẹlu awọn iṣẹ wọnyi: ṣafikun akọọlẹ kan, gba iwọntunwọnsi, ṣajọpọ akọọlẹ rẹ, gbe awọn owó lati akọọlẹ kan si ekeji. Nitorinaa, kini o jẹ fun wa lati kọ PoC kan?

  • O nilo lati ṣe iwadi blockchain ni gbogbogbo ati Hyperledger Fabric ni pataki;
  • Kọ ẹkọ lati lo IBM tabi Amazon awọsanma;
  • Kọ ẹkọ ede siseto JS ati diẹ ninu awọn ilana wẹẹbu;
  • Ti diẹ ninu awọn data nilo lati wa ni ipamọ ko si ni blockchain, ṣugbọn ni aaye data ọtọtọ, lẹhinna kọ ẹkọ lati ṣepọ, fun apẹẹrẹ, pẹlu PostgreSQL;
  • Ati nikẹhin ṣugbọn kii kere ju - o ko le gbe ni agbaye ode oni laisi imọ ti Linux!)

Nitoribẹẹ, kii ṣe imọ-jinlẹ rocket, ṣugbọn iwọ yoo ni lati ṣiṣẹ takuntakun!

Awọn orisun lori GitHub

Awọn orisun fi lori GitHub. Apejuwe kukuru ti ibi ipamọ:
Katalogi «server»- Node.js olupin
Katalogi «ni ose»- Node.js onibara
Katalogi «blockchain"(Awọn iye paramita ati awọn bọtini, nitorinaa, ko ṣiṣẹ ati pe a fun wọn gẹgẹbi apẹẹrẹ):

  • guide - smart guide koodu orisun
  • apamọwọ - awọn bọtini olumulo fun lilo Hyperledger Fabric API.
  • * .cds - compiled awọn ẹya ti smati siwe
  • * .json faili - apẹẹrẹ ti iṣeto ni awọn faili fun lilo Hyperledger Fabric API

O jẹ ibẹrẹ nikan!

orisun: www.habr.com

Fi ọrọìwòye kun