Blockchain: pa PoC y dylem ei adeiladu?

Mae ofn ar eich llygaid a'ch dwylo'n cosi!

Mewn erthyglau blaenorol, buom yn ymdrin â'r technolegau y mae cadwyni bloc yn cael eu hadeiladu arnynt (Beth ddylem ni adeiladu blockchain?) ac achosion y gellir eu gweithredu gyda'u cymorth (Pam ddylem ni adeiladu achos?). Mae'n amser gweithio gyda'ch dwylo! Er mwyn gweithredu cynlluniau peilot a PoC (Prawf o Gysyniad), mae'n well gen i ddefnyddio'r cymylau, oherwydd ... gellir eu cyrchu o unrhyw le yn y byd ac, yn aml, nid oes angen gwastraffu amser ar osod yr amgylchedd yn ddiflas, oherwydd Mae yna gyfluniadau rhagosodedig. Felly, gadewch i ni wneud rhywbeth syml, er enghraifft, rhwydwaith ar gyfer trosglwyddo darnau arian rhwng cyfranogwyr a gadewch i ni ei alw'n gymedrol Bitcoin. Ar gyfer hyn byddwn yn defnyddio'r cwmwl IBM a'r blockchain cyffredinol Hyperledger Fabric. Yn gyntaf, gadewch i ni ddarganfod pam mae Hyperledger Fabric yn cael ei alw'n blockchain cyffredinol?

Blockchain: pa PoC y dylem ei adeiladu?

Ffabrig Hyperledger - blockchain cyffredinol

Yn gyffredinol, system wybodaeth gyffredinol yw:

  • Set o weinyddion a chraidd meddalwedd sy'n perfformio rhesymeg busnes;
  • Rhyngwynebau ar gyfer rhyngweithio â'r system;
  • Offer ar gyfer cofrestru, dilysu ac awdurdodi dyfeisiau/pobl;
  • Cronfa ddata sy'n storio data gweithredol ac archifol:

Blockchain: pa PoC y dylem ei adeiladu?

Gellir darllen y fersiwn swyddogol o'r hyn yw Hyperledger Fabric yn Ar-lein, ac yn fyr, mae Hyperledger Fabric yn blatfform ffynhonnell agored sy'n eich galluogi i adeiladu blockchains preifat a gweithredu contractau smart mympwyol a ysgrifennwyd yn ieithoedd rhaglennu JS a Go. Gadewch i ni edrych yn fanwl ar bensaernïaeth Hyperledger Fabric a gwneud yn siŵr bod hon yn system gyffredinol sydd â manylion penodol ar gyfer storio a chofnodi data yn unig. Y penodolrwydd yw bod y data, fel ym mhob blockchains, yn cael ei storio mewn blociau sy'n cael eu gosod ar y blockchain dim ond os yw'r cyfranogwyr yn cyrraedd consensws ac ar ôl cofnodi na ellir cywiro neu ddileu'r data yn dawel.

Pensaernïaeth Ffabrig Hyperledger

Mae'r diagram yn dangos pensaernïaeth Hyperledger Fabric:

Blockchain: pa PoC y dylem ei adeiladu?

Sefydliadau — mae sefydliadau yn cynnwys cyfoedion, h.y. Mae blockchain yn bodoli oherwydd cefnogaeth sefydliadau. Gall gwahanol sefydliadau fod yn rhan o'r un sianel.

Sianel — strwythur rhesymegol sy’n uno cyfoedion yn grwpiau, h.y. mae'r blockchain wedi'i nodi. Gall Hyperledger Fabric brosesu cadwyni bloc lluosog ar yr un pryd â rhesymeg busnes gwahanol.

Darparwr Gwasanaethau Aelodaeth (MSP) yn Awdurdod Cymwys (Awdurdod Tystysgrif) ar gyfer cyhoeddi hunaniaeth a phennu rolau. I greu nod, mae angen i chi ryngweithio â'r MSP.

