Blockchain: мо бояд кадом PoC созем?

Чашмонат метарсанду дастонат хориш мекунад!

Дар мақолаҳои қаблӣ, мо бо технологияҳое сару кор доштем, ки дар онҳо блокчейнҳо сохта мешаванд (Мо бояд чӣ гуна блокчейн созем?) ва ҳолатҳое, ки метавонанд бо ёрии онҳо амалӣ карда шаванд (Чаро мо бояд парванда бунёд кунем?). Вақти он расидааст, ки бо дастҳои худ кор кунед! Барои татбиқи пилотҳо ва PoC (Proof of Concept), ман истифодаи абрҳоро бартарӣ медиҳам, зеро... ба онҳо аз ҳар гӯшаи ҷаҳон дастрас шудан мумкин аст ва аксар вақт барои насби дилгиронаи муҳити зист вақт сарф кардан лозим нест, зеро Конфигуратсияҳои пешакӣ муқарраршуда мавҷуданд. Пас, биёед як чизи оддӣ созем, масалан, як шабакаи интиқоли тангаҳо байни иштирокчиён ва биёед хоксорона онро Bitcoin номем. Барои ин мо абри IBM ва блокчейнҳои универсалии Hyperledger Fabric -ро истифода хоҳем бурд. Аввалан, биёед бифаҳмем, ки чаро Hyperledger Fabric блокчейн универсалӣ номида мешавад?

Blockchain: мо бояд кадом PoC созем?

Hyperledger Fabric - як blockchain универсалӣ

Умуман, системаи иттилоотии универсалӣ инҳоянд:

  • Маҷмӯи серверҳо ва ядрои нармафзор, ки мантиқи тиҷоратро иҷро мекунад;
  • Интерфейсҳо барои ҳамкорӣ бо система;
  • Асбобҳо барои бақайдгирӣ, аутентификатсия ва иҷозати дастгоҳҳо/одамҳо;
  • Пойгоҳи додаҳо, ки маълумоти оперативӣ ва архивиро нигоҳ медорад:

Blockchain: мо бояд кадом PoC созем?

Варианти расмии Hyperledger Fabric -ро дар он хондан мумкин аст сомона, ва кӯтоҳ, Hyperledger Fabric як платформаи кушодаасос аст, ки ба шумо имкон медиҳад блокчейнҳои хусусӣ созед ва шартномаҳои интеллектуалии худсаронаро, ки бо забонҳои барномасозии JS ва Go навишта шудаанд, иҷро кунед. Биёед меъмории Hyperledger Fabric-ро муфассал дида бароем ва боварӣ ҳосил кунем, ки ин як системаи универсалӣ аст, ки танҳо барои нигоҳдорӣ ва сабти маълумот мушаххасот дорад. Хусусият дар он аст, ки маълумот, ба монанди ҳама блокчейнҳо, дар блокҳое нигоҳ дошта мешавад, ки дар блокчейн ҷойгир карда мешаванд, агар иштирокчиён ба як консенсус бирасанд ва пас аз сабти маълумот оромона ислоҳ ё нест карда нашавад.

Архитектураи матоъҳои Hyperledger

Диаграмма меъмории Hyperledger Fabric-ро нишон медиҳад:

Blockchain: мо бояд кадом PoC созем?

Ташкилотҳо — ташкилотҳо ҳамсолон доранд, яъне. blockchain аз ҳисоби дастгирии созмонҳо вуҷуд дорад. Ташкилотҳои гуногун метавонанд қисми як канал бошанд.

канал — сохтори мантиқӣ, ки ҳамсолонро ба гурӯҳҳо муттаҳид мекунад, яъне. blockchain муайян карда шудааст. Hyperledger Fabric метавонад ҳамзамон блокчейнҳои сершуморро бо мантиқи гуногуни тиҷорат коркард кунад.

Провайдери хидматрасонии аъзогӣ (MSP) як CA (Мақоми сертификатсия) барои додани шахсият ва таъини нақшҳо мебошад. Барои сохтани гиреҳ, шумо бояд бо MSP ҳамкорӣ кунед.

