Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Tha eagal air do shùilean agus tha tachas air do làmhan!

Ann an artaigilean roimhe, dhèilig sinn ris na teicneòlasan air a bheil blockchains air an togail (Dè a bu chòir dhuinn blockchain a thogail?) agus cùisean a ghabhas an cur an gnìomh len cuideachadh (Carson a bu chòir dhuinn cùis a thogail?). Tha an t-àm ann a bhith ag obair le do làmhan! Gus pìleatan agus PoC (Proof of Concept) a chuir an gnìomh, is fheàrr leam na sgòthan a chleachdadh, oir ... gheibhear thuca bho àite sam bith san t-saoghal agus, gu tric, chan fheumar ùine a chaitheamh air stàladh tedious na h-àrainneachd, oir Tha rèiteachaidhean ro-shuidhichte ann. Mar sin, dèanamaid rudeigin sìmplidh, mar eisimpleir, lìonra airson buinn a ghluasad eadar com-pàirtichean agus canaidh sinn gu ìre Bitcoin e. Airson seo cleachdaidh sinn sgòth IBM agus an uile-choitcheann blockchain Hyperledger Fabric. An toiseach, leig dhuinn a-mach carson a tha Hyperledger Fabric air ainmeachadh mar blockchain uile-choitcheann?

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Stuth Hyperledger - blockchain uile-choitcheann

San fharsaingeachd, is e siostam fiosrachaidh uile-choitcheann:

  • Seata de luchd-frithealaidh agus cridhe bathar-bog a choileanas loidsig gnìomhachais;
  • eadar-aghaidh airson eadar-obrachadh leis an t-siostam;
  • Innealan airson clàradh, dearbhadh agus ceadachadh innealan / daoine;
  • Stòr-dàta a’ stòradh dàta obrachaidh is tasglainn:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Faodar an dreach oifigeil de na tha ann an Hyperledger Fabric a leughadh aig làrach, agus ann an ùine ghoirid, tha Hyperledger Fabric na àrd-ùrlar opensource a leigeas leat blockchains prìobhaideach a thogail agus cùmhnantan snasail neo-riaghailteach sgrìobhte ann an cànanan prògramadh JS agus Go a chuir an gnìomh. Bheir sinn sùil mhionaideach air ailtireachd Hyperledger Fabric agus dèan cinnteach gur e siostam uile-choitcheann a tha seo aig nach eil ach mion-fhiosrachadh airson dàta a stòradh agus a chlàradh. Is e an sònrachas gu bheil an dàta, mar a tha anns a h-uile blockchain, air a stòradh ann am blocaichean a thèid a chuir air an blockchain a-mhàin ma ruigeas na com-pàirtichean co-aontachd agus às deidh dhaibh an dàta a chlàradh chan urrainnear a cheartachadh no a dhubhadh às gu sàmhach.

Ailtireachd aodach Hyperledger

Tha an diagram a’ sealltainn ailtireachd Hyperledger Fabric:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Buidhnean — tha co-aoisean anns na buidhnean, i.e. Tha blockchain ann air sgàth taic bho bhuidhnean. Faodaidh diofar bhuidhnean a bhith mar phàirt den aon seanal.

Channel - structar loidsigeach a tha ag aonachadh co-aoisean gu buidhnean, i.e. tha an blockchain air a shònrachadh. Faodaidh Hyperledger Fabric iomadh blockchain a phròiseasadh aig an aon àm le diofar loidsig gnìomhachais.

Solaraiche Seirbheisean Ballrachd (BPA) na CA (Ùghdarras Teisteanas) airson dearbh-aithne a thoirt seachad agus dreuchdan a shònrachadh. Gus nód a chruthachadh, feumaidh tu eadar-obrachadh leis a’ BhPA.