Nodau cyfoedion - gwirio trafodion, storio'r blockchain, gweithredu contractau smart a rhyngweithio â chymwysiadau. Mae gan gyfoedion hunaniaeth (tystysgrif ddigidol), a gyhoeddir gan yr ASA. Yn wahanol i'r rhwydwaith Bitcoin neu Etherium, lle mae gan bob nod hawliau cyfartal, mae nodau ffabrig Hyperledger yn chwarae gwahanol rolau:

  • Cyfoed efallai cyfoedion cymeradwyo (EP) a gweithredu contractau smart.
  • Cyfoedion ymroddedig (CP) - dim ond arbed data yn y blockchain a diweddaru'r “cyflwr byd”.
  • Angor Cyfoed (AP) - os bydd sawl sefydliad yn cymryd rhan yn y blockchain, yna defnyddir cyfoedion angori ar gyfer cyfathrebu rhyngddynt. Rhaid i bob sefydliad gael un neu fwy o gymheiriaid angori. Gan ddefnyddio AP, gall unrhyw gymheiriaid mewn sefydliad gael gwybodaeth am yr holl gymheiriaid mewn sefydliadau eraill. Fe'i defnyddir i gysoni gwybodaeth rhwng APs protocol clecs.
  • Arweinydd Cyfoed — os oes gan sefydliad nifer o gymheiriaid, yna dim ond arweinydd yr arglwydd fydd yn derbyn blociau o'r gwasanaeth Archebu ac yn eu rhoi i weddill y cyfoedion. Gall yr arweinydd gael ei nodi'n statig neu ei ddewis yn ddeinamig gan gymheiriaid yn y sefydliad. Defnyddir y protocol clecs hefyd i gydamseru gwybodaeth am arweinwyr.

Asedau - endidau sydd â gwerth ac sy'n cael eu storio ar y blockchain. Yn fwy penodol, mae hwn yn ddata gwerth allweddol ar ffurf JSON. Y data hwn sy'n cael ei gofnodi yn y Blockchain. Mae ganddyn nhw hanes, sy'n cael ei storio yn y blockchain, a chyflwr cyfredol, sy'n cael ei storio yn y gronfa ddata "cyflwr y byd". Mae strwythurau data yn cael eu llenwi'n fympwyol yn dibynnu ar dasgau busnes. Nid oes meysydd gofynnol, yr unig argymhelliad yw bod yn rhaid i asedau gael perchennog a bod yn werthfawr.

Ledger — yn cynnwys y Blockchain a chronfa ddata cyflwr Word, sy'n storio cyflwr presennol yr asedau. Mae cyflwr y byd yn defnyddio LevelDB neu CouchDB.

Contract smart - gan ddefnyddio contractau smart, gweithredir rhesymeg busnes y system. Yn Hyperledger Fabric, gelwir contractau smart yn god cadwyn. Gan ddefnyddio cod cadwyn, nodir asedau a thrafodion drostynt. Mewn termau technegol, mae contractau smart yn fodiwlau meddalwedd a weithredir yn ieithoedd rhaglennu JS neu Go.

Polisi cymeradwyo — ar gyfer pob cod cadwyn, gallwch osod polisi ar faint o gadarnhad ar gyfer trafodiad y dylid ei ddisgwyl a chan bwy. Os na chaiff y polisi ei osod, yna’r rhagosodiad yw: “rhaid i’r trafodiad gael ei gadarnhau gan unrhyw aelod o unrhyw sefydliad yn y sianel.” Enghreifftiau o bolisïau:

  • Rhaid i'r trafodiad gael ei gymeradwyo gan unrhyw weinyddwr o'r sefydliad;
  • Rhaid ei gadarnhau gan unrhyw aelod neu gleient o'r sefydliad;
  • Rhaid ei gadarnhau gan unrhyw sefydliad cymheiriaid.

Gwasanaeth archebu - pacio trafodion yn flociau a'u hanfon at gymheiriaid yn y sianel. Yn gwarantu y caiff negeseuon eu dosbarthu i bob cyfoedion ar y rhwydwaith. Defnyddir ar gyfer systemau diwydiannol Brocer negeseuon Kafka, ar gyfer datblygu a phrofi Unawd.

Llif Galw