Гиреҳҳои ҳамсол — транзаксияҳоро тафтиш кунед, блокчейнро нигоҳ доред, шартномаҳои оқилона иҷро кунед ва бо барномаҳо муошират кунед. Ҳамсолон шахсияти (шаҳодатномаи рақамӣ) доранд, ки аз ҷониби MSP дода мешавад. Баръакси шабакаи Bitcoin ё Etherium, ки дар он ҳама гиреҳҳо ҳуқуқи баробар доранд, дар Hyperledger Fabric гиреҳҳо нақшҳои гуногун мебозанд:

  • Ҳамсол шояд тарафдори ҳамсол (EP) ва шартномаҳои оқилона иҷро кунед.
  • Ҳамсолон (CP) - танҳо маълумотро дар blockchain захира кунед ва "Ҳолати ҷаҳонӣ" -ро навсозӣ кунед.
  • Anchor Peer (AP) - агар якчанд ташкилотҳо дар blockchain иштирок кунанд, пас барои муоширати байни онҳо ҳамсолони лангар истифода мешаванд. Ҳар як ташкилот бояд як ё якчанд ҳамтоёни лангар дошта бошад. Бо истифода аз AP, ҳар як ҳамсол дар созмон метавонад дар бораи ҳамаи ҳамсолони созмонҳои дигар маълумот гирад. Барои ҳамоҳангсозии иттилоот байни НМ истифода мешавад протоколи ғайбат.
  • Пешвои ҳамсол — агар ташкилот якчанд ҳамсол дошта бошад, пас танҳо роҳбари ҳамсол аз хидмати Фармоиш блокҳоро гирифта, ба дигар ҳамсолон медиҳад. Раҳбар метавонад аз ҷониби ҳамсолон дар созмон статикӣ ё динамикӣ муайян карда шавад. Протоколи ғайбат низ барои ҳамоҳангсозии маълумот дар бораи роҳбарон истифода мешавад.

Дороиҳо — объектҳое, ки арзиш доранд ва дар блокчейн нигоҳ дошта мешаванд. Аниқтараш, ин маълумоти калидӣ дар формати JSON мебошад. Ин маълумотест, ки дар Blockchain сабт шудааст. Онҳо таърихе доранд, ки дар blockchain нигоҳ дошта мешаванд ва ҳолати кунунӣ, ки дар пойгоҳи додаҳои "Давлати Ҷаҳонӣ" нигоҳ дошта мешаванд. Сохторҳои маълумот вобаста ба вазифаҳои тиҷоратӣ худсарона пур карда мешаванд. Майдонҳои ҳатмӣ вуҷуд надоранд, танҳо як тавсия ин аст, ки дороиҳо бояд соҳиби ва арзишманд бошанд.

Ledger — аз Blockchain ва базаи давлатии Word иборат аст, ки ҳолати кунунии дороиҳоро нигоҳ медорад. Давлати ҷаҳонӣ LevelDB ё CouchDB -ро истифода мебарад.

Шартномаи интеллектуалӣ - бо истифода аз шартномаҳои интеллектуалӣ, мантиқи тиҷорати система амалӣ карда мешавад. Дар Hyperledger Fabric, шартномаҳои интеллектуалӣ chaincode номида мешаванд. Бо истифода аз занҷир, дороиҳо ва муомилот аз болои онҳо муайян карда мешаванд. Ба истилоҳи техникӣ, шартномаҳои интеллектуалӣ модулҳои нармафзор мебошанд, ки бо забонҳои барномасозии JS ё Go амалӣ карда мешаванд.

Сиёсати тасдиқ — барои ҳар як коди занҷир, шумо метавонед сиёсатеро муқаррар кунед, ки чӣ қадар тасдиқи транзаксия бояд интизор шавад ва аз кӣ. Агар сиёсат муқаррар карда нашуда бошад, пешфарз ин аст: "муомилот бояд аз ҷониби ягон узви ягон созмони канал тасдиқ карда шавад." Намунаҳои сиёсатҳо:

  • Муомилот бояд аз ҷониби ягон маъмури ташкилот тасдиқ карда шавад;
  • Бояд аз ҷониби ягон аъзо ё муштарии созмон тасдиқ карда шавад;
  • Бояд аз ҷониби ягон ташкилоти ҳамсол тасдиқ карда шавад.

Хизматрасонии фармоиш — транзаксияҳоро ба блокҳо бастабандӣ мекунад ва онҳоро ба ҳамсолони канал мефиристад. Интиқоли паёмҳоро ба ҳама ҳамсолони шабака кафолат медиҳад. Барои системаҳои саноатӣ истифода мешавад Брокери паёми Кафка, барои таҳия ва озмоиш затсиониро.