Nòtaichean co-aoisean - dearbhaich gnothaichean, stòraich an blockchain, cuir an gnìomh cùmhnantan snasail agus eadar-obrachadh le tagraidhean. Tha dearbh-aithne aig co-aoisean (teisteanas didseatach), a tha am BPA a’ cur a-mach. Eu-coltach ris an lìonra Bitcoin no Etherium, far a bheil còraichean co-ionann aig a h-uile nod, tha diofar dhleastanasan aig nodan Hyperledger Fabric:

  • Peer 's dòcha a' toirt taic do cho-aoisean (EP) agus cuir an gnìomh cùmhnantan snasail.
  • A’ dèanamh co-aoisean (CP) - sàbhail dàta a-mhàin anns an blockchain agus ùraich an “Stàit na Cruinne”.
  • Anchor Peer (AP) - ma bhios grunn bhuidhnean a’ gabhail pàirt anns na blockchain, bidh co-aoisean acair air an cleachdadh airson conaltradh eatorra. Feumaidh co-aoisean acair no barrachd a bhith aig gach buidheann. A’ cleachdadh AP, faodaidh co-aoisean sam bith ann am buidheann fiosrachadh fhaighinn mu gach co-aoisean ann am buidhnean eile. Air a chleachdadh gus fiosrachadh a shioncronachadh eadar AP pròtacal gossip.
  • Ceannard Peer - ma tha grunn cho-aoisean aig buidheann, is e dìreach an stiùiriche co-aoisean a gheibh blocaichean bhon t-seirbheis Òrdachaidh agus bheir iad don chòrr de na co-aoisean iad. Faodar an stiùiriche a shònrachadh gu statach no a thaghadh gu dinamach le co-aoisean sa bhuidheann. Tha am protocol gossip cuideachd air a chleachdadh gus fiosrachadh mu stiùirichean a shioncronachadh.

so-mhaoin - buidhnean aig a bheil luach agus a tha air an stòradh air an blockchain. Gu sònraichte, is e seo dàta prìomh luach ann an cruth JSON. Is e an dàta seo a tha air a chlàradh anns an Blockchain. Tha eachdraidh aca, a tha air a stòradh anns an blockchain, agus staid làithreach, a tha air a stòradh ann an stòr-dàta “World state”. Tha structaran dàta air an lìonadh gu neo-riaghailteach a rèir gnìomhan gnìomhachais. Chan eil raointean riatanach ann, is e an aon mholadh gum feum sealbhadair a bhith aig maoin agus a bhith luachmhor.

Ledger - air a dhèanamh suas de Blockchain agus stòr-dàta stàite Word, a bhios a’ stòradh staid làithreach na maoine. Bidh stàit na cruinne a’ cleachdadh LevelDB no CouchDB.

Cùmhnant glic - a’ cleachdadh chùmhnantan snasail, tha loidsig gnìomhachais an t-siostaim air a bhuileachadh. Ann an Hyperledger Fabric, canar còd slabhraidh ri cùmhnantan snasail. A’ cleachdadh chaincode, tha maoin agus gnothaichean thairis orra air an sònrachadh. A thaobh teignigeach, tha cùmhnantan snasail nam modalan bathar-bog air an cur an gnìomh anns na cànanan prògramadh JS no Go.

Poileasaidh taic - airson gach còd slabhraidh, faodaidh tu poileasaidh a shuidheachadh air cia mheud dearbhadh airson malairt a bu chòir a bhith an dùil agus cò bho. Mura h-eil am poileasaidh air a shuidheachadh, is e an rud bunaiteach: “feumaidh an gnothach a bhith air a dhearbhadh le ball sam bith de bhuidheann sam bith san t-sianal.” Eisimpleirean de phoileasaidhean:

  • Feumaidh an gnothach a bhith air aontachadh le rianadair sam bith sa bhuidheann;
  • Feumaidh a bhith air a dhearbhadh le ball no neach-dèiligidh sam bith den bhuidheann;
  • Feumaidh a bhith air a dhearbhadh le buidheann cho-aoisean sam bith.

Seirbheis òrdachadh - a’ pacadh gnothaichean ann am blocaichean agus gan cur gu co-aoisean san t-sianal. A’ gealltainn lìbhrigeadh teachdaireachdan gu gach co-aoisean air an lìonra. Air a chleachdadh airson siostaman gnìomhachais Bròcair teachdaireachd Kafka, airson leasachadh agus deuchainn solo.

