Blockchain: he aha ka PoC e kūkulu ai mākou?

Makaʻu kou mau maka a makaʻu nā lima!

Ma nā ʻatikala ma mua, ua nānā mākou i nā ʻenehana i kūkulu ʻia ai nā blockchains (He aha kā mākou e kūkulu ai i kahi blockchain?) a me nā hihia i hiki ke hoʻokō me kā lākou kōkua (No ke aha mākou e kūkulu ai i kahi hihia?). ʻO ka manawa kēia e hana me kou mau lima! No ka hoʻokō ʻana i nā pailaka a me PoC (Proof of Concept), makemake wau e hoʻohana i nā ao, no ka mea... hiki ke loaʻa iā lākou mai nā wahi a pau o ka honua a, pinepine, ʻaʻohe pono e hoʻopau i ka manawa ma ka hoʻokomo luhi ʻana o ke kaiapuni, no ka mea Aia nā hoʻonohonoho paʻa mua. No laila, e hana mākou i kahi mea maʻalahi, no ka laʻana, kahi pūnaewele no ka hoʻoili ʻana i nā kālā ma waena o nā mea komo a kapa ʻia ʻo ia ʻo Bitcoin. No kēia mea, e hoʻohana mākou i ke ao IBM a me ka honua blockchain Hyperledger Fabric. ʻO ka mea mua, e noʻonoʻo kākou no ke aha i kapa ʻia ai ʻo Hyperledger Fabric he blockchain universal?

Blockchain: he aha ka PoC e kūkulu ai mākou?

ʻO Hyperledger Fabric - kahi blockchain āpau

ʻO ka ʻōlelo maʻamau, ʻo kahi ʻōnaehana ʻike honua:

  • ʻO kahi hoʻonohonoho o nā kikowaena a me kahi lako polokalamu e hana ana i ka loiloi ʻoihana;
  • Nā kikowaena no ka launa pū ʻana me ka ʻōnaehana;
  • Nā mea hana no ka hoʻopaʻa inoa ʻana, ka hōʻoia ʻana a me ka ʻae ʻana i nā mea hana / kanaka;
  • Hoʻopaʻa waihona waihona ʻikepili hana a me ka waihona:

Blockchain: he aha ka PoC e kūkulu ai mākou?

Hiki ke heluhelu ʻia ka mana mana o ka Hyperledger Fabric kahua pūnaewele, a ma ka pōkole, ʻo Hyperledger Fabric kahi kahua opensource e hiki ai iā ʻoe ke kūkulu i nā poloka pilikino a hoʻokō i nā ʻaelike akamai ʻole i kākau ʻia ma nā ʻōlelo papahana JS a me Go. E nānā pono kākou i ka hoʻolālā ʻana o Hyperledger Fabric a e hōʻoia ʻo ia he ʻōnaehana holoʻokoʻa i loaʻa wale nā ​​kikoʻī no ka mālama ʻana a me ka hoʻopaʻa ʻana i ka ʻikepili. ʻO ka mea kikoʻī, ʻo ka ʻikepili, e like me nā blockchains āpau, mālama ʻia i nā poloka i kau ʻia ma ka blockchain wale nō inā loaʻa nā mea komo i kahi ʻaelike a ma hope o ka hoʻopaʻa ʻana i ka ʻikepili ʻaʻole hiki ke hoʻoponopono mālie a holoi ʻia.

Hoʻolālā lole Hyperledger

Hōʻike ke kiʻikuhi i ka hale hana Hyperledger Fabric:

Blockchain: he aha ka PoC e kūkulu ai mākou?

ʻO nā hui - aia nā hui i nā hoa, i.e. Aia ka blockchain ma muli o ke kākoʻo o nā hui. Hiki i nā hui like ʻole ke lilo i ʻāpana o ke ala like.

Kanal - kahi hoʻolālā kūpono e hoʻohui i nā hoa i nā hui, ʻo ia hoʻi. ua kuhikuhi ʻia ka blockchain. Hiki i ka Hyperledger Fabric ke hana like i nā blockchains me nā loina ʻoihana like ʻole.