CallFlow

Blockchain: мо бояд кадом PoC созем?

  • Ин барнома бо Hyperledger Fabric бо истифода аз Go, Node.js ё Java SDK муошират мекунад;
  • Муштарӣ як транзаксияи tx эҷод мекунад ва онро ба ҳамсолони индоссант мефиристад;
  • Ҳамсол имзои муштариро тафтиш мекунад, транзаксияро анҷом медиҳад ва имзои тасдиқро ба муштарӣ бармегардонад. Chaincode танҳо дар ҳамсолони индоссант иҷро карда мешавад ва натиҷаи иҷрои он ба ҳама ҳамсолон фиристода мешавад. Ин алгоритми кор консенсуси PBFT (Practical Fault Byzantine Tolerant) номида мешавад. Аз BFT классикӣ далели фиристодани паём ва тасдиқи он на аз ҳама иштирокчиён, балки танҳо аз маҷмӯи муайян интизор аст;
  • Пас аз он ки муштарӣ шумораи ҷавобҳои мувофиқи сиёсати индоссаментро гирифт, вай транзаксияро ба хадамоти фармоишӣ мефиристад;
  • Хидмати фармоишӣ блок тавлид мекунад ва онро ба ҳамаи ҳамсолони иҷрокунанда мефиристад. Хидмати фармоишӣ сабти пайдарпайи блокҳоро таъмин мекунад, ки ба истилоҳ форкҳои дафтарро нест мекунад (ба бахши "Форкҳо" нигаред);
  • Ҳамсолон блокро мегиранд, сиёсати тасдиқро дубора санҷед, блокро ба blockchain нависед ва ҳолатро дар МД "Ҳолати ҷаҳонӣ" тағир диҳед.

Онхое. Ин боиси тақсими нақшҳо дар байни гиреҳҳо мегардад. Ин кафолат медиҳад, ки blockchain миқёспазир ва бехатар аст:

  • Шартномаҳои интеллектуалӣ (chaincode) ҳамсолонро тасдиқ мекунанд. Ин махфияти шартномаҳои интеллектуалиро таъмин мекунад, зеро онро на ҳама иштирокчиён нигоҳ медоранд, балки танҳо тавассути тасдиқи ҳамсолон.
  • Фармоиш бояд зуд кор кунад. Ин бо он далел таъмин карда мешавад, ки Фармоиш танҳо блокро ташкил медиҳад ва онро ба маҷмӯи собит ҳамсолони пешво мефиристад.
  • Ҳамсолони содиршуда танҳо блокчейнро нигоҳ медоранд - онҳо метавонанд бисёре аз онҳо бошанд ва онҳо қувваи зиёд ва амалиёти фаврӣ талаб намекунанд.

Тафсилоти бештарро дар бораи қарорҳои меъмории Hyperledger Fabric ва чаро он ин тавр кор мекунад ва на ба таври дигар дар ин ҷо пайдо кардан мумкин аст: Пайдоиши меъморӣ ё ин ҷо: Hyperledger Fabric: Системаи амалиётии тақсимшуда барои блокчейнҳои иҷозатдодашуда.

Ҳамин тавр, Hyperledger Fabric як системаи воқеан универсалӣ аст, ки шумо метавонед:

  • Татбиқи мантиқи тиҷорати худсарона бо истифода аз механизми шартномаи оқилона;
  • Маълумотро аз пойгоҳи додаҳои blockchain дар формати JSON сабт ва қабул кунед;
  • Бо истифода аз мақомоти сертификатсия дастрасии API-ро диҳед ва тафтиш кунед.

Акнун, ки мо дар бораи мушаххасоти Hyperledger Fabric каме фаҳмидем, биёед дар ниҳоят як кори муфид кунем!

Ҷойгиркунии blockchain

Тартиб додани масъала

Вазифа аз он иборат аст, ки шабакаи Citcoin бо вазифаҳои зерин амалӣ карда шавад: ҳисоб эҷод кунед, бақия гиред, ҳисоби худро пур кунед, тангаҳо аз як ҳисоб ба ҳисоби дигар интиқол диҳед. Биёед модели объектро кашем, ки мо минбаъд онро дар шартномаи интеллектуалӣ татбиқ хоҳем кард. Ҳамин тавр, мо ҳисобҳое хоҳем дошт, ки аз рӯи номҳо муайян карда шудаанд ва дорои тавозун ва рӯйхати ҳисобҳо мебошанд. Ҳисобҳо ва рӯйхати ҳисобҳо аз нуқтаи назари дороиҳои Hyperledger Fabric мебошанд. Аз ин рӯ, онҳо таърих ва вазъи кунунӣ доранд. Ман кӯшиш мекунам, ки инро равшантар кашам:

Blockchain: мо бояд кадом PoC созем?

Рақамҳои боло ҳолати кунунӣ мебошанд, ки дар пойгоҳи додаҳои "Давлати Ҷаҳонӣ" нигоҳ дошта мешаванд. Дар зер рақамҳое ҳастанд, ки таърихи дар blockchain нигоҳ дошташударо нишон медиҳанд. Ҳолати ҷории дороиҳо тавассути муомилот тағир дода мешавад. Актив танҳо дар маҷмӯъ тағир меёбад, бинобар ин дар натиҷаи муомилот объекти нав сохта мешавад ва арзиши ҷории дороиҳо ба таърих ворид мешавад.

IBM Cloud

Мо ҳисобро дар Абри IBM. Барои истифодаи платформаи blockchain, он бояд ба Pay-As-You-Go такмил дода шавад. Ин раванд метавонад зуд набошад, зеро... IBM маълумоти иловагӣ талаб мекунад ва онро дастӣ тафтиш мекунад. Бо як ёддошти мусбӣ, ман гуфта метавонам, ки IBM дорои маводи хуби таълимӣ мебошад, ки ба шумо имкон медиҳад Hyperledger Fabric-ро дар абри худ ҷойгир кунед. Ба ман силсилаи мақолаҳо ва мисолҳои зерин маъқул шуд:

Дар зер скриншотҳои платформаи IBM Blockchain оварда шудаанд. Ин дастур оид ба сохтани блокчейн нест, балки танҳо як намоиши доираи вазифа аст. Ҳамин тавр, барои мақсадҳои худ, мо як созмонро ташкил медиҳем:

Blockchain: мо бояд кадом PoC созем?

Мо дар он гиреҳҳо эҷод мекунем: Orderer CA, Org1 CA, Orderer Peer:

Blockchain: мо бояд кадом PoC созем?

Мо корбаронро эҷод мекунем:

Blockchain: мо бояд кадом PoC созем?

Канал эҷод кунед ва онро citcoin меномед:

Blockchain: мо бояд кадом PoC созем?

Аслан Channel як blockchain аст, бинобар ин он бо блоки сифр оғоз мешавад (Блоки Ҳастӣ):

Blockchain: мо бояд кадом PoC созем?

Навиштани шартномаи интеллектуалӣ

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

Ба таври интуитивӣ, ҳама чиз бояд дар ин ҷо равшан бошад:

  • Якчанд функсияҳо мавҷуданд (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance), ки барномаи намоишӣ бо истифода аз API Hyperledger Fabric даъват мекунад.
  • Функсияҳои SendFrom ва RefillBalance Ҳодисаҳоеро тавлид мекунанд, ки барномаи намоишӣ қабул мекунад.
  • Функсияи фаврӣ як маротиба вақте даъват карда мешавад, ки шартномаи интеллектуалӣ таъсис дода мешавад. Дар асл, он на танҳо як маротиба номида мешавад, балки ҳар дафъае, ки версияи шартномаи интеллектуалӣ тағир меёбад. Аз ин рӯ, оғоз кардани рӯйхат бо массиви холӣ фикри бад аст, зеро Ҳоло, вақте ки мо версияи шартномаи интеллектуалиро тағир медиҳем, мо рӯйхати ҷорӣро аз даст медиҳем. Аммо хуб аст, ман танҳо омӯхта истодаам).
  • Ҳисобҳо ва рӯйхати ҳисобҳо сохторҳои додаҳои JSON мебошанд. JS барои коркарди додаҳо истифода мешавад.
  • Шумо метавонед бо истифода аз занги функсияи getState арзиши ҷории дороиро гиред ва онро бо истифода аз putState навсозӣ кунед.
  • Ҳангоми эҷод кардани Ҳисоб, функсияи AddAccount даъват карда мешавад, ки дар он барои шумораи максималии ҳисобҳо дар blockchain муқоиса карда мешавад (maxAccounts = 5). Ва дар ин ҷо ҷабби вуҷуд дорад (шумо пай бурдед?), ки боиси афзоиши беохири шумораи ҳисобҳо мегардад. Чунин хатогиҳо бояд пешгирӣ карда шаванд)