CallFlow

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

  • Bidh an aplacaid a’ conaltradh le Hyperledger Fabric a’ cleachdadh Go, Node.js no Java SDK;
  • Bidh an neach-dèiligidh a’ cruthachadh malairt tx agus ga chuir gu co-aoisean taiceil;
  • Bidh an Co-aoisean a’ dearbhadh ainm-sgrìobhte an neach-dèiligidh, a’ crìochnachadh a’ ghnothaich, agus a’ cur an ainm-sgrìobhte aonta air ais chun neach-dèiligidh. Tha Chaincode air a chur gu bàs a-mhàin air a 'cho-aoisean taiceil, agus thèid toradh a chur gu bàs a chuir chun a h-uile co-aoisean. Canar co-aontachd PBFT (Practaigeach Byzantine Fault Tolerant) ris an algairim obrach seo. Eadar-dhealaichte bho BFT clasaigeach an fhìrinn gu bheil an teachdaireachd air a chuir agus nach eil dùil ri dearbhadh bho na com-pàirtichean uile, ach a-mhàin bho sheata sònraichte;
  • Às deidh don neach-dèiligidh an àireamh de fhreagairtean fhaighinn a rèir a’ phoileasaidh taic, bidh e a ’cur a’ ghnothaich chun t-seirbheis Òrdachaidh;
  • Bidh an t-seirbheis Òrdachaidh a’ gineadh bloc agus ga chuir chun a h-uile co-aoisean dealasach. Bidh seirbheis òrdachaidh a’ dèanamh cinnteach à clàradh sreath de bhlocaichean, a chuireas às don fhorc leabhar-cunntais (faic an earrann "Forks");
  • Bidh co-aoisean a’ faighinn bloc, thoir sùil air a’ phoileasaidh ceadachaidh a-rithist, sgrìobh am bloc chun blockchain agus atharraich an stàit anns an DB “Stàit na Cruinne”.

An fheadhainn sin. Tha seo mar thoradh air roinneadh dhreuchdan eadar na nodan. Bidh seo a’ dèanamh cinnteach gu bheil an blockchain scalable agus tèarainte:

  • Bidh cùmhnantan snasail (chaincode) a’ coileanadh co-aoisean taiceil. Bidh seo a 'dèanamh cinnteach à dìomhaireachd cùmhnantan smart, oir chan eil e air a stòradh leis a h-uile com-pàirtiche, ach a-mhàin le bhith a’ toirt taic do cho-aoisean.
  • Bu chòir òrdugh obrachadh gu sgiobalta. Tha seo air a dhèanamh cinnteach leis nach eil Òrdachadh ach a’ cruthachadh bloc agus ga chuir gu seata stèidhichte de cho-aoisean stiùiridh.
  • Cha bhith co-aoisean dealasach ach a’ stòradh an blockchain - faodaidh mòran dhiubh a bhith ann agus chan fheum iad mòran cumhachd agus obrachadh sa bhad.

Gheibhear tuilleadh fiosrachaidh mu na fuasglaidhean ailtireil aig Hyperledger Fabric agus carson a tha e ag obair mar seo agus nach eil a chaochladh an seo: Tùsan ailtireachd no an seo: Stuth Hyperledger: Siostam obrachaidh air a chuairteachadh airson blockchains ceadaichte.

Mar sin, tha Hyperledger Fabric na shiostam fìor choitcheann leis an urrainn dhut:

  • Cuir an gnìomh loidsig gnìomhachais neo-riaghailteach a’ cleachdadh an uidheamachd cùmhnant smart;
  • Clàraich agus faigh dàta bhon stòr-dàta blockchain ann an cruth JSON;
  • Thoir seachad agus dearbhaich ruigsinneachd API a’ cleachdadh Ùghdarras Teisteanas.

A-nis gu bheil sinn a 'tuigsinn beagan mu na rudan sònraichte aig Hyperledger Fabric, dèanamaid rudeigin feumail mu dheireadh!

A 'cleachdadh blockchain

Aithris dhuilgheadas