Blockchain: pa PoC y dylem ei adeiladu?

  • Mae'r cais yn cyfathrebu â Hyperledger Fabric gan ddefnyddio Go, Node.js neu Java SDK;
  • Mae'r cleient yn creu trafodiad tx ac yn ei anfon at gymheiriaid cymeradwyo;
  • Mae'r Cymheiriaid yn gwirio llofnod y cleient, yn cwblhau'r trafodiad, ac yn anfon llofnod yr ardystiad yn ôl at y cleient. Gweithredir Chaincode ar y cyfoed cymeradwyo yn unig, ac anfonir canlyniad ei weithredu at bob cyfoedion. Yr enw ar yr algorithm gwaith hwn yw consensws PBFT (Ymarferol Bysantaidd i Ddioddef Namau). Yn wahanol i BFT clasurol y ffaith bod y neges yn cael ei hanfon a disgwylir cadarnhad nid gan bawb sy'n cymryd rhan, ond dim ond o set benodol;
  • Ar ôl i'r cleient dderbyn nifer yr ymatebion sy'n cyfateb i'r polisi cymeradwyo, mae'n anfon y trafodiad i'r gwasanaeth Archebu;
  • Mae'r gwasanaeth Archebu yn cynhyrchu bloc ac yn ei anfon at yr holl gymheiriaid ymroddedig. Mae gwasanaeth archebu yn sicrhau cofnodi dilyniannol o flociau, sy'n dileu'r fforch cyfriflyfr fel y'i gelwir (gweler yr adran "Fforciau");
  • Mae cyfoedion yn derbyn bloc, gwiriwch y polisi cymeradwyo eto, ysgrifennwch y bloc i'r blockchain a newidiwch y cyflwr yn DB “cyflwr y byd”.

Y rhai. Mae hyn yn arwain at rannu rolau rhwng y nodau. Mae hyn yn sicrhau bod y blockchain yn raddadwy ac yn ddiogel:

  • Mae contractau smart (cod cadwyn) yn cymeradwyo cyfoedion. Mae hyn yn sicrhau cyfrinachedd contractau smart, oherwydd nid yw'n cael ei storio gan yr holl gyfranogwyr, ond dim ond trwy gymeradwyo cyfoedion.
  • Dylai archebu weithio'n gyflym. Sicrheir hyn gan y ffaith bod Archebu yn unig yn ffurfio bloc ac yn ei anfon at set sefydlog o gymheiriaid arweinydd.
  • Mae cyfoedion ymroddedig yn storio'r blockchain yn unig - gall fod llawer ohonynt ac nid oes angen llawer o bŵer a gweithrediad ar unwaith arnynt.

Gellir dod o hyd i ragor o fanylion am atebion pensaernïol Hyperledger Fabric a pham ei fod yn gweithio fel hyn ac nid fel arall yma: Gwreiddiau Pensaernïaeth neu yma: Ffabrig Hyperledger: System Weithredu Ddosbarthedig ar gyfer Blockchains a Ganiateir.

Felly, mae Hyperledger Fabric yn system wirioneddol gyffredinol y gallwch chi:

  • Gweithredu rhesymeg busnes mympwyol gan ddefnyddio'r mecanwaith contract smart;
  • Cofnodi a derbyn data o'r gronfa ddata blockchain mewn fformat JSON;
  • Caniatáu a gwirio mynediad API gan ddefnyddio Awdurdod Tystysgrif.

Nawr ein bod ni'n deall ychydig am fanylion Hyperledger Fabric, gadewch i ni wneud rhywbeth defnyddiol o'r diwedd!

Defnyddio blockchain

Datganiad o'r broblem

Y dasg yw gweithredu rhwydwaith Citcoin gyda'r swyddogaethau canlynol: creu cyfrif, cael balans, ychwanegu at eich cyfrif, trosglwyddo darnau arian o un cyfrif i'r llall. Gadewch i ni dynnu model gwrthrych, y byddwn yn ei weithredu ymhellach mewn contract smart. Felly, bydd gennym gyfrifon sy'n cael eu nodi wrth enwau ac sy'n cynnwys balans, a rhestr o gyfrifon. Mae cyfrifon a rhestr o gyfrifon, o ran asedau Hyperledger Fabric. Yn unol â hynny, mae ganddynt hanes a chyflwr cyfredol. Ceisiaf dynnu hyn yn glir:

Blockchain: pa PoC y dylem ei adeiladu?

Y ffigurau uchaf yw'r cyflwr presennol, sy'n cael ei storio yn y gronfa ddata "cyflwr y byd". Isod mae ffigurau sy'n dangos yr hanes sy'n cael ei storio yn y blockchain. Mae cyflwr presennol asedau yn cael ei newid gan drafodion. Mae'r Ased yn newid yn ei gyfanrwydd yn unig, felly o ganlyniad i'r trafodiad, mae gwrthrych newydd yn cael ei greu, ac mae gwerth cyfredol yr ased yn mynd i mewn i hanes.

Cwmwl IBM

Rydym yn creu cyfrif yn cwmwl IBM. Er mwyn defnyddio'r platfform blockchain, rhaid ei uwchraddio i Dalu Wrth Fynd. Efallai na fydd y broses hon yn gyflym, oherwydd ... Mae IBM yn gofyn am wybodaeth ychwanegol ac yn ei gwirio â llaw. Ar nodyn cadarnhaol, gallaf ddweud bod gan IBM ddeunyddiau hyfforddi da sy'n eich galluogi i ddefnyddio Hyperledger Fabric yn eu cwmwl. Hoffais y gyfres ganlynol o erthyglau ac enghreifftiau:

Mae'r canlynol yn sgrinluniau o lwyfan Blockchain IBM. Nid cyfarwyddyd ar sut i greu blockchain yw hwn, ond yn hytrach arddangosiad o gwmpas y dasg. Felly, at ein dibenion, rydym yn gwneud un Sefydliad:

Blockchain: pa PoC y dylem ei adeiladu?

Rydym yn creu nodau ynddo: Orderer CA, Org1 CA, Orderer Peer:

Blockchain: pa PoC y dylem ei adeiladu?

Rydym yn creu defnyddwyr:

Blockchain: pa PoC y dylem ei adeiladu?

Creu Sianel a'i galw citcoin:

Blockchain: pa PoC y dylem ei adeiladu?

Yn y bôn, blockchain yw Channel, felly mae'n dechrau gyda bloc sero (bloc Genesis):

Blockchain: pa PoC y dylem ei adeiladu?

Ysgrifennu Contract 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;

Yn reddfol, dylai popeth fod yn glir yma:

  • Mae yna sawl swyddogaeth (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) y bydd y rhaglen arddangos yn eu galw gan ddefnyddio API Hyperledger Fabric.
  • Mae'r swyddogaethau SendFrom ac RefillBalance yn cynhyrchu Digwyddiadau y bydd y rhaglen arddangos yn eu derbyn.
  • Gelwir y swyddogaeth instantiate unwaith pan fydd contract smart yn instantiated. Mewn gwirionedd, fe'i gelwir nid yn unig unwaith, ond bob tro mae'r fersiwn contract smart yn newid. Felly, mae cychwyn rhestr gydag arae wag yn syniad drwg, oherwydd Nawr, pan fyddwn yn newid y fersiwn o'r contract smart, byddwn yn colli'r rhestr gyfredol. Ond mae'n iawn, dwi'n dysgu).
  • Mae cyfrifon a rhestr o gyfrifon yn strwythurau data JSON. Defnyddir JS ar gyfer trin data.
  • Gallwch gael gwerth cyfredol ased gan ddefnyddio'r alwad swyddogaeth getState, a'i ddiweddaru gan ddefnyddio putState.
  • Wrth greu Cyfrif, gelwir y swyddogaeth AddAccount, lle gwneir cymhariaeth ar gyfer uchafswm nifer y cyfrifon yn y blockchain (maxAccounts = 5). A dyma jamb (ydych chi wedi sylwi?), sy'n arwain at gynnydd diddiwedd yn nifer y cyfrifon. Dylid osgoi camgymeriadau o'r fath)

Nesaf, rydyn ni'n llwytho'r contract smart i'r Sianel a'i roi ar unwaith:

Blockchain: pa PoC y dylem ei adeiladu?

Edrychwn ar y trafodiad ar gyfer gosod Smart Contract:

Blockchain: pa PoC y dylem ei adeiladu?

Edrychwn ar y manylion am ein Sianel:

Blockchain: pa PoC y dylem ei adeiladu?

O ganlyniad, rydym yn cael y diagram canlynol o rwydwaith blockchain yn y cwmwl IBM. Mae'r diagram hefyd yn dangos rhaglen arddangos sy'n rhedeg yn y cwmwl Amazon ar weinydd rhithwir (mwy amdano yn yr adran nesaf):

Blockchain: pa PoC y dylem ei adeiladu?

Creu GUI ar gyfer galwadau API Hyperledger Fabric

Mae gan Hyperledger Fabric API y gellir ei ddefnyddio i:

  • Creu sianel;
  • Cysylltiadau cymar i sianel;
  • Gosod ac amrantiad contractau smart yn y sianel;
  • Galw trafodion;
  • Gofynnwch am wybodaeth am y blockchain.

Datblygu cais

Yn ein rhaglen demo byddwn yn defnyddio'r API yn unig i alw trafodion a gofyn am wybodaeth, oherwydd Rydym eisoes wedi cwblhau'r camau sy'n weddill gan ddefnyddio platfform blockchain IBM. Rydym yn ysgrifennu GUI gan ddefnyddio stac technoleg safonol: Express.js + Vue.js + Node.js. Gallwch ysgrifennu erthygl ar wahân ar sut i ddechrau creu cymwysiadau gwe modern. Yma gadawaf ddolen i'r gyfres o ddarlithoedd yr oeddwn yn eu hoffi fwyaf: Ap Gwe Stack Llawn gan ddefnyddio Vue.js a Express.js. Y canlyniad yw cymhwysiad cleient-gweinydd gyda rhyngwyneb graffigol cyfarwydd yn arddull Dylunio Deunydd Google. Mae'r API REST rhwng cleient a gweinydd yn cynnwys sawl galwad:

  • HyperledgerDemo/v1/init - cychwyn y blockchain;
  • HyperledgerDemo/v1/accounts/list — cael rhestr o'r holl gyfrifon;
  • HyperledgerDemo/v1/account?name=Bob&balance=100 — creu cyfrif Bob;
  • HyperledgerDemo/v1/info?account=Bob — cael gwybodaeth am gyfrif Bob;
  • HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 - trosglwyddwch ddau ddarn arian o Bob i Alice;
  • HyperledgerDemo/v1/datgysylltu - caewch y cysylltiad â'r blockchain.

Disgrifiad o'r API gydag enghreifftiau wedi'u cynnwys yn Gwefan Postman - rhaglen adnabyddus ar gyfer profi HTTP API.

Cais demo yn Amazon cwmwl