Баъдан, мо шартномаи интеллектуалиро ба Канал бор мекунем ва онро эҷод мекунем:

Blockchain: мо бояд кадом PoC созем?

Биёед ба транзаксия барои насб кардани шартномаи Smart назар кунем:

Blockchain: мо бояд кадом PoC созем?

Биёед ба тафсилоти Каналамон назар андозем:

Blockchain: мо бояд кадом PoC созем?

Дар натиҷа, мо диаграммаи зерини шабакаи blockchain дар абри IBM мегирем. Диаграмма инчунин як барномаи намоиширо нишон медиҳад, ки дар абри Amazon дар сервери виртуалӣ кор мекунад (бештар дар бораи он дар фасли оянда):

Blockchain: мо бояд кадом PoC созем?

Эҷоди GUI барои зангҳои Hyperledger Fabric API

Hyperledger Fabric дорои API мебошад, ки метавонад барои:

  • Эҷоди канал;
  • Пайвастшавӣ ба канал;
  • Насб ва эҷоди шартномаҳои интеллектуалӣ дар канал;
  • амалиёти занг;
  • Дар бораи blockchain маълумот дархост кунед.

Таҳияи барнома

Дар барномаи намоишии мо мо API-ро танҳо барои занг задан ба транзаксияҳо ва дархост кардани маълумот истифода хоҳем кард, зеро Мо аллакай қадамҳои боқимондаро бо истифода аз платформаи blockchain IBM анҷом додем. Мо бо истифода аз стек технологияи стандартӣ GUI менависем: Express.js + Vue.js + Node.js. Шумо метавонед дар бораи чӣ гуна оғоз кардани эҷоди замимаҳои муосири веб мақолаи алоҳида нависед. Дар ин ҷо ман истинод ба силсилаи лексияҳоеро мегузорам, ки ба ман бештар писанд омад: Web App Full Stack бо истифода аз Vue.js & Express.js. Дар натиҷа як барномаи муштарӣ-сервер бо интерфейси графикии шинос бо услуби Google Material Design мебошад. API REST байни муштарӣ ва сервер аз якчанд зангҳо иборат аст:

  • HyperledgerDemo/v1/init - блокчейнро оғоз кунед;
  • HyperledgerDemo/v1/accounts/list — гирифтани рӯйхати ҳамаи ҳисобҳо;
  • HyperledgerDemo/v1/account?name=Bob&balance=100 — эҷод кардани ҳисоби Боб;
  • HyperledgerDemo/v1/info?account=Боб — дар бораи ҳисоби Боб маълумот гиред;
  • HyperledgerDemo/v1/transaction?from=Bob&to=Алис&volume=2 - интиқоли ду танга аз Боб ба Алис;
  • HyperledgerDemo/v1/disconnect - пайвастро ба blockchain пӯшед.

Тавсифи API бо мисолҳои дохилшуда Вебсайти почта - як барномаи маъруф барои санҷиши HTTP API.

Замимаи намоишӣ дар абрҳои Amazon

Ман барномаро ба Amazon бор кардам, зеро... IBM то ҳол натавонистааст ҳисоби худро навсозӣ кунад ва ба ман иҷозат диҳад, ки серверҳои виртуалӣ эҷод кунам. Чӣ тавр ба домен гелос илова кардан мумкин аст: www.citcoin.info. Ман серверро барои муддате фаъол нигоҳ медорам, баъд онро хомӯш мекунам, зеро... сент барои иҷора мерезад ва тангаҳои citcoin ҳанӯз дар биржа сабт нашудаанд) Ман скриншотҳои намоиширо дар мақола дохил мекунам, то мантиқи кор равшан бошад. Барномаи намоишӣ метавонад:

  • Блокчейнро оғоз кунед;
  • Ҳисоб эҷод кунед (аммо ҳоло шумо ҳисоби нав эҷод карда наметавонед, зеро шумораи максималии ҳисобҳои дар шартномаи интеллектуалӣ зикршуда дар blockchain расидааст);
  • Рӯйхати ҳисобҳоро гиред;
  • Интиқоли тангаҳои citcoin байни Алис, Боб ва Алекс;
  • Гирифтани рӯйдодҳо (аммо ҳоло роҳи нишон додани рӯйдодҳо вуҷуд надорад, бинобар ин интерфейс барои соддагӣ мегӯяд, ки рӯйдодҳо дастгирӣ намешаванд);
  • Ҳисоб кардани амалҳо.