Is e an obair lìonra Citcoin a chuir an gnìomh leis na gnìomhan a leanas: cruthaich cunntas, faigh cothromachadh, cuir ris a ’chunntas agad, gluais buinn bho aon chunntas gu cunntas eile. Tarraingidh sinn modal nì, a chuireas sinn an gnìomh tuilleadh ann an cùmhnant snasail. Mar sin, bidh cunntasan againn a tha air an comharrachadh le ainmean agus anns a bheil cothromachadh, agus liosta de chunntasan. Tha cunntasan agus liosta de chunntasan, a thaobh maoin Hyperledger Fabric. A rèir sin, tha eachdraidh agus staid làithreach aca. Feuchaidh mi ri seo a tharraing gu soilleir:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Is e na figearan as àirde an stàit làithreach, a tha air a stòradh san stòr-dàta “Stàit na Cruinne”. Gu h-ìosal tha figearan a 'sealltainn na h-eachdraidh a tha air a stòradh anns na blockchain. Tha suidheachadh làithreach maoin air atharrachadh le gnothaichean. Bidh an so-mhaoin ag atharrachadh a-mhàin gu h-iomlan, agus mar sin mar thoradh air a’ ghnothach, thèid nì ùr a chruthachadh, agus thèid luach làithreach na so-mhaoin a-steach don eachdraidh.

Cloud IBM

Bidh sinn a’ cruthachadh cunntas ann an Sgòthan IBM. Gus an àrd-ùrlar blockchain a chleachdadh, feumar ùrachadh gu Pay-As-You-Go. Is dòcha nach bi am pròiseas seo luath, oir ... Bidh IBM ag iarraidh fiosrachadh a bharrachd agus ga dhearbhadh le làimh. Air nota adhartach, is urrainn dhomh a ràdh gu bheil stuthan trèanaidh math aig IBM a leigeas leat Hyperledger Fabric a chuir a-steach don sgòth aca. Chòrd an t-sreath artaigilean agus eisimpleirean a leanas rium:

Tha na leanas nan seallaidhean-sgrìn den àrd-ùrlar IBM Blockchain. Chan e stiùireadh a tha seo air mar a chruthaicheas tu blockchain, ach dìreach taisbeanadh air farsaingeachd na h-obrach. Mar sin, airson ar n-adhbharan, bidh sinn a’ dèanamh aon bhuidheann:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Bidh sinn a’ cruthachadh nodan ann: Orderer CA, Org1 CA, Orderer Peer:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Bidh sinn a’ cruthachadh luchd-cleachdaidh:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Cruthaich Sianal agus gairm citcoin air:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Gu bunaiteach is e blockchain a th ’ann an Channel, agus mar sin bidh e a’ tòiseachadh le bloc neoni (bloc Genesis):

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

A 'sgrìobhadh cùmhnant glic

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

Gu h-inntinneach, bu chòir a h-uile dad a bhith soilleir an seo:

  • Tha grunn dhleastanasan ann (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) a chanas am prògram demo a’ cleachdadh an Hyperledger Fabric API.
  • Bidh na gnìomhan SendFrom agus RefillBalance a’ gineadh Tachartasan a gheibh am prògram demo.
  • Canar gnìomh instantiate aon uair nuair a thèid cùmhnant snasail a chuir an gnìomh sa bhad. Gu dearbh, chan e dìreach aon turas a chanar ris, ach a h-uile uair a bhios an dreach cùmhnant smart ag atharrachadh. Mar sin, is e droch bheachd a th’ ann liosta a thòiseachadh le raon falamh, oir A-nis, nuair a dh'atharraicheas sinn an dreach den chùmhnant smart, caillidh sinn an liosta làithreach. Ach tha e ceart gu leòr, tha mi dìreach ag ionnsachadh).
  • Tha cunntasan agus liosta chunntasan nan structaran dàta JSON. Tha JS air a chleachdadh airson làimhseachadh dàta.
  • Gheibh thu luach làithreach maoin a’ cleachdadh a’ ghairm gnìomh getState, agus ùraich e le bhith a’ cleachdadh putState.
  • Nuair a chruthaicheas tu cunntas, canar gnìomh AddAccount ris, anns a bheil coimeas air a dhèanamh airson an àireamh as motha de chunntasan anns an blockchain (maxAccounts = 5). Agus an seo tha jamb (an do mhothaich thu?), A tha a’ leantainn gu àrdachadh gun chrìoch anns an àireamh de chunntasan. Feumar mearachdan mar seo a sheachnadh)

