αααααααααα’αααααααΆα α αΎαααααααα’ααααααΆαα!
αα
αααα»αα’ααααααα»α ααΎαααΆααααααααΆαααΆαα½αααΉααα
αα
αααα·ααααΆααα blockchains ααααΌαααΆαααΆαααα (
αααααΆαα Hyperledger - ααΆ blockchain ααα
αα·ααΆαααΆααΌαα ααααααααααααααΆααααααΊα
- αααα»ααααααΆαααΈααα αα·αααααΌααααααα·ααΈαααααααΎαααΆααααααα·ααααΆα’αΆααΈαααααα
- α ααα»α αααααΆαααααααΆααα’ααααααααααΆαα½ααααααααα;
- α§ααααααααααΆααααΆαα α»αααααα ααΆααααααααααΆαα αα·αααΆαα’αα»ααααΆαα§ααααα/ααα»ααα;
- ααΌαααααΆααα·αααααααααααΆαα»ααα·ααααααααααα·ααααα·ααΆα αα·αααααααΆαα
ααααααααΌαααΆαααα’αααΈααα Hyperledger Fabric ααΊα’αΆα
α’αΆαααΆααα
ααααΆαααααααααααααΆαα Hyperledger
ααααΆααααΆααααα αΆαααΈααααΆαααααααα Hyperledger Fabricα
α’αααααΆα - α’αααααΆαααΆααα·ααααα½αααΆαααΆα α§. blockchain ααΆααααααΆαααααΆαααΆααααααΈα’αααααΆαα α’αααααΆααααααααααΆα’αΆα
ααΆααααααα½αααααΆαααααΌα
ααααΆα
ααΆααα - αα ααΆααααααααα‘αΌααΈαααααααααα½αααααα½ααα·ααααα½αααΆαααΆαααΆαααα»α α§. blockchain ααααΌαααΆααααααΆααα αααααΆαα Hyperledger α’αΆα ααααΎαααΆα blockchains ααΆα αααΎααααα»ααααααααΆαααααΆααΆαα½αααΉααααααα·ααααΆα’αΆααΈαααααααααααααααΆα
α’ααααααααααααΆαααΆαα·αααΆα (MSP) ααΊααΆ CA (α’αΆααααΆαααα·ααααΆαααααα) αααααΆααα ααα’ααααααααΆα αα·αααααααα½ααΆααΈα ααΎααααΈαααααΎαααααΆαα α’αααααααΌαααααΎα’ααααααααααΆαα½α MSP α
ααααΆαααα·αααααααα· - αααααααααΆααααααα·ααααα·ααΆα αααααΆαα»α blockchain ααααα·ααααα·αα·α αα αααααΆααααΆααα αα·αααααΎα’ααααααααααΆαα½ααααααα·ααΈα αα·ααααααααα·ααΆαα’ααααααααΆα (αα·ααααΆααααααααΈααΈαα) αααααααΌαααΆαα ααααα MSP α αα·αααΌα αααααΆα Bitcoin α¬ Etherium αααααααΆααααΆααα’ααααΆααα·αααα·ααααΎααααΆαα αααα»α Hyperledger Fabric nodes ααΎααα½ααΆααΈααααααααααΆα
- αααα αα ααΆαβααΆααααβαα·αααβααααα· (EP) αα·αα’αα»αααααα·α αα αααααΆααααΆαααα
- ααΆαααααααααΆα α·ααα (CP) - αααααΆαα»ααααα·αααααααα αααα»α blockchain αα·αααααΎαα αα α»ααααααααΆα "ααααΆαααΆααα·ααααα" α
- αα»ααααΆ Peer (AP) - ααααα·αααΎα’αααααΆααα½αα
ααα½αα
αΌααα½ααααα»α blockchain ααα αα·ααααα½ααα»ααααΆααααΌαααΆαααααΎαααααΆααααΆαααααΆαααααααααΆααα½αααα ααααΆαααααΈαα½ααααααΌαααααΆαααααΌαα ααΆααα»ααααΆαα½α α¬α
αααΎαα αααααααΎ AP αα·ααααααααα·αααα»αααααΆαααααΆαα½αα’αΆα
ααα½αααΆαααααααΆαα’αααΈαα·αααααααα·ααΆααα’αααα
αααα»αα’αααααΆαααααααααα ααααΎααΎααααΈααααΎααααΆαααααααααααΆααααΆα APs
αα·ααΈααΆααα·ααΆαααΎα . - α’αααααΉαααΆα Peer β ααααα·αααΎααααΆααααα½αααΆααα·ααααααααα·α αααΎαααΆαα αααααΆαααα’αααααΉαααΆααααα·αααααααα·ααα»ααααααααααΉαααα½αααΆααααα»αααΈααααΆαααααααααΆαα·α α αΎααααααα±αααα½ααααα αα·αααααααα·ααααα αααα α’αααααΉαααΆαα’αΆα ααααΌαααΆααααααΆααααααα·αα·αααα α¬ααααΌαααΆαααααΎαααΎααααααΆαααααααααα·ααααααααα·αα αααα»αααααΆαααα αα·ααΈααΆααα·ααΆαααΎαααααααΌαααΆαααααΎααΎααααΈααααΎααααΆαααααααααααΆαα’αααΈα’αααααΉαααΆααααααα
ααααααααααα - α’αααααΆααααααΆαααααααα·αααααΌαααΆααααααΆαα»ααα ααΎ blockchain α αα·αααααΆαααααα ααα αααααΊααΆαα·ααααααααααααααααΉααααα»ααααααα JSON α ααΆααΊααΆαα·ααααααααααααααααΌαααΆααααααααΆαα αααα»α Blockchain α αα½αααααΆααααααααα·αα½α αααααααΌαααΆααααααΆαα»ααα αααα»α blockchain αα·αααααΆαααΆααα αα α»αααααα αααααααΌαααΆααααααΆαα»ααα αααα»αααΌαααααΆααα·αααααα "αααααα·ααααα" α αα ααΆαααααααααα·ααααααααααΌαααΆααααααααΆαα’αααΎα α·ααα α’αΆαααααααΎααΆααα·α αα α’αΆααΈαααααα αα·αααΆαααΆααααααααΌαααΆααα ααΆαααααΆααααα½ααααααΊααΆαααααααααααααα·ααααΌαααααΆαααα αΆαα αα·αααΆααααααα
ααααα αα - αα½αααΆα Blockchain αα·α Word state database ααααααααΆαα»αααααΆαααΆααα αα α»αααααααααααααααααααα αααααα·αααααααααΎ LevelDB α¬ CouchDB α
αα·α αα αααααΆααααΆα - αααααααΎαα·α αα αααααΆααααΆααα αααααα·ααααΆα’αΆααΈαααααααααααααααααααΌαααΆαα’αα»ααααα αα αααα»α Hyperledger Fabric αα·α αα αααααΆααααΆαααααααΌαααΆαααα α ααΆ chaincode α ααΆαααααΎααααΆααααΌααααααααααΆαα αααααααααααααα· αα·αααααα·ααααα·ααΆαααΎαα½αααΆααααΌαααΆααααααΆααα αα αααα»ααααααααααα αα ααααα αα·α αα αααααΆααααΆαααααΊααΆαααΌαα»ααααααα·ααΈαααααααΌαααΆαα’αα»αααααα αααα»αααΆααΆααααααααααα·ααΈ JS α¬ Go α
ααααααααΆαα’αα»ααα β αααααΆαααααααΌααααααααααΆααααΈαα½αα α’αααα’αΆα ααααααααααΆαααααααΈααΈα ααα½αααΆααααααΆαααααααΆααααααα·ααααα·ααΆαααααα½αααααΌαααΆαααααΉααα»α αα·αααΈα’αααααΆα ααααα·αααΎαααααΆααααα·αααααΌαααΆαααααα αααααααΆαααΎαααΊα "ααααα·ααααα·ααΆαααααΌααααααααΆααααααααΆαα·αααααααΆαααααΆαα½ααα αααα»αααα»αααα·αα" α§ααΆα αααααααααααααΆαα
- ααααα·ααααα·ααΆαααααΌαααααααΌαααΆαα’αα»ααααααα’ααααααααααααααΆαα½αααα’αααααΆαα
- ααααΌααααααααΆααααααααΆαα·αααΆαα½α α¬α’αα·αα·ααααααα’αααααΆαα
- ααααΌααααααααΆαααααα’αααααΆααα·ααααααααα·ααΆαα½αα
ααααΆαααααααααΆαα·α - ααα
ααααααα·ααααα·ααΆαα
αΌααα
αααα»ααααα»α α αΎαααααΎααΆαα
αα·ααααααααα·αα
αααα»αααΆαααα ααΆααΆααΆααααααΌαααΆααα
ααΆαααα·ααααααααα·ααΆααα’αααα
ααΎαααααΆαα ααααΎαααααΆααααααααααα§ααααΆα αααα
CallFlow
- αααααα·ααΈααααΆααααααααΆαα½α Hyperledger Fabric αααααααΎ Go, Node.js α¬ Java SDK;
- α’αα·αα·αααααααΎαααααα·ααααα·ααΆα tx α αΎαααααΎααΆαα αα·αααααααα·αααααΆααααα
- Peer αααααααααΆααα αααααααΆααααα’αα·αα·αα αααα
ααααααα·ααααα·ααΆα αα·αααααΎα αααααααΆααααααααααα‘αααα
α’αα·αα·αααα·αα Chaincode ααααΌαβααΆαβααααα·ααααα·βααβααΎβα’αααβααΆααααβααα»ααααα α αΎαβααααααβααβααΆαβααααα·ααααα·βααααβααΆβααααΌαβααΆαβααααΎβαα
βαα·αααβααααα·βααΆααβα’ααα αααα½ααααααααΆαααααΆαααΆααααααααΌαααΆαααα α
ααΆ PBFT (Practical Byzantine Fault Tolerant) consensus α αα»αααααΆααΈ
BFT αα»ααΆα ααΆααα·ααααααΆααΆαααααΌαααΆαααααΎ αα·αααΆααααααΆααααααΌαααΆαααααΉαααΆαα·ααααααααΈα’αααα αΌααα½αααΆααα’ααααααα ααα»ααααααΆαααααΈαααα»αααΆααααΆαααα½αααα»αααααα - αααααΆααααΈα’αα·αα·ααααΆαααα½αα ααα½αααααΆαααααΎααααααααααΌαααΉααααααΆαααααααααα ααΆααααααΎααααα·ααααα·ααΆααα ααΆααααααΆαααααααααΆαα·αα
- ααααΆαααααααααΆαα·ααααααΎααααα»α α αΎαααααΎααΆαα
αα·ααααα½αααΆαααΆαααΆααα’ααα ααααΆαααααααααΆαα·αααΆααΆααΌαααΆααααααααΆααΆααααΆαααααααα»α ααααα»αααααΆααα’αααΈαααααα α
ααΆ ααααα
αααααααΆαα (
ααΌαααΎαααααα "Forks" ); - αα·ααααααααα·ααα½αααΆααααα»α αα·αα·αααααΎααααααΆααααααααααααααααα ααααααααα»ααα blockchain αα·αααααΆααααααΌαααααΆαααΆααα αααα»α "αααααα·ααααα" DB α
ααΆαααααα ααααααααΆαα±ααααΆαααΆααααα αααα½ααΆααΈαααΆαααααΆααα αααααΆααΆααΆ blockchain α’αΆα ααααΎααΆαααααααΆαααΆα αα·αααΆααα»ααααα·ααΆαα
- αα·α αα αααααΆααααΆααα (αααααααααΆαα) α’αα»ααααααΆααααααααααΈαα·αααααααα·α αααααΆααΆααΌαααΆααααααΆαααααα·α αα αααααΆααααΆααα ααΈααααα ααΆβαα·αβααααΌαβααΆαβαααααΆβαα»αβαααβα’αααβα αΌαβαα½αβααΆααβα’ααβαα ααα»ααααβααααΆααβααβαααβααΆαβααΆααααβααΈβαα·αααβααααα·βααα»αααααα
- ααΆααααααΆαα·ααα½αααααααΎαααΆαααΏαα αααααααΌαααΆαααΆααΆαααααΆααα·ααααααΆααΆααααααΆαα·αααααΆαααααααααΎαααΆαααα»ααα½αα αΎαααααΎααΆαα αααα»ααααααα’αααααΉαααΆαα
- αα·ααααα½αααΆαααΆααααααΆαα»ααα blockchain ααα»ααααα - ααΆα’αΆα ααΆαα αααΎαα αΎααα½ααααα·ααααααΌαα±ααααΆαααΆαααα αααΎααα·αααααα·ααααα·ααΆαααααΆααααα
ααααααΆααααα’α·αααααααα’αααΈαααααααααΆαααααΆαααααααααα Hyperledger Fabric αα·αααΌαα ααα»αααααΆααααΎαααΆαααΆααα·ααΈααα α αΎααα·ααααα’αΆα
ααααΌαααΆαααααΎααα
ααΈαααα
ααΌα αααα Hyperledger Fabric ααΊααΆααααααααααααα·ααααα’αααα’αΆα α
- α’αα»αααααααααα·ααααΆα’αΆααΈαααααααΆαα’αααΎα α·ααααααααααΎααααααΆααα·α αα αααααΆααααΆα;
- αααααααΆ αα·αααα½ααα·ααααααααΈααΌαααααΆααα·αααααα blockchain αααα»ααααααα JSON;
- ααααα αα·ααααααααααΆααααΆαα αΌαααααΎ API αααααααΎα’αΆααααΆαααα·ααααΆααααααα
α₯α‘αΌαβααΎαβαααβααααα·α βα’αααΈβααΆαβααΆααααΆααβαα Hyperledger Fabric ααΆβα α»αβαααααβααΎαβααααΎβα’αααΈβαααβααΆαβαααααααα!
ααΆαααΆαααααααΆα blockchain
ααΆααααααΎααααα αΆ
ααΆααα·α αα ααΊααΎααααΈα’αα»αααααααααΆα Citcoin ααΆαα½αααΉααα»αααΆαααΌα ααΆααααααα αααααΎαααααΈαα½α ααα½αααΆααααα»ααα αααα αΌαααΉαααααΆαααααα»αααααΈααααα’ααα αααααααΆααααΈααααΈαα½ααα ααααΈαα½ααααα α αΌαααΌαααααΌααααα»αα½α αααααΎαααΉαα’αα»ααααααααααααααα αααα»ααα·α αα αααααΆααααΆαααα ααΌα αααα ααΎαβααΉαβααΆαβααααΈβαααβααααΌαβααΆαβαααααβαααβααααα αα·αβααΆαβαααα»ααα αα·αβαααααΈβααααΈα ααααΈ αα·ααααααΈααααΈααΊααΆααααααΉαααααααααααααααααΆαα Hyperledger α ααΌα ααααα αΎααα½αααααΆααααααααα·αα·αααααΆαααΆααα αα α»ααααααα αααα»αααΉαααααΆααΆαααΌαααΆα±ααα αααΆααα
αα½αααααααΌαααΊααΆααααΆαααΆααα
αα
α»αααααα αααααααΌαααΆααααααΆαα»ααααα»αααΌαααααΆααα·αααααα "αααααα·ααααα" α ααΆαααααααααααΊααΆαα½ααααααα αΆαααΈαααααααα·αααααααΌαααΆααααααΆαα»ααα
αααα»α blockchain α ααααΆαααΆααα
αα
α»αααααααααααααααααααααααΌαααΆαααααΆααααααΌααααααααα·ααααα·ααΆαα αααααααααααααααΆααααααΌαααΆαααααα»α ααΌα
ααααααΆααααααααααααα·ααααα·ααΆα ααααα»ααααΈαα½αααααΌαααΆααααααΎα α αΎαααααααα
αα
α»αααααααααααααααααααααΉαα
αΌααα
αααα»ααααααααα·α
IBM Cloud
ααΎααααααΎαααααΈαα½ααα
αααα»α
αααααΎααααααΆα blockchain ααΌαααααΆααααααααΎ Blockchain Platform αααααΎααα·αααααα·ααααα·αα·α αα αααααΆααααΆααα blockchain αααα ααααααΉαααα·ααΆαααααΈαααα·ααΆ Blockchain
ααΆαααααααααααΊααΆααΌαααα’αααααααααααα·ααΆ IBM Blockchain α ααααα·ααααααΆααΆαααααΆαα’αααΈαααααααααΎα blockchain αα ααα»ααααααααΆααααααΆααΆααααα αΆαα’αααΈαα·ααΆαααΆααααα·α αα ααΆαααα»αααααα ααΌα αααα αααααΆαααααααααααααααΎα ααΎααααααΎαα’αααααΆααααα½αα
ααΎααααααΎαααααΆαααα
αααα»αααΆα Orderer CA, Org1 CA, Orderer Peerα
ααΎααααααΎαα’αααααααΎααααΆααα
αααααΎα Channel α αΎαα α
ααΆααΆ citcoinα
ααΆαααααααΆααααΊααΆ blockchain ααΌα
ααααααΆα
αΆααααααΎαααααααα»αααΌααα (αααα»ααααα»ααααααα·):
ααΆαααααααα·α αα αααααΆααααΆααα
/*
* 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) ααααααααα·ααΈααΆαααααααΉαα α αααααααΎ Hyperledger Fabric APIα
- αα»αααΆα SendFrom αα·α RefillBalance αααααΎαααααΉαααα·ααΆαααααααααααα·ααΈααΆαααααααΉαααα½αααΆαα
- αα»αααΆα instantiate ααααΌαβααΆαβααβα α βααααβαα βαααβαααβαα·α αα αααααΆβααααΆαααβααααΌαβααΆαβααααΎβααααΆααα ααΆααα·ααα ααΆααααΌαααΆαααα α ααΆαα·αααααααααααα ααα»ααααααΆαααααααααααααα·α αα αααααΆααααΆαααααααΆααααααΌαα ααΌα αααα ααΆαα αΆααααααΎααααααΈααΆαα½αα’αΆααααα ααΊααΆαααα·ααα·αααα’ ααΈααααα α₯α‘αΌαααα αα ααααααααΎαααααΆααααααΌααααααααα·α αα αααααΆααααΆααα ααΎαααΉαααΆααααααααααΈαα αα α»ααααααα αααα·αα’αΈαα αααα»αααΎαααααα)α
- ααααΈ αα·ααααααΈααααΈααΊααΆαα ααΆαααααααααα·αααααα JSON α JS ααααΌαααΆαααααΎαααααΆααααΆαααααααααααα·ααααααα
- α’αααα’αΆα ααα½αααΆαααααααα αα α»ααααααααααααααααααααααααααΎααΆαα α αα»αααΆα getState α αΎαααααΎαα αα α»ααααααααΆαααΆαααααααΎ putState α
- αα ααααααααΎαααααΈ αα»αααΆα AddAccount ααααΌαααΆαα α αααααΆαααααααααααααΌαααΆαααααΎα‘αΎααααααΆααα ααα½αα’αα·ααααΆααααααΈαα αααα»α blockchain (maxAccounts = 5)α α αΎααα ααΈαααααΆαααΆααααααααα½α (ααΎα’αααααΆαααααααααΆαααα?) αααααΆααα ααααΆαααΎαα‘αΎαααα ααα½αααααΈα ααα α»ααααααααα½ααααααααΆα)
αααααΆααβαα ααΎαβαααα»αβαα·α αα αααααΆβααααΆαααβαα βαααα»α Channel α αΎαβααααΎβααΆβααααΆααα
αααααΎαααααα·ααααα·ααΆαααα‘αΎα Smart Contractα
αααααααααΆααααααΆααααα’α·αα’αααΈ Channel ααααααΎαααΆααα’ααααααΆα
ααΆααααααααΎαααα½αααΆαααααΆααααΆαααΆαααααααααααααΆα blockchain αα
αααα»αααα IBM α ααααΆααααΆααααααα αΆααααααα·ααΈααΆαααααααααααα»αααααΎαααΆααα
αααα»α Amazon cloud αα
ααΎαααΆαααΈααααα·αααα·α (ααααααα’αααΈααΆαα
αααα»αααααααααααΆαα)α
ααΆααααααΎα GUI αααααΆααααΆαα α ααΌαααααα API Hyperledger Fabric
Hyperledger Fabric ααΆα API αααα’αΆα ααααΎααΎααααΈα
- αααααΎαααΆααα;
- ααΆααααααΆααααααΆαα ααΉαααΆααα;
- ααΆαααα‘αΎααα·αααΆααααααΎααα·α αα αααααΆααααΆααααα αααα»αααΆααα;
- ααααα·ααααα·ααΆαα α ααΌαααααα;
- ααααΎαα»αααααααΆαα’αααΈ blockchain α
ααΆαα’αα·αααααααααααα·ααΈ
αα
αααα»ααααααα·ααΈααΆαααααααααααΎα ααΎαααΉαααααΎ API ααΎααααΈα α
ααααα·ααααα·ααΆα αα·αααααααΆαααααΎαα»αααααα»ααααα ααΈααααα ααΎαααΆααααα
ααααα αΆαααααα
ααααα½α
α αΎααααααααΎαααα·ααΆ blockchain αααα IBM α ααΎαααααα 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 ααΆαα½αααΉαα§ααΆα ααααα½ααααα
αΌααααα»α
αααααα·ααΈααΆααααααα αααα»α Amazon cloud
αααα»αααΆαα’αΆααα‘αΌααααααα·ααΈαα
Amazon αααααΆααα... IBM αα
αααα·αα’αΆα
ααα‘αΎαααααααααΈαααααααα»α αα·αα’αα»ααααΆαα±αααααα»ααααααΎααααΆαααΈααααα·αααα·αα αα·ααΈαααααα cherry αα
αααα»ααααα
- α αΆααααααΎα blockchain;
- αααααΎαααααΈαα½α (ααα»ααααα₯α‘αΌααααα’ααααα·αα’αΆα αααααΎαααααΈααααΈααΆααααααααα ααα½αα’αα·ααααΆααααααΈαααααΆααααααΆαααα αααα»ααα·α αα αααααΆααααΆαααααααΌαααΆαααΆαααααα αααα»α blockchain);
- ααα½αααΆααααααΈααααΈ;
- αααααααΆαα citcoin αααΆα Alice, Bob αα·α Alex;
- ααα½αααααΉαααα·ααΆααα (ααα»ααααα₯α‘αΌαααααα·αααΆααα·ααΈααΎααααΈαααα αΆαααααΉαααα·ααΆαααααΌα αααααααααΆααααΆαααΆααααα ααα»α αααααΆαααα·ααΆαααΆααααΉαααα·ααΆααααα·αααααΌαααΆαααΆαααα);
- αααααααΆααααααααΆα
ααααΌαααΎαα αΆααααααΎα blockchainα
αααααΆααααΎααααααΎαααααΈααααααΎα αα»αααααααααΆααααααααΆααΆαα½ααααα»αααα
ααΎαααα½αααΆααααααΈααααΈαααααΆαααΆααα’ααα
ααΎαααααΎαααΎαα’αααααααΎ αα·αα’αααααα½α α αΎαααα½αααΆααααα»ααααααααα½αααα ααααα·αααΎα’αααααααΎ αα·αα’αααααα½αααΌα
ααααΆ αααααααΈααααααΆααααΉαααααΌαααΆααααααααααααα
αα
αααα»ααααααα ααα» ααΎααααα½ααα·αα·αααααΆαααααα·ααααα·ααααα·ααααα·ααΆαα
ααΆααα·α αααααΆα’αααΈααΆααα’ααααΆαα½αααΉααααααα·ααΈααΆαααααα ααΆααααααα’αααα’αΆα
ααΎαααααα·ααααα·ααΆαααααααΎααα
αααα»α blockchainα
αα·ααααααΈααΌαα
ααααααα·ααααα·ααΆαα
ααΆαα½αααα ααΎαααΆααααα
αααααααααααααΌαααΆαα’αα»αααα PoC ααΎααααΈαααααΎααααααΆα Citcoin α ααΎααααΌαααααΎα’αααΈαααααΎααααΈα±αα Citcoin ααααΆαααΆαααααΆααααααααααααΆααααΆααααααααΆαα? αα·α
αα½α
βααΆαα:
- αα ααααΆααααΆααααααΎαααααΈ ααΌαα’αα»ααααααΆααααααΎαααα―ααα/ααΆααΆαααα ααα―αααααααΌααααααααΆαα»αααΆαα½αα’αααααααΎααααΆααααααΈ ααααΆααΆαααααααΌααααααααΆαα»ααα αααα»α blockchain α
- ααααΎααΆααααααααΆαααααααααΆααΆααα ααΆααΆααααααααααΌαααΆαααααΎααΎααααΈαααααα’ααααααααΆαα’αααααααΎααααΆααα
- α’αα·αααααΈαααααα·ααααα·ααΆαααΈα’αααααααΎααααΆαααα ααΆαααααΆαααΈααααααααααΎααα―αααααααααΆααα
ααα ααααΈααααα·ααααΆα
ααΎαααΆαα’αα»αααααααααΆα Citcoin ααΆαα½αααΉααα»αααΆαααΌα ααΆααααααα ααααααααααΈ ααα½αααΆααααα»ααα αααα αΌαααΉαααααΆαααααα»αααααΈααααα’ααα αααααααΆααααΈααααΈαα½ααα ααααΈαα½ααααα ααΌα αααα ααΎβααΎαβααααΌαβα αααΆαβααααΆααβααα»ααααΆαβαααα»αβααΆαβαααααΎα PoC?
- α’αααααααΌααα·ααααΆ blockchain ααΆααΌαα αα·α Hyperledger Fabric ααΆαα·αααα
- αααααααΎ IBM α¬ Amazon clouds;
- αααααΆααΆααααααααααα·ααΈ JS αα·ααααααααααααα ααααααα½αα ααα½αα
- ααααα·αααΎαα·αααααααα½αα ααα½αααααΌααααααΆαα»ααα·ααα αααα»α blockchain ααααα»αααααα αααα»αααΌαααααΆααα·ααααααααΆα ααααα‘αα αααααΆααααααααα½ααααα αΌαα§ααΆα αααααΆαα½α PostgreSQL α
- α αΎαα α»ααααααααα»αααααα·αααΆααααΆαα αα ααΆαα - α’ααααα·αα’αΆα ααααα αααα»ααα·ααααααΎααααααααΆαα ααααααΉαα’αααΈααΈαα»α αα!)
ααΆααΆααα·αααΆαα ααΆαα·ααααααΆαα·ααααΆααΆαααααααα»ααααααα ααα»ααααα’αααααααΌαααααααΉαααααα!
ααααααα ααΎ GitHub
αααααβαααβααΆαβααΆααβαα
βααΎβ
ααΆααΆα‘α»α Β«αααΆαααΈααααααΎΒ» β αααΆαααΈααα Node.js
ααΆααΆα‘α»α Β«α’αα·αα·ααΒ» - αααΆαααΈαααααα Node.js
ααΆααΆα‘α»α Β«blockchain"(ααααααααΆαααΆαααααα αα·αααΌαααααΆααΆααα·αααΆαα ααΊαα·αααααΎαααΆααα α αΎαααααΌαααΆααααααααΆα§ααΆα αααααααα»ααααα)α
- αα·α αα αααααΆ β ααΌαααααααα·α αα αααααΆααααΆα
- ααΆααΌα - ααΌαααα’αααααααΎααααΆαααααααΆααααααΎ Hyperledger Fabric API α
- *.cds - ααααα ααααααααα·α αα αααααΆααααΆααα
- α―αααΆα *.json - α§ααΆα αααααα―αααΆαααααααα ααΆαααααααααααααΆααααΆαααααΎααααΆαα Hyperledger Fabric API
ααΆααααΆααααααΆααΆαα
αΆααααααΎαααα»ααααα!
ααααα: www.habr.com