Аввал мо blockchain-ро оғоз мекунем:

Blockchain: мо бояд кадом PoC созем?

Баъдан, мо ҳисоби худро эҷод мекунем, бо тавозун вақтро беҳуда сарф накунед:

Blockchain: мо бояд кадом PoC созем?

Мо рӯйхати ҳамаи ҳисобҳои дастрасро мегирем:

Blockchain: мо бояд кадом PoC созем?

Мо ирсолкунанда ва қабулкунандаро интихоб мекунем ва тавозуни онҳоро мегирем. Агар ирсолкунанда ва гиранда якхела бошанд, пас ҳисоби ӯ пур карда мешавад:

Blockchain: мо бояд кадом PoC созем?

Дар гузориш мо иҷрои транзаксияҳоро назорат мекунем:

Blockchain: мо бояд кадом PoC созем?

Дар асл, ин ҳама бо барномаи намоишӣ аст. Дар зер шумо метавонед амалиёти моро дар blockchain бубинед:

Blockchain: мо бояд кадом PoC созем?

Ва рӯйхати умумии амалиётҳо:

Blockchain: мо бояд кадом PoC созем?

Бо ин, мо татбиқи PoC-ро барои эҷоди шабакаи Citcoin бомуваффақият анҷом додем. Барои он ки Citcoin ба шабакаи мукаммали интиқоли тангаҳо табдил ёбад, боз чӣ кор кардан лозим аст? Хеле хурд:

  • Дар марҳилаи эҷоди ҳисоб, тавлиди калиди хусусӣ/оммавиро амалӣ кунед. Калиди хусусӣ бояд бо корбари ҳисоб нигоҳ дошта шавад, калиди ҷамъиятӣ бояд дар blockchain нигоҳ дошта шавад.
  • Интиқоли тангаро анҷом диҳед, ки дар он калиди оммавӣ, на ном, барои муайян кардани корбар истифода мешавад.
  • Амалиётҳоеро, ки аз корбар ба сервер мегузаранд, бо калиди шахсии ӯ рамзгузорӣ кунед.

хулоса

Мо шабакаи Citcoin-ро бо вазифаҳои зерин татбиқ кардем: ҳисоб илова кунед, бақия гиред, ҳисоби худро пур кунед, тангаҳо аз як ҳисоб ба ҳисоби дигар интиқол диҳед. Пас, сохтани як PoC ба мо чӣ арзиш дошт?

  • Шумо бояд блокчейнро дар маҷмӯъ ва махсусан Hyperledger Fabric-ро омӯзед;
  • Истифодаи абрҳои IBM ё Amazon омӯзед;
  • Забони барномасозии JS ва баъзе чаҳорчӯбаи вебро омӯзед;
  • Агар баъзе маълумотҳо на дар blockchain, балки дар пойгоҳи додаҳои алоҳида нигоҳ дошта шаванд, пас интегратсияро, масалан, бо PostgreSQL омӯзед;
  • Ва ниҳоят, вале на камтар аз он - шумо наметавонед дар ҷаҳони муосир бе дониши Linux зиндагӣ кунед!)

Албатта, ин илми ракета нест, аммо шумо бояд сахт кор кунед!

Сарчашмаҳо дар GitHub

Сарчашмаҳо гузоштанд GitHub. Тавсифи мухтасари репозиторий:
Каталоги «сервер» — Сервери Node.js
Каталоги «муштарӣ» — муштарии Node.js
Каталоги «blockchain"(арзишҳои параметрҳо ва калидҳо, албатта, кор намекунанд ва танҳо ҳамчун мисол оварда шудаанд):

  • шартнома — рамзи сарчашмаи шартномаи интеллектуалӣ
  • ҳамён — калидҳои корбар барои истифодаи API Hyperledger Fabric.
  • *.cds - версияҳои тартибдодашудаи шартномаҳои интеллектуалӣ
  • Файлҳои *.json - намунаҳои файлҳои конфигуратсия барои истифодаи Hyperledger Fabric API

Ин танҳо ибтидо аст!

Манбаъ: will.com

Илова Эзоҳ