An uairsin, bidh sinn a ’luchdachadh a’ chùmhnant snasail a-steach don t-Sianal agus ga chuir sa bhad:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Bheir sinn sùil air a’ ghnothach airson a bhith a’ stàladh Smart Contract:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Bheir sinn sùil air mion-fhiosrachadh mun t-sianal againn:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Mar thoradh air an sin, gheibh sinn an diagram a leanas de lìonra blockchain anns an sgòth IBM. Tha an diagram cuideachd a’ sealltainn prògram demo a’ ruith ann an sgòth Amazon air frithealaiche brìgheil (tuilleadh mu dheidhinn san ath earrann):

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

A’ cruthachadh GUI airson gairmean Hyperledger Fabric API

Tha API aig Hyperledger Fabric a dh'fhaodar a chleachdadh airson:

  • Cruthaich sianal;
  • Ceanglaichean co-aoisean gu sianal;
  • Stàladh agus sa bhad cùmhnantan snasail san t-sianal;
  • Gnìomhan gairm;
  • Iarr fiosrachadh mun blockchain.

Leasachadh tagradh

Anns a’ phrògram demo againn cleachdaidh sinn an API a-mhàin gus gnothaichean a ghairm agus fiosrachadh iarraidh, oir Tha sinn mu thràth air na ceumannan a tha air fhàgail a chrìochnachadh a’ cleachdadh àrd-ùrlar blockchain IBM. Bidh sinn a’ sgrìobhadh GUI a’ cleachdadh stac teicneòlais àbhaisteach: Express.js + Vue.js + Node.js. Faodaidh tu artaigil air leth a sgrìobhadh air mar a thòisicheas tu air tagraidhean lìn ùr-nodha a chruthachadh. An seo fàgaidh mi ceangal ris an t-sreath de dh’òraidean a b’ fheàrr leam: Aplacaid lìn Làn Stack a’ cleachdadh Vue.js & Express.js. Is e an toradh seo tagradh frithealaiche teachdaiche le eadar-aghaidh grafaigeach eòlach ann an stoidhle Dealbhadh Stuth Google. Tha an REST API eadar teachdaiche agus frithealaiche air a dhèanamh suas de ghrunn ghairmean:

  • HyperledgerDemo/v1/init - cuir a-steach an blockchain;
  • HyperledgerDemo / v1 / cunntasan / liosta - faigh liosta de na cunntasan uile;
  • HyperledgerDemo/v1/account?name=Bob&balance=100 - cruthaich cunntas Bob;
  • HyperledgerDemo/v1/info?account=Bob — faigh fiosrachadh mu chunntas Bob;
  • HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 - gluais dà bhuinn bho Bob gu Alice;
  • HyperledgerDemo/v1/disconnect - dùin an ceangal ris an blockchain.

Tuairisgeul air an API le eisimpleirean air an toirt a-steach Làrach-lìn Postman - prògram ainmeil airson deuchainn HTTP API.

Iarrtas demo ann an sgòth Amazon

Chuir mi suas an aplacaid gu Amazon air sgàth... Chan eil IBM fhathast comasach air mo chunntas ùrachadh agus leigeil leam frithealaichean mas-fhìor a chruthachadh. Mar a chuireas tu cherry ris an àrainn: www.citcoin.info. Cumaidh mi am frithealaiche air adhart airson greis, agus an uairsin tionndaidh e dheth, oir ... tha sgillin airson màl a’ sileadh, agus chan eil buinn citcoin fhathast air an liostadh air an t-iomlaid stoc) Tha mi a’ toirt a-steach seallaidhean-sgrìn den demo san artaigil gus am bi loidsig na h-obrach soilleir. Faodaidh an tagradh demo:

  • Tòisich an blockchain;
  • Cruthaich cunntas (ach a-nis chan urrainn dhut cunntas ùr a chruthachadh, leis gu bheil an àireamh as motha de chunntasan a chaidh a shònrachadh sa chùmhnant snasail air a ruighinn anns an blockchain);
  • Faigh liosta de chunntasan;
  • Cuir thairis buinn citcoin eadar Alice, Bob agus Alex;
  • Faigh tachartasan (ach a-nis chan eil dòigh ann air tachartasan a shealltainn, agus mar sin airson sìmplidh tha an eadar-aghaidh ag ràdh nach eil taic ri tachartasan);
  • Log gnìomhan.

