ඔබේ ඇස් බිය වන අතර ඔබේ දෑත් කැසීමයි!
පෙර ලිපිවලදී, අපි බ්ලොක්චේන් ගොඩනගා ඇති තාක්ෂණයන් සමඟ කටයුතු කළෙමු (
Hyperledger Fabric - විශ්වීය blockchain
පොදුවේ ගත් කල, විශ්වීය තොරතුරු පද්ධතියක් යනු:
- සේවාදායක කට්ටලයක් සහ ව්යාපාර තර්කනය කරන මෘදුකාංග හරයක්;
- පද්ධතිය සමඟ අන්තර්ක්රියා සඳහා අතුරු මුහුණත්;
- උපාංග/පුද්ගලයින් ලියාපදිංචි කිරීම, සත්යාපනය කිරීම සහ බලය පැවරීම සඳහා මෙවලම්;
- මෙහෙයුම් සහ සංරක්ෂිත දත්ත ගබඩා කරන දත්ත සමුදාය:
Hyperledger Fabric යනු කුමක්ද යන්නෙහි නිල අනුවාදය කියවිය හැක
Hyperledger Fabric Architecture
රූප සටහනේ දැක්වෙන්නේ Hyperledger Fabric ගෘහ නිර්මාණ ශිල්පය:
ආයතන - සංවිධානවල සම වයසේ මිතුරන් අඩංගු වේ, i.e. සංවිධානවල සහයෝගය නිසා blockchain පවතී. විවිධ සංවිධාන එකම නාලිකාවක කොටසක් විය හැකිය.
නාලිකාව - සම වයසේ මිතුරන් කණ්ඩායම් වලට ඒකාබද්ධ කරන තාර්කික ව්යුහයක්, i.e. blockchain නිශ්චිතව දක්වා ඇත. Hyperledger Fabric හට විවිධ ව්යාපාර තර්කනය සමඟ එකවර බහු වාරණ සැකසීමට හැකිය.
සාමාජික සේවා සපයන්නා (MSP) අනන්යතාවය නිකුත් කිරීම සහ භූමිකාවන් පැවරීම සඳහා CA (සහතික අධිකාරිය) වේ. නෝඩයක් නිර්මාණය කිරීම සඳහා, ඔබ MSP සමඟ අන්තර් ක්රියා කළ යුතුය.
සම වයසේ නෝඩ් - ගනුදෙනු සත්යාපනය කරන්න, බ්ලොක්චේන් ගබඩා කරන්න, ස්මාර්ට් කොන්ත්රාත්තු ක්රියාත්මක කරන්න සහ යෙදුම් සමඟ අන්තර් ක්රියා කරන්න. සම වයසේ මිතුරන්ට අනන්යතාවයක් (ඩිජිටල් සහතිකය) ඇත, එය MSP විසින් නිකුත් කරනු ලැබේ. සියලුම නෝඩ් වලට සමාන අයිතිවාසිකම් ඇති Bitcoin හෝ Etherium ජාලය මෙන් නොව, Hyperledger Fabric nodes විවිධ භූමිකාවන් ඉටු කරයි:
- සමහර විට සම වයසේ බලන්න සම වයසේ මිතුරන් අනුමත කිරීම (EP) සහ ස්මාර්ට් කොන්ත්රාත්තු ක්රියාත්මක කරන්න.
- සම වයසේ මිතුරන් කැප කිරීම (CP) - බ්ලොක්චේන් හි දත්ත පමණක් සුරකින්න සහ "ලෝක තත්වය" යාවත්කාලීන කරන්න.
- ඇන්කර් පීර් (AP) - සංවිධාන කිහිපයක් blockchain සඳහා සහභාගී වන්නේ නම්, ඔවුන් අතර සන්නිවේදනය සඳහා නැංගුරම් සම වයසේ මිතුරන් භාවිතා කරනු ලැබේ. සෑම ආයතනයකටම නැංගුරම් කරුවන් එකක් හෝ වැඩි ගණනක් සිටිය යුතුය. AP භාවිතා කරමින්, සංවිධානයක ඕනෑම සම වයසේ මිතුරෙකුට වෙනත් ආයතනවල සිටින සියලුම මිතුරන් පිළිබඳ තොරතුරු ලබා ගත හැකිය. AP අතර තොරතුරු සමමුහුර්ත කිරීමට භාවිතා කරයි
gossip protocol . - නායක පීර් - සංවිධානයකට සම වයසේ මිතුරන් කිහිප දෙනෙකු සිටී නම්, සම වයසේ නායකයාට පමණක් ඇණවුම් කිරීමේ සේවාවෙන් බ්ලොක් ලැබෙන අතර ඒවා සෙසු මිතුරන්ට ලබා දේ. සංවිධානයේ සම වයසේ මිතුරන් විසින් නායකයා ස්ථිතිකව හෝ ගතිකව තෝරා ගත හැකිය. නායකයින් පිළිබඳ තොරතුරු සමමුහුර්ත කිරීම සඳහා gossip protocol ද භාවිතා වේ.
වත්කම් - වටිනාකමක් ඇති සහ blockchain මත ගබඩා කර ඇති ආයතන. වඩාත් නිශ්චිතව, මෙය JSON ආකෘතියේ ප්රධාන අගය දත්ත වේ. Blockchain හි සටහන් කර ඇත්තේ මෙම දත්තය. ඔවුන්ට ඉතිහාසයක් ඇත, එය බ්ලොක්චේන් හි ගබඩා කර ඇති අතර, "ලෝක රාජ්ය" දත්ත ගබඩාවේ ගබඩා කර ඇති වත්මන් තත්වයකි. ව්යාපාරික කාර්යයන් මත පදනම්ව දත්ත ව්යුහයන් අත්තනෝමතික ලෙස පුරවා ඇත. අවශ්ය ක්ෂේත්ර නොමැත, එකම නිර්දේශය වන්නේ වත්කම් හිමිකරුවෙකු සිටිය යුතු අතර වටිනා විය යුතුය.
ලේජර - වත්මන් වත්කම් ගබඩා කරන Blockchain සහ Word රාජ්ය දත්ත ගබඩාව සමන්විත වේ. ලෝක රාජ්යය LevelDB හෝ CouchDB භාවිතා කරයි.
ස්මාර්ට් කොන්ත්රාත් - ස්මාර්ට් කොන්ත්රාත් භාවිතා කරමින්, පද්ධතියේ ව්යාපාරික තර්කනය ක්රියාත්මක වේ. Hyperledger Fabric හි, ස්මාර්ට් කොන්ත්රාත්තු chaincode ලෙස හැඳින්වේ. දාම කේතය භාවිතා කරමින්, වත්කම් සහ ඒවා හරහා ගනුදෙනු නියම කර ඇත. තාක්ෂණික වශයෙන්, ස්මාර්ට් කොන්ත්රාත්තු යනු JS හෝ Go ක්රමලේඛන භාෂාවෙන් ක්රියාත්මක කරන ලද මෘදුකාංග මොඩියුල වේ.
අනුමත කිරීමේ ප්රතිපත්තිය - එක් එක් දාම කේතය සඳහා, ඔබට ගනුදෙනුවක් සඳහා කොපමණ තහවුරු කිරීම් අපේක්ෂා කළ යුතුද සහ කාගෙන්ද යන්න පිළිබඳ ප්රතිපත්තියක් සැකසිය හැක. ප්රතිපත්තිය සකසා නොමැති නම්, පෙරනිමිය වන්නේ: "නාලිකාවේ ඕනෑම සංවිධානයක ඕනෑම සාමාජිකයෙකු විසින් ගනුදෙනුව තහවුරු කළ යුතුය." ප්රතිපත්ති උදාහරණ:
- සංවිධානයේ ඕනෑම පරිපාලකයෙකු විසින් ගනුදෙනුව අනුමත කළ යුතුය;
- සංවිධානයේ ඕනෑම සාමාජිකයෙකු හෝ සේවාදායකයෙකු විසින් තහවුරු කළ යුතුය;
- ඕනෑම සම වයසේ සංවිධානයක් විසින් තහවුරු කළ යුතුය.
ඇණවුම් කිරීමේ සේවාව - ගණුදෙණු කොටස් වලට අසුරා ඒවා නාලිකාවේ මිතුරන් වෙත යවයි. ජාලයේ සිටින සියලුම මිතුරන් වෙත පණිවිඩ බෙදා හැරීම සහතික කරයි. කාර්මික පද්ධති සඳහා භාවිතා වේ
CallFlow
- යෙදුම Go, Node.js හෝ Java SDK භාවිතයෙන් Hyperledger Fabric සමඟ සන්නිවේදනය කරයි;
- සේවාලාභියා tx ගනුදෙනුවක් නිර්මාණය කර එය අනුමත කරන මිතුරන් වෙත යවයි;
- සම වයසේ මිතුරා සේවාදායකයාගේ අත්සන සත්යාපනය කරයි, ගනුදෙනුව සම්පූර්ණ කරයි, සහ අනුමත අත්සන සේවාදායකයා වෙත යවයි. Chaincode ක්රියාත්මක කරනු ලබන්නේ අනුමත කරන සම වයසේ මිතුරන් මත පමණක් වන අතර, එය ක්රියාත්මක කිරීමේ ප්රතිඵලය සියලුම මිතුරන් වෙත යවනු ලැබේ. මෙම වැඩ ඇල්ගොරිතම PBFT (ප්රායෝගික බයිසැන්තියානු දෝෂ ඉවසීමේ) සම්මුතිය ලෙස හැඳින්වේ. වලින් වෙනස් වේ
සම්භාව්ය BFT පණිවිඩය යවා තහවුරු කිරීම අපේක්ෂා කරන්නේ සියලුම සහභාගිවන්නන්ගෙන් නොව, යම් කට්ටලයකින් පමණි; - අනුමත කිරීමේ ප්රතිපත්තියට අනුරූප ප්රතිචාර ගණන සේවාදායකයාට ලැබුණු පසු, ඔහු ගනුදෙනුව ඇණවුම් කිරීමේ සේවාවට යවයි;
- ඇණවුම් කිරීමේ සේවාව බ්ලොක් එකක් ජනනය කර එය සියළුම කැපවූ මිතුරන් වෙත යවයි. ඇණවුම් කිරීමේ සේවාව බ්ලොක් අනුක්රමික පටිගත කිරීම සහතික කරයි, එය ඊනියා ලෙජර් ෆෝක් ඉවත් කරයි (
"ගෑරුප්පු" කොටස බලන්න ); - සම වයසේ මිතුරන්ට බ්ලොක් එකක් ලැබේ, අනුමත කිරීමේ ප්රතිපත්තිය නැවත පරීක්ෂා කරන්න, බ්ලොක්චේන් එකට බ්ලොක් එක ලියන්න සහ "ලෝක රාජ්ය" DB හි තත්වය වෙනස් කරන්න.
එම. මෙහි ප්රතිඵලයක් වශයෙන් නෝඩ් අතර භූමිකාවන් බෙදීම සිදු වේ. මෙය බ්ලොක්චේන් පරිමාණය කළ හැකි සහ ආරක්ෂිත බව සහතික කරයි:
- ස්මාර්ට් ගිවිසුම් (දාම කේතය) සම වයසේ මිතුරන් අනුමත කරයි. මෙය ස්මාර්ට් කොන්ත්රාත්තු වල රහස්යභාවය සහතික කරයි, මන්ද එය සියලුම සහභාගිවන්නන් විසින් ගබඩා නොකෙරේ, නමුත් සම වයසේ මිතුරන් අනුමත කිරීමෙන් පමණි.
- ඇණවුම ඉක්මනින් වැඩ කළ යුතුය. ඇනවුම් කිරීම පමණක් බ්ලොක් එකක් සාදන අතර එය ස්ථාවර නායක සම වයසේ මිතුරන් වෙත යැවීමෙන් මෙය සහතික කෙරේ.
- කැපවීමෙන් සම වයසේ මිතුරන් පමණක් blockchain ගබඩා කරයි - ඒවායින් බොහොමයක් තිබිය හැකි අතර ඔවුන්ට විශාල බලයක් සහ ක්ෂණික ක්රියාකාරිත්වයක් අවශ්ය නොවේ.
Hyperledger Fabric හි වාස්තුවිද්යාත්මක විසඳුම් පිළිබඳ වැඩි විස්තර සහ එය මේ ආකාරයෙන් ක්රියා කරන්නේ ඇයි සහ වෙනත් ආකාරයකින් නොවේද යන්න මෙහි සොයාගත හැකිය:
එබැවින්, Hyperledger Fabric යනු ඔබට කළ හැකි සැබෑ විශ්වීය පද්ධතියකි:
- ස්මාර්ට් කොන්ත්රාත් යාන්ත්රණය භාවිතයෙන් අත්තනෝමතික ව්යාපාරික තර්කනය ක්රියාත්මක කිරීම;
- JSON ආකෘතියෙන් බ්ලොක්චේන් දත්ත ගබඩාවෙන් දත්ත පටිගත කර ලබා ගන්න;
- සහතික අධිකාරිය භාවිතයෙන් API ප්රවේශය ලබා දීම සහ තහවුරු කිරීම.
දැන් අපි Hyperledger Fabric හි විශේෂතා ගැන ටිකක් තේරුම් ගනිමු, අවසානයේ අපි ප්රයෝජනවත් දෙයක් කරමු!
බ්ලොක්චේන් යෙදවීම
ගැටලුව ප්රකාශ කිරීම
කර්තව්යය වන්නේ Citcoin ජාලය පහත සඳහන් කාර්යයන් සමඟ ක්රියාත්මක කිරීමයි: ගිණුමක් සාදන්න, ශේෂයක් ලබා ගන්න, ඔබේ ගිණුම ඉහළට, එක් ගිණුමකින් තවත් කාසි මාරු කරන්න. අපි වස්තු ආකෘතියක් අඳින්නෙමු, එය අපි තවදුරටත් ස්මාර්ට් කොන්ත්රාත්තුවක් තුළ ක්රියාත්මක කරනු ඇත. එබැවින්, අපට නම් වලින් හඳුනාගෙන ශේෂයක් සහ ගිණුම් ලැයිස්තුවක් අඩංගු ගිණුම් තිබේ. ගිණුම් සහ ගිණුම් ලැයිස්තුවක්, Hyperledger Fabric වත්කම් අනුව වේ. ඒ අනුව ඔවුන්ට ඉතිහාසයක් සහ වත්මන් රාජ්යයක් ඇත. මම මෙය පැහැදිලිව ඇඳීමට උත්සාහ කරමි:
ඉහළම සංඛ්යා වන්නේ "ලෝක රාජ්ය" දත්ත ගබඩාවේ ගබඩා කර ඇති වත්මන් තත්වයයි. ඒවාට පහළින් බ්ලොක්චේන් හි ගබඩා කර ඇති ඉතිහාසය පෙන්වන සංඛ්යා ඇත. වත්මන් වත්කම් තත්ත්වය ගනුදෙනු මගින් වෙනස් වේ. වත්කම වෙනස් වන්නේ සමස්තයක් ලෙස පමණි, එබැවින් ගනුදෙනුවේ ප්රති result ලයක් ලෙස නව වස්තුවක් නිර්මාණය වන අතර වත්කමේ වත්මන් වටිනාකම ඉතිහාසයට යයි.
IBM Cloud
අපි ගිණුමක් සාදන්නෙමු
Blockchain Platform භාවිතයෙන් මූලික blockchain ජාලයක් සාදන්න බ්ලොක්චේන් ස්මාර්ට් කොන්ත්රාත්තුවක් සාදා ක්රියාත්මක කරන්න Blockchain Platform වෙතින් සිදුවීම් නිකුත් කරන්න
පහත දැක්වෙන්නේ IBM Blockchain වේදිකාවේ තිරපිටපත් වේ. මෙය blockchain නිර්මාණය කරන්නේ කෙසේද යන්න පිළිබඳ උපදෙස් නොව, කාර්යයේ විෂය පථය නිරූපණය කිරීමකි. එබැවින්, අපගේ අරමුණු සඳහා, අපි එක් සංවිධානයක් සාදන්නෙමු:
අපි එහි නෝඩ් සාදන්නෙමු: Orderer CA, Org1 CA, Orderer Peer:
අපි පරිශීලකයන් සාදන්නෙමු:
නාලිකාවක් සාදා එය citcoin ලෙස හඳුන්වන්න:
අත්යවශ්යයෙන්ම නාලිකාව අවහිර කිරීමකි, එබැවින් එය ආරම්භ වන්නේ වාරණ ශුන්ය (උත්පත්ති වාරණ):
ස්මාර්ට් කොන්ත්රාත්තුවක් ලිවීම
/*
* 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;
බුද්ධිමය වශයෙන්, මෙහි සියල්ල පැහැදිලි විය යුතුය:
- Hyperledger Fabric API භාවිතයෙන් demo වැඩසටහන විසින් හඳුන්වනු ලබන කාර්යයන් කිහිපයක් (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) ඇත.
- SendFrom සහ RefillBalance ශ්රිතයන් demo වැඩසටහනට ලැබෙන සිදුවීම් ජනනය කරයි.
- ස්මාර්ට් කොන්ත්රාත්තුවක් ක්ෂණිකව ක්රියාත්මක වූ විට ක්ෂණික ශ්රිතය වරක් හැඳින්වේ. ඇත්ත වශයෙන්ම, එය එක් වරක් පමණක් නොව, ස්මාර්ට් කොන්ත්රාත්තුවේ අනුවාදය වෙනස් වන සෑම අවස්ථාවකදීම හැඳින්වේ. එබැවින්, හිස් අරාවක් සමඟ ලැයිස්තුවක් ආරම්භ කිරීම නරක අදහසකි, මන්ද දැන්, අපි ස්මාර්ට් කොන්ත්රාත්තුවේ අනුවාදය වෙනස් කරන විට, අපට වත්මන් ලැයිස්තුව අහිමි වනු ඇත. නමුත් කමක් නැහැ, මම ඉගෙන ගන්නවා.)
- ගිණුම් සහ ගිණුම් ලැයිස්තුවක් JSON දත්ත ව්යුහයන් වේ. JS දත්ත හැසිරවීම සඳහා භාවිතා වේ.
- ඔබට getState ශ්රිත ඇමතුම භාවිතයෙන් වත්කමක වත්මන් අගය ලබා ගත හැකි අතර, එය putState භාවිතයෙන් යාවත්කාලීන කළ හැක.
- ගිණුමක් නිර්මාණය කිරීමේදී, AddAccount ශ්රිතය ලෙස හඳුන්වනු ලබන අතර, බ්ලොක්චේන් හි උපරිම ගිණුම් සංඛ්යාව (maxAccounts = 5) සඳහා සැසඳීමක් සිදු කෙරේ. තවද මෙහි තදබදයක් ඇත (ඔබ දැක තිබේද?), එය ගිණුම් සංඛ්යාවේ නිමක් නැති වැඩි වීමක් ඇති කරයි. එවැනි වැරදි වළක්වා ගත යුතුය)
මීලඟට, අපි ස්මාර්ට් කොන්ත්රාත්තුව නාලිකාවට පූරණය කර එය ඉක්මන් කරන්නෙමු:
ස්මාර්ට් කොන්ත්රාත්තුව ස්ථාපනය කිරීමේ ගනුදෙනුව දෙස බලමු:
අපි බලමු අපේ Channel එක ගැන විස්තර:
එහි ප්රතිඵලයක් වශයෙන්, IBM වලාකුළෙහි ඇති blockchain ජාලයක පහත රූප සටහන අපට ලැබේ. රූප සටහනෙහි ඇමේසන් වලාකුළෙහි අථත්ය සේවාදායකයක ක්රියාත්මක වන ආදර්ශන වැඩසටහනක් ද පෙන්වයි (ඊළඟ කොටසේ ඒ ගැන වැඩි විස්තර):
Hyperledger Fabric API ඇමතුම් සඳහා GUI නිර්මාණය කිරීම
Hyperledger Fabric හට භාවිතා කළ හැකි API එකක් ඇත:
- නාලිකාව සාදන්න;
- නාලිකාවට සම්බන්ධතා;
- නාලිකාවේ ස්මාර්ට් කොන්ත්රාත්තු ස්ථාපනය කිරීම සහ ක්ෂණිකව ස්ථාපනය කිරීම;
- ඇමතුම් ගනුදෙනු;
- බ්ලොක්චේන් පිළිබඳ තොරතුරු ඉල්ලන්න.
යෙදුම් සංවර්ධනය
අපගේ demo වැඩසටහනේදී අපි API භාවිතා කරන්නේ ගනුදෙනු ඇමතීමට සහ තොරතුරු ඉල්ලීමට පමණි අපි දැනටමත් IBM blockchain වේදිකාව භාවිතයෙන් ඉතිරි පියවර සම්පූර්ණ කර ඇත. අපි සම්මත තාක්ෂණ තොගයක් භාවිතයෙන් GUI එකක් ලියන්නෙමු: Express.js + Vue.js + Node.js. නවීන වෙබ් යෙදුම් නිර්මාණය කිරීම ආරම්භ කරන්නේ කෙසේද යන්න පිළිබඳව ඔබට වෙනම ලිපියක් ලිවිය හැකිය. මම වඩාත්ම කැමති දේශන මාලාවට සබැඳියක් මෙන්න:
- HyperledgerDemo/v1/init - blockchain ආරම්භ කරන්න;
- HyperledgerDemo/v1/accounts/list — සියලුම ගිණුම් ලැයිස්තුවක් ලබා ගන්න;
- HyperledgerDemo/v1/account?name=Bob&balance=100 — Bob ගිණුම සාදන්න;
- HyperledgerDemo/v1/info?account=Bob — Bob ගිණුම පිළිබඳ තොරතුරු ලබා ගන්න;
- HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 — Bob සිට Alice වෙත කාසි දෙකක් මාරු කරන්න;
- HyperledgerDemo/v1/disconnect - blockchain වෙත සම්බන්ධතාවය වසන්න.
ඇතුළත් උදාහරණ සහිත API විස්තරය
ඇමේසන් වලාකුළෙහි ආදර්ශන යෙදුම
මම යෙදුම ඇමේසන් වෙත උඩුගත කළ නිසා ... IBM හට තවමත් මගේ ගිණුම උත්ශ්රේණි කිරීමට සහ මට අතථ්ය සේවාදායකයන් නිර්මාණය කිරීමට ඉඩ ලබා දීමට නොහැකි වී ඇත. වසම වෙත චෙරි එකතු කරන්නේ කෙසේද:
- අවහිර කිරීම ආරම්භ කරන්න;
- ගිණුමක් සාදන්න (නමුත් දැන් ඔබට නව ගිණුමක් සෑදිය නොහැක, මන්ද ස්මාර්ට් කොන්ත්රාත්තුවේ දක්වා ඇති උපරිම ගිණුම් සංඛ්යාව බ්ලොක්චේන් වෙත ළඟා වී ඇත);
- ගිණුම් ලැයිස්තුවක් ලබා ගන්න;
- ඇලිස්, බොබ් සහ ඇලෙක්ස් අතර citcoin කාසි මාරු කරන්න;
- සිදුවීම් ලබා ගන්න (නමුත් දැන් සිදුවීම් පෙන්වීමට ක්රමයක් නොමැත, එබැවින් සරල බව සඳහා, අතුරු මුහුණත පවසන්නේ සිදුවීම් සඳහා සහය නොදක්වන බවයි);
- ලොග් ක්රියා.
මුලින්ම අපි blockchain ආරම්භ කරමු:
ඊළඟට, අපි අපේ ගිණුම සාදන්නෙමු, ඉතිරි මුදල සමඟ කාලය නාස්ති නොකරන්න:
පවතින සියලුම ගිණුම් ලැයිස්තුවක් අපට ලැබේ:
අපි යවන්නා සහ ලබන්නා තෝරා, ඔවුන්ගේ ශේෂයන් ලබා ගනිමු. යවන්නා සහ ලබන්නා සමාන නම්, ඔහුගේ ගිණුම නැවත පුරවනු ලැබේ:
ලොගයේ අපි ගනුදෙනු ක්රියාත්මක කිරීම නිරීක්ෂණය කරමු:
ඇත්තටම demo program එකත් එක්ක එච්චරයි. බ්ලොක්චේන් හි අපගේ ගනුදෙනුව ඔබට පහතින් දැක ගත හැක.
සහ සාමාන්ය ගනුදෙනු ලැයිස්තුව:
මේ සමඟ, අපි Citcoin ජාලය නිර්මාණය කිරීම සඳහා PoC ක්රියාත්මක කිරීම සාර්ථකව අවසන් කර ඇත. Citcoin සඳහා කාසි මාරු කිරීම සඳහා සම්පූර්ණ ජාලයක් වීමට තවත් කුමක් කළ යුතුද? ඉතා කුඩා:
- ගිණුම් නිර්මාණය කිරීමේ අදියරේදී, පුද්ගලික / පොදු යතුරක් උත්පාදනය කිරීම ක්රියාත්මක කරන්න. පුද්ගලික යතුර ගිණුම් පරිශීලකයා සමඟ ගබඩා කළ යුතුය, පොදු යතුර බ්ලොක්චේන් තුළ ගබඩා කළ යුතුය.
- පරිශීලකයා හඳුනා ගැනීමට නමකට වඩා පොදු යතුරක් භාවිතා කරන කාසි හුවමාරුවක් කරන්න.
- පරිශීලකයාගේ සිට සේවාදායකයට යන ගනුදෙනු ඔහුගේ පුද්ගලික යතුර සමඟ සංකේතනය කරන්න.
නිගමනය
අපි Citcoin ජාලය පහත සඳහන් කාර්යයන් සමඟ ක්රියාත්මක කර ඇත: ගිණුමක් එක් කරන්න, ශේෂයක් ලබා ගන්න, ඔබේ ගිණුම ඉහළට ගන්න, එක් ගිණුමකින් තවත් ගිණුමකට කාසි මාරු කරන්න. ඉතින්, PoC එකක් සෑදීමට අපට කොපමණ මුදලක් වැය වේද?
- ඔබ පොදුවේ blockchain සහ විශේෂයෙන් Hyperledger Fabric අධ්යයනය කළ යුතුය;
- IBM හෝ Amazon clouds භාවිතා කිරීමට ඉගෙන ගන්න;
- JS ක්රමලේඛන භාෂාව සහ සමහර වෙබ් රාමු ඉගෙන ගන්න;
- සමහර දත්ත ගබඩා කිරීමට අවශ්ය වන්නේ blockchain තුළ නොව, වෙනම දත්ත සමුදායක් තුළ නම්, උදාහරණයක් ලෙස, PostgreSQL සමඟ ඒකාබද්ධ කිරීමට ඉගෙන ගන්න;
- අවසාන වශයෙන් නොව අවම වශයෙන් - ඔබට ලිනක්ස් පිළිබඳ දැනුමක් නොමැතිව නවීන ලෝකයේ ජීවත් විය නොහැක!)
ඇත්ත වශයෙන්ම, එය රොකට් විද්යාව නොවේ, නමුත් ඔබ වෙහෙස මහන්සි වී වැඩ කිරීමට සිදු වනු ඇත!
GitHub හි මූලාශ්ර
මූලාශ්ර දමා ඇත
නාමාවලිය «සේවාදායකය» — Node.js සේවාදායකය
නාමාවලිය «සේවාදායකයා» — Node.js සේවාදායකයා
නාමාවලිය «blockchain"(පරාමිති අගයන් සහ යතුරු, ඇත්ත වශයෙන්ම, ක්රියා නොකරන අතර ඒවා ලබා දී ඇත්තේ උදාහරණයක් ලෙස පමණි):
- ගිවිසුම - ස්මාර්ට් කොන්ත්රාත්තුවේ මූලාශ්ර කේතය
- wallet — Hyperledger Fabric API භාවිතා කිරීම සඳහා පරිශීලක යතුරු.
- *.cds - ස්මාර්ට් කොන්ත්රාත්තු වල සම්පාදනය කරන ලද අනුවාද
- *.json ගොනු - Hyperledger Fabric API භාවිතා කිරීම සඳහා වින්යාස ගොනු සඳහා උදාහරණ
එය ආරම්භය පමණි!
මූලාශ්රය: www.habr.com