Uwchlwythais y cais i Amazon oherwydd... Nid yw IBM wedi gallu uwchraddio fy nghyfrif o hyd a chaniatáu i mi greu gweinyddwyr rhithwir. Sut i ychwanegu ceirios at y parth: www.citcoin.info. Byddaf yn cadw'r gweinydd ymlaen am ychydig, yna'n ei ddiffodd, oherwydd ... mae cents ar gyfer rhent yn diferu, ac nid yw darnau arian citcoin wedi'u rhestru eto ar y gyfnewidfa stoc) Rwy'n cynnwys sgrinluniau o'r demo yn yr erthygl fel bod rhesymeg y gwaith yn glir. Gall y cais demo:

  • Cychwyn y blockchain;
  • Creu Cyfrif (ond nawr ni allwch greu Cyfrif newydd, oherwydd bod y nifer uchaf o gyfrifon a nodir yn y contract smart wedi'u cyrraedd yn y blockchain);
  • Derbyn rhestr o Gyfrifon;
  • Trosglwyddo darnau arian citcoin rhwng Alice, Bob ac Alex;
  • Derbyn digwyddiadau (ond nawr nid oes unrhyw ffordd i ddangos digwyddiadau, felly er mwyn symlrwydd, dywed y rhyngwyneb nad yw digwyddiadau'n cael eu cefnogi);
  • Logio gweithredoedd.

Yn gyntaf rydym yn cychwyn y blockchain:

Blockchain: pa PoC y dylem ei adeiladu?

Nesaf, rydyn ni'n creu ein cyfrif, peidiwch â gwastraffu amser gyda'r balans:

Blockchain: pa PoC y dylem ei adeiladu?

Rydym yn cael rhestr o'r holl gyfrifon sydd ar gael:

Blockchain: pa PoC y dylem ei adeiladu?

Rydym yn dewis yr anfonwr a'r derbynnydd, ac yn cael eu balansau. Os yw'r anfonwr a'r derbynnydd yr un peth, yna bydd ei gyfrif yn cael ei ailgyflenwi:

Blockchain: pa PoC y dylem ei adeiladu?

Yn y log rydym yn monitro gweithrediad trafodion:

Blockchain: pa PoC y dylem ei adeiladu?

A dweud y gwir, dyna i gyd gyda'r rhaglen demo. Isod gallwch weld ein trafodiad yn y blockchain:

Blockchain: pa PoC y dylem ei adeiladu?

A'r rhestr gyffredinol o drafodion:

Blockchain: pa PoC y dylem ei adeiladu?

Gyda hyn, rydym wedi cwblhau gweithrediad y PoC yn llwyddiannus i greu rhwydwaith Citcoin. Beth arall sydd angen ei wneud i Citcoin ddod yn rhwydwaith llawn ar gyfer trosglwyddo darnau arian? Bach iawn:

  • Ar y cam creu cyfrif, gweithredwch y broses o gynhyrchu allwedd breifat / gyhoeddus. Rhaid storio'r allwedd breifat gyda defnyddiwr y cyfrif, rhaid storio'r allwedd gyhoeddus yn y blockchain.
  • Gwneud trosglwyddiad darn arian lle mae allwedd gyhoeddus, yn hytrach nag enw, yn cael ei ddefnyddio i adnabod y defnyddiwr.
  • Amgryptio trafodion sy'n mynd o'r defnyddiwr i'r gweinydd gyda'i allwedd breifat.

Casgliad

Rydym wedi gweithredu rhwydwaith Citcoin gyda'r swyddogaethau canlynol: ychwanegu cyfrif, cael balans, ychwanegu at eich cyfrif, trosglwyddo darnau arian o un cyfrif i'r llall. Felly, beth gostiodd i ni adeiladu PoC?

  • Mae angen i chi astudio blockchain yn gyffredinol a Hyperledger Fabric yn arbennig;
  • Dysgwch sut i ddefnyddio cymylau IBM neu Amazon;
  • Dysgu iaith raglennu JS a rhywfaint o fframwaith gwe;
  • Os oes angen storio rhywfaint o ddata nid yn y blockchain, ond mewn cronfa ddata ar wahân, yna dysgwch integreiddio, er enghraifft, â PostgreSQL;
  • Ac yn olaf ond nid lleiaf - ni allwch fyw yn y byd modern heb wybodaeth am Linux!)

Wrth gwrs, nid yw'n wyddoniaeth roced, ond bydd yn rhaid i chi weithio'n galed!

Ffynonellau ar GitHub

Ffynonellau a roddwyd ymlaen GitHub. Disgrifiad byr o'r storfa:
Catalog "gweinydd»—Gweinydd Node.js
Catalog "cleient» — Cleient Node.js
Catalog "blockchain"(mae gwerthoedd paramedr ac allweddi, wrth gwrs, yn anweithredol ac yn cael eu rhoi fel enghraifft yn unig):

  • contract - cod ffynhonnell contract smart
  • waled - allweddi defnyddiwr ar gyfer defnyddio'r Hyperledger Fabric API.
  • *.cds - fersiynau wedi'u llunio o gontractau smart
  • * Ffeiliau json - enghreifftiau o ffeiliau ffurfweddu ar gyfer defnyddio'r Hyperledger Fabric API

Dim ond y dechrau ydyw!

Ffynhonnell: hab.com

Ychwanegu sylw