An toiseach bidh sinn a’ tòiseachadh an blockchain:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

An ath rud, bidh sinn a’ cruthachadh ar cunntas, na bi a’ caitheamh ùine leis a’ chothromachadh:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Gheibh sinn liosta de na cunntasan uile a tha rim faighinn:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Bidh sinn a’ taghadh an neach a chuir agus an neach a gheibh e, agus a’ faighinn na suimeannan aca. Ma tha an neach a chuir agus an neach a gheibh e mar an ceudna, thèid an cunntas aige ath-lìonadh:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Anns an log bidh sinn a’ cumail sùil air coileanadh ghnothaichean:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Gu fìrinneach, tha sin uile leis a’ phrògram demo. Gu h-ìosal chì thu an gnothach againn anns an blockchain:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Agus an liosta coitcheann de ghnothaichean:

Blockchain: dè am PoC a bu chòir dhuinn a thogail?

Le seo, tha sinn air crìoch a chuir air buileachadh PoC gu soirbheachail gus lìonra Citcoin a chruthachadh. Dè eile a dh'fheumar a dhèanamh airson Citcoin a bhith na lìonra làn-chuimseach airson buinn a ghluasad? Glè bheag:

  • Aig an ìre cruthachadh cunntas, cuir an gnìomh ginealach iuchair phrìobhaideach / phoblach. Feumaidh an iuchair phrìobhaideach a bhith air a stòradh le neach-cleachdaidh a’ chunntais, feumaidh an iuchair phoblach a bhith air a stòradh anns an blockchain.
  • Dèan gluasad airgid anns a bheil iuchair phoblach, seach ainm, air a chleachdadh gus an neach-cleachdaidh aithneachadh.
  • Cuir a-steach gnothaichean a’ dol bhon neach-cleachdaidh chun an fhrithealaiche leis an iuchair phrìobhaideach aige.

co-dhùnadh

Tha sinn air lìonra Citcoin a chuir an gnìomh leis na gnìomhan a leanas: cuir cunntas ris, faigh cothromachadh, cuir ris a’ chunntas agad, gluais buinn bho aon chunntas gu cunntas eile. Mar sin, dè a chosg e dhuinn PoC a thogail?

  • Feumaidh tu sgrùdadh a dhèanamh air blockchain san fharsaingeachd agus Hyperledger Fabric gu sònraichte;
  • Ionnsaich mar a chleachdas tu sgòthan IBM no Amazon;
  • Ionnsaich cànan prògramadh JS agus cuid de fhrèam lìn;
  • Ma dh’ fheumar cuid de dhàta a stòradh chan ann anns an blockchain, ach ann an stòr-dàta air leth, an uairsin ionnsaich amalachadh, mar eisimpleir, le PostgreSQL;
  • Agus mu dheireadh ach chan e as ìsle - chan urrainn dhut a bhith beò san t-saoghal ùr gun eòlas air Linux!)

Gu dearbh, chan e saidheans rocaid a th’ ann, ach feumaidh tu a bhith ag obair gu cruaidh!

Stòran air GitHub

Stòran air an cur air adhart GitHub. Tuairisgeul goirid air an stòr:
Catalog «frithealaiche» — frithealaiche Node.js
Catalog «neach-dèiligidh» — Cliant Node.js
Catalog «blockchain"(chan eil luachan paramadair agus iuchraichean, gu dearbh, ag obair agus chan eil iad air an toirt seachad ach mar eisimpleir):

  • cùmhnant - còd stòr a’ chùmhnant smart
  • wallet - iuchraichean cleachdaiche airson an Hyperledger Fabric API a chleachdadh.
  • *.cds - dreachan air an cur ri chèile de chùmhnantan snasail
  • *.json files - eisimpleirean de fhaidhlichean rèiteachaidh airson a bhith a’ cleachdadh an Hyperledger Fabric API

Chan eil ann ach an toiseach!

Source: www.habr.com

Cuir beachd ann