Mea hoʻolako lawelawe lālā (MSP) he CA (Certificate Authority) no ka hoʻopuka ʻana i ka ʻike a me ka hāʻawi ʻana i nā kuleana. No ka hana ʻana i kahi node, pono ʻoe e launa pū me ka MSP.

Nā node hoa - hōʻoia i nā kālepa, mālama i ka blockchain, hoʻokō i nā ʻaelike akamai a launa pū me nā noi. He ʻike ko nā hoa (palapala kikohoʻe), i hoʻopuka ʻia e ka MSP. ʻAʻole like me ka pūnaewele Bitcoin a i ʻole Etherium, kahi i loaʻa ai nā kuleana like ʻole, ma Hyperledger Fabric nodes e pāʻani i nā kuleana like ʻole:

  • Peer paha hoa kākoʻo (EP) a hoʻokō i nā ʻaelike akamai.
  • Hoʻopaʻa hoa (CP) - e mālama wale i ka ʻikepili i loko o ka blockchain a hōʻano hou i ka "World state".
  • Heleuma Peer (AP) - inā komo kekahi mau hui i ka blockchain, a laila hoʻohana ʻia nā hoa heleuma no ke kamaʻilio ma waena o lākou. Pono kēlā me kēia hui i hoʻokahi a ʻoi aku paha mau hoa heleuma. Ma ka hoʻohana ʻana iā AP, hiki i kēlā me kēia hoa i loko o kahi hui ke loaʻa ka ʻike e pili ana i nā hoa āpau ma nā hui ʻē aʻe. Hoʻohana ʻia e hoʻonohonoho i ka ʻike ma waena o nā AP protocol haʻihaʻi.
  • Alakai Peer - inā he nui nā hoa o kahi hui, a laila ʻo ke alakaʻi wale nō o ka hoa e loaʻa nā poloka mai ka lawelawe Kauoha a hāʻawi iā lākou i ke koena o nā hoa. Hiki ke kuhikuhi ʻia ke alakaʻi ma ke ʻano statically a i ʻole ke koho ikaika ʻia e nā hoa o ka hui. Hoʻohana pū ʻia ka protocol gossip e hoʻonohonoho i ka ʻike e pili ana i nā alakaʻi.

waiwai - nā hui i waiwai a mālama ʻia ma ka blockchain. ʻOi aku ka kikoʻī, ʻo kēia ka ʻikepili waiwai nui ma JSON format. ʻO kēia ka ʻikepili i hoʻopaʻa ʻia ma ka Blockchain. Loaʻa iā lākou kahi moʻolelo, i mālama ʻia i loko o ka blockchain, a me kahi kūlana o kēia manawa, i mālama ʻia ma ka waihona "World state". Hoʻopiha ʻia nā hale ʻikepili ma muli o nā hana ʻoihana. ʻAʻohe kahua i koi ʻia, ʻo ka ʻōlelo hoʻokahi wale nō e loaʻa i ka waiwai ka mea nona a waiwai.

Ledger - aia i loko o ka Blockchain a me ka ʻikepili mokuʻāina ʻo Word, kahi e mālama ai i ke kūlana o kēia manawa. Hoʻohana ka mokuʻāina honua i ka LevelDB a i ʻole CouchDB.

Aelike akamai - me ka hoʻohana ʻana i nā ʻaelike akamai, hoʻokō ʻia ka loiloi ʻoihana o ka ʻōnaehana. Ma Hyperledger Fabric, kapa ʻia nā ʻaelike akamai i ka chaincode. Ke hoʻohana nei i ka chaincode, ua kuhikuhi ʻia nā waiwai a me nā kālepa ma luna o lākou. Ma nā ʻōlelo loea, ʻo nā ʻaelike akamai he mau polokalamu polokalamu i hoʻokō ʻia ma nā ʻōlelo papahana JS a i ʻole Go.

Ke kulekele kākoʻo - no kēlā me kēia chaincode, hiki iā ʻoe ke hoʻonohonoho i kahi kulekele e pili ana i ka nui o nā hōʻoia no kahi kālepa e manaʻo ʻia a mai wai mai. Inā ʻaʻole i hoʻonohonoho ʻia ke kulekele, a laila ʻo ka mea paʻamau: "pono ​​​​e hōʻoia ʻia ke kālepa e kekahi lālā o kekahi hui ma ke kahawai." Nā laʻana o nā kulekele:

  • Pono e ʻae ʻia ke kālepa e kekahi luna hoʻomalu o ka hui;
  • Pono e hōʻoia e kekahi lālā a mea kūʻai paha o ka hui;
  • Pono e hōʻoia ʻia e kekahi hui hoa.

Ka lawelawe kauoha - hoʻopili i nā kālepa i loko o nā poloka a hoʻouna iā lākou i nā hoa ma ke kahawai. Hōʻoia i ka hāʻawi ʻana i nā memo i nā hoa āpau ma ka pūnaewele. Hoʻohana ʻia no nā ʻōnaehana ʻoihana Kafka mea kūʻai leka, no ka hoʻomohala ʻana a me ka hoʻāʻo ʻana Solo.

CallFlow

Blockchain: he aha ka PoC e kūkulu ai mākou?

  • Hoʻopili ka palapala noi me Hyperledger Fabric me ka hoʻohana ʻana iā Go, Node.js a i ʻole Java SDK;
  • Hoʻokumu ka mea kūʻai i kahi kālepa tx a hoʻouna iā ia i nā hoa kākoʻo;
  • Hōʻoia ka Peer i ka pūlima o ka mea kūʻai, hoʻopau i ke kālepa, a hoʻouna i ka pūlima hōʻoia i ka mea kūʻai. Hoʻokō ʻia ka Chaincode ma luna o ka hoa kākoʻo, a hoʻouna ʻia ka hopena o kāna hoʻokō ʻana i nā hoa āpau. Ua kapa ʻia kēia algorithm o ka hana ʻo PBFT (Practical Byzantine Fault Tolerant) consensus. Okoa mai BFT maʻamau ʻo ka ʻoiaʻiʻo i hoʻouna ʻia ka leka a manaʻo ʻia ka hōʻoia ʻana ʻaʻole mai nā poʻe āpau, akā mai kahi hoʻonohonoho wale nō;
  • Ma hope o ka loaʻa ʻana o ka helu o nā pane e pili ana i ke kulekele hōʻoia, hoʻouna ʻo ia i ke kālepa i ka lawelawe Ordering;
  • Hoʻopuka ka lawelawe kauoha i kahi poloka a hoʻouna iā ia i nā hoa hana a pau. Mālama ka lawelawe kauoha i ka hoʻopaʻa ʻana o nā poloka, kahi e hoʻopau ai i ka mea i kapa ʻia ʻo ledger fork (e ʻike i ka ʻāpana "Forks");
  • Loaʻa nā hoa i kahi poloka, e nānā hou i ke kulekele hōʻoia, e kākau i ka poloka i ka blockchain a hoʻololi i ka mokuʻāina i ka "World state" DB.

ʻO kēlā mau. ʻO kēia ka hopena i ka mahele o nā kuleana ma waena o nā nodes. ʻO kēia ka mea e hōʻoia i ka paʻa a paʻa ka blockchain:

  • Hana nā ʻaelike akamai (chaincode) i nā hoa kākoʻo. Mālama kēia i ka hūnā o nā ʻaelike akamai, no ka mea ʻAʻole mālama ʻia e nā mea komo a pau, akā ma ke kākoʻo ʻana i nā hoa.
  • Pono e hana koke ke kauoha. Hoʻopaʻa ʻia kēia ma ka ʻoiaʻiʻo ʻo Ordering wale nō e hana i kahi poloka a hoʻouna iā ia i kahi hoʻonohonoho paʻa o nā hoa alakaʻi.
  • ʻO ka hana ʻana i nā hoa e mālama wale i ka blockchain - hiki ke nui o lākou a ʻaʻole pono lākou i ka mana a me ka hana koke.

ʻO nā kikoʻī hou aʻe e pili ana i nā hoʻonā hale hana o Hyperledger Fabric a me ke kumu e hana ai i kēia ala a ʻaʻole hiki ke loaʻa ma aneʻi: Kumu Hoʻolālā a i ʻole ma ʻaneʻi: ʻO Hyperledger Fabric: He Pūnaehana Hana Hoʻolaha no nā Blockchains ʻAe ʻia.

No laila, ʻo Hyperledger Fabric kahi ʻōnaehana honua maoli e hiki ai iā ʻoe:

  • E hoʻokō i ka loiloi ʻoihana kūʻokoʻa me ka hoʻohana ʻana i ka mīkini ʻaelike akamai;
  • Hoʻopaʻa a loaʻa i ka ʻikepili mai ka waihona blockchain ma JSON format;
  • Hāʻawi a hōʻoia i ke komo ʻana i ka API me ka hoʻohana ʻana i ka Mana Palapala.

I kēia manawa ua maopopo iki mākou i nā kikoʻī o Hyperledger Fabric, e hana hope mākou i kahi mea pono!

Ke hoʻolaha nei i ka blockchain

Ka hoʻokumu ʻana i ka pilikia

ʻO ka hana e hoʻokō i ka pūnaewele Citcoin me kēia mau hana: hana i kahi moʻokāki, loaʻa kahi kaulike, hoʻonui i kāu moʻokāki, hoʻoili kālā mai kahi moʻokāki i kekahi. E kahakiʻi mākou i kahi kumu hoʻohālike, a mākou e hoʻokō hou ai i kahi ʻaelike akamai. No laila, e loaʻa iā mākou nā moʻokāki i ʻike ʻia e nā inoa a loaʻa kahi koena, a me kahi papa inoa o nā moʻokāki. ʻO nā moʻokāki a me kahi papa inoa o nā moʻolelo, ma ke ʻano o nā waiwai Hyperledger Fabric. No laila, he moʻolelo ko lākou a me ke kūlana o kēia manawa. E ho'āʻo wau e kaha kiʻi i kēia me ka maopopo:

Blockchain: he aha ka PoC e kūkulu ai mākou?

ʻO nā helu kiʻekiʻe ka moku'āina o kēia manawa, i mālama ʻia ma ka waihona "World state". Aia ma lalo o lākou nā kiʻi e hōʻike ana i ka mōʻaukala i mālama ʻia ma ka blockchain. Hoʻololi ʻia ke kūlana waiwai o kēia manawa e nā kālepa. Hoʻololi wale ʻia ka Asset ma ke ʻano holoʻokoʻa, no laila, ma muli o ke kālepa ʻana, ua hana ʻia kahi mea hou, a hele ka waiwai o kēia manawa i ka mōʻaukala.

IBM Cloud

Hana mākou i kahi moʻokāki ma ao IBM. No ka hoʻohana ʻana i ka paepae blockchain, pono e hoʻonui ʻia i ka Pay-As-You-Go. ʻAʻole wikiwiki paha kēia kaʻina hana, no ka mea... Noi ʻo IBM i ka ʻike hou aʻe a hōʻoia me ka lima. Ma kahi moʻolelo maikaʻi, hiki iaʻu ke ʻōlelo aku he mau mea hoʻomaʻamaʻa maikaʻi ʻo IBM e ʻae iā ʻoe e kau i ka Hyperledger Fabric i kā lākou ao. Ua makemake au i kēia mau ʻatikala a me nā laʻana:

Eia nā kiʻi paʻi o ka IBM Blockchain platform. ʻAʻole kēia he ʻōlelo aʻo e pili ana i ka hana ʻana i kahi blockchain, akā he hōʻike wale nō o ke ʻano o ka hana. No laila, no kā mākou kumu, hana mākou i hoʻokahi Hui:

Blockchain: he aha ka PoC e kūkulu ai mākou?

Hoʻokumu mākou i nā nodes i loko: Orderer CA, Org1 CA, Orderer Peer:

Blockchain: he aha ka PoC e kūkulu ai mākou?

Hana mākou i nā mea hoʻohana:

Blockchain: he aha ka PoC e kūkulu ai mākou?

E hana i kahi Kanal a kapa ʻia ʻo citcoin:

Blockchain: he aha ka PoC e kūkulu ai mākou?

ʻO ka mea nui he blockchain ka Channel, no laila e hoʻomaka me ka block zero (Genesis block):

Blockchain: he aha ka PoC e kūkulu ai mākou?

Ke kākau ʻana i kahi ʻaelike akamai

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

Ma ka intuitive, pono e maopopo nā mea a pau ma aneʻi:

  • Nui nā hana (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) e kāhea ka papahana demo me ka Hyperledger Fabric API.
  • Hoʻokumu nā hana SendFrom a me RefillBalance i nā hanana e loaʻa i ka papahana demo.
  • Kāhea ʻia ka hana instantiate i ka wā e hoʻomaka koke ʻia ai kahi ʻaelike akamai. ʻOiaʻiʻo, kapa ʻia ʻaʻole hoʻokahi wale nō, akā i kēlā me kēia manawa ke hoʻololi ʻia ka mana o ka ʻaelike akamai. No laila, he manaʻo maikaʻi ʻole ka hoʻomaka ʻana i kahi papa inoa me kahi papa ʻole, no ka mea I kēia manawa, ke hoʻololi mākou i ka mana o ka ʻaelike akamai, e nalowale mākou i ka papa inoa o kēia manawa. Akā ʻaʻole maikaʻi, aʻo wale wau).
  • ʻO nā moʻokāki a me ka papa inoa o nā moʻolelo he mau ʻikepili JSON. Hoʻohana ʻia ʻo JS no ka hoʻoponopono ʻikepili.
  • Hiki iā ʻoe ke loaʻa ka waiwai i kēia manawa o kahi waiwai me ka hoʻohana ʻana i ka hana getState, a hoʻonui iā ia me ka putState.
  • I ka hana ʻana i kahi moʻokāki, kāhea ʻia ka hana AddAccount, kahi i hoʻohālikelike ʻia no ka helu kiʻekiʻe o nā moʻokāki ma ka blockchain (maxAccounts = 5). A eia kahi jamb (ua ʻike ʻoe?), e alakaʻi i ka hoʻonui pau ʻole o ka helu o nā moʻolelo. Pono e pale ʻia kēlā mau hewa)

A laila, hoʻouka mākou i ka ʻaelike akamai i ka Channel a hoʻomaka koke:

Blockchain: he aha ka PoC e kūkulu ai mākou?

E nānā i ke kālepa no ka hoʻokomo ʻana i ka Smart Contract:

Blockchain: he aha ka PoC e kūkulu ai mākou?

E nānā i nā kikoʻī e pili ana i kā mākou Kanal:

Blockchain: he aha ka PoC e kūkulu ai mākou?

ʻO ka hopena, loaʻa iā mākou ke kiʻikuhi aʻe o kahi pūnaewele blockchain i ke ao IBM. Hōʻike pū ke kiʻikuhi i kahi papahana demo e holo ana ma ke ao Amazon ma kahi kikowaena virtual (e pili ana iā ia ma ka ʻāpana aʻe):

Blockchain: he aha ka PoC e kūkulu ai mākou?

Ke hana ʻana i kahi GUI no nā kelepona ʻo Hyperledger Fabric API

He API ka Hyperledger Fabric i hiki ke hoʻohana i:

  • E hana i ke alahele;
  • ʻO nā pilina pili i ke kahawai;
  • Ka hoʻokomo ʻana a me ka hoʻokō ʻana i nā ʻaelike akamai ma ke kahawai;
  • Kāhea i nā kālepa;
  • E noi i ka ʻike ma ka blockchain.

Hoʻomohala noi

Ma kā mākou papahana demo e hoʻohana mākou i ka API wale nō e kāhea i nā kālepa a noi i ka ʻike, no ka mea Ua hoʻopau mākou i nā ʻanuʻu i koe me ka hoʻohana ʻana i ka platform blockchain IBM. Kākau mākou i kahi GUI me ka hoʻohana ʻana i kahi waihona ʻenehana maʻamau: Express.js + Vue.js + Node.js. Hiki iā ʻoe ke kākau i ʻatikala ʻokoʻa e pili ana i ka hoʻomaka ʻana i ka hana ʻana i nā noi pūnaewele hou. Ma ʻaneʻi e waiho wau i kahi loulou i ke ʻano o nā haʻiʻōlelo aʻu i makemake nui ai: Hoʻohana pūnaewele puni honua piha me Vue.js & Express.js. ʻO ka hopena he noi mea kūʻai aku me kahi kiʻi kiʻi maʻamau i ke ʻano Hoʻolālā Mea Hana a Google. ʻO ka REST API ma waena o ka mea kūʻai aku a me ke kikowaena he mau kelepona:

  • HyperledgerDemo/v1/init - hoʻomaka i ka blockchain;
  • HyperledgerDemo/v1/accounts/list — loaʻa i kahi papa inoa o nā moʻokāki a pau;
  • HyperledgerDemo/v1/account?name=Bob&balance=100 — hana i ka mooolelo Bob;
  • HyperledgerDemo/v1/info?account=Bob — loaʻa ka ʻike e pili ana i ka moʻokāki Bob;
  • HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 - hoʻoili i ʻelua mau kālā mai Bob iā Alice;
  • HyperledgerDemo/v1/disconnect - pani i ka pilina i ka blockchain.

ʻO ka wehewehe ʻana o ka API me nā laʻana i hoʻokomo ʻia i loko Pūnaewele leka uila - he polokalamu kaulana no ka hoʻāʻo ʻana i ka HTTP API.

Ke noi demo ma Amazon kapua

Ua hoʻouka au i ka noi ma Amazon no ka mea... ʻAʻole hiki iā IBM ke hoʻonui i kaʻu moʻokāki a ʻae iaʻu e hana i nā kikowaena virtual. Pehea e hoʻohui ai i kahi cherry i ka domain: www.citcoin.info. E hoʻomau wau i ke kikowaena no kekahi manawa, a laila e hoʻopau, no ka mea... Ke hāʻule nei nā keneta no ka hoʻolimalima, a ʻaʻole i helu ʻia nā ʻāpana citcoin ma ke kumukūʻai kūʻai) Ke hoʻokomo nei au i nā screenshots o ka demo i loko o ka ʻatikala i maopopo ai ka loiloi o ka hana. Hiki i ka noi demo ke:

  • E hoʻomaka i ka blockchain;
  • E hana i kahi moʻokāki (akā i kēia manawa ʻaʻole hiki iā ʻoe ke hana i kahi moʻokāki hou, no ka mea, ʻo ka helu kiʻekiʻe o nā moʻolelo i kuhikuhi ʻia ma ka ʻaelike akamai ua hiki i ka blockchain);
  • Loaʻa i kahi papa inoa o nā moʻokāki;
  • Hoʻololi i nā kālā citcoin ma waena o Alice, Bob a me Alex;
  • Loaʻa i nā hanana (akā i kēia manawa ʻaʻohe ala e hōʻike ai i nā hanana, no laila no ka maʻalahi, ʻōlelo ka interface ʻaʻole i kākoʻo ʻia nā hanana);
  • Nā hana log.

Hoʻomaka mua mākou i ka blockchain:

Blockchain: he aha ka PoC e kūkulu ai mākou?

A laila, hana mākou i kā mākou moʻokāki, mai hoʻopau i ka manawa me ke koena:

Blockchain: he aha ka PoC e kūkulu ai mākou?

Loaʻa iā mākou kahi papa inoa o nā moʻokāki āpau i loaʻa:

Blockchain: he aha ka PoC e kūkulu ai mākou?

Koho mākou i ka mea hoʻouna a me ka mea i loaʻa, a loaʻa kā lākou koena. Inā like ka mea hoʻouna a me ka mea i loaʻa, a laila e hoʻopiha hou ʻia kāna moʻokāki:

Blockchain: he aha ka PoC e kūkulu ai mākou?

Ma ka log ke nānā nei mākou i ka hoʻokō ʻana i nā hana:

Blockchain: he aha ka PoC e kūkulu ai mākou?

ʻOiaʻiʻo, ʻo ia wale nō me ka papahana demo. Ma lalo ʻoe e ʻike ai i kā mākou kālepa ma ka blockchain:

Blockchain: he aha ka PoC e kūkulu ai mākou?

A me ka papa inoa nui o nā kālepa:

Blockchain: he aha ka PoC e kūkulu ai mākou?

Me kēia, ua hoʻopau maikaʻi mākou i ka hoʻokō ʻana i ka PoC e hana i ka pūnaewele Citcoin. He aha nā mea'ē aʻe e pono e hanaʻia no Citcoin e lilo i pūnaewele piha no ka hoʻoili kālā? liʻiliʻi loa:

  • Ma ke kahua hana moʻokāki, hoʻokō i ka hana o kahi kī pilikino / lehulehu. Pono e mālama ʻia ke kī pilikino me ka mea hoʻohana moʻokāki, pono e mālama ʻia ke kī ākea ma ka blockchain.
  • E hana i kahi hoʻoili kālā kahi i hoʻohana ʻia ai kahi kī lehulehu, ma mua o ka inoa, e ʻike ai i ka mea hoʻohana.
  • Hoʻopili i nā kālepa e hele ana mai ka mea hoʻohana i ke kikowaena me kāna kī pilikino.

hopena

Ua hoʻokō mākou i ka pūnaewele Citcoin me kēia mau hana: hoʻohui i kahi moʻokāki, loaʻa i kahi koena, hoʻonui i kāu moʻokāki, hoʻoili kālā mai kahi moʻokāki i kekahi. No laila, he aha ke kumu kūʻai iā mākou e kūkulu i kahi PoC?

  • Pono ʻoe e aʻo i ka blockchain ma ka laulā a me ka Hyperledger Fabric ma ke ʻano;
  • E aʻo e hoʻohana i nā ao IBM a i ʻole Amazon;
  • E aʻo i ka ʻōlelo hoʻolālā JS a me kekahi hoʻolālā pūnaewele;
  • Inā pono e mālama ʻia kekahi mau ʻikepili ʻaʻole i loko o ka blockchain, akā ma kahi waihona ʻokoʻa, a laila e aʻo e hoʻohui, no ka laʻana, me PostgreSQL;
  • A ʻo ka mea hope akā ʻaʻole ka mea liʻiliʻi loa - ʻaʻole hiki iā ʻoe ke noho i ka honua hou me ka ʻike ʻole o Linux!)

ʻOiaʻiʻo, ʻaʻole ia he ʻepekema rocket, akā pono ʻoe e hana ikaika!

Nā kumu ma GitHub

Hoʻokomo ʻia nā kumu GitHub. ʻO ka wehewehe pōkole o ka waihona:
Kakauolelo «kikowaena» — Node.js kikowaena
Kakauolelo «Client» — Node.js mea kūʻai
Kakauolelo «blockchain"(ʻO nā waiwai a me nā kī, ʻoiaʻiʻo, ʻaʻole hana a hāʻawi ʻia ma ke ʻano he laʻana wale nō):

  • 'aelike - akamai kumu aelike code
  • wallet — nā kī hoʻohana no ka hoʻohana ʻana i ka Hyperledger Fabric API.
  • *.cds - hōʻuluʻulu mana o nā ʻaelike akamai
  • * .json faila - nā laʻana o nā faila hoʻonohonoho no ka hoʻohana ʻana i ka Hyperledger Fabric API

ʻO ka hoʻomaka wale nō ia!

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka