In articulis superioribus tractavimus technologias quibus impedimenta aedificantur (Quid faciamus stipitem?) et casus qui ope illorum perfici possunt (Cur causam aedificemus?). Tempus est manibus operari! Ad gubernatores efficiendos et PoC (Probatio Conceptus), nubibus uti malim, quia... ubique terrarum accedere possunt et saepe tempus terere in taedio ambitus institutione non oportet, quia Sunt figurationes praesentes. Itaque simplex aliquid faciamus, exempli gratia, retis nummorum transferendi inter participes et modeste BitCoin appellemus. Hacc utemur nube IBM et impedimento universali Hyperledger Fabric. Primum, sit figura cur Hyperledger fabrica universalis clausura dicatur?
Hyperledger fabrica universalis
Universaliter loquendo ratio universalis notitiae est;
Copia servientium et nucleus programmator qui logicam negotiationem exercet;
Interfaces for commercium cum ratio;
Instrumenta adnotatione, authentica et auctoritate machinis/hominibus;
Database actarum operational et archival notitia:
Officialis versionis quae Hyperledger Fabric legi potest websiteet in summa, Hyperledger Fabricae suggestus apertus est, qui te permittit aedificare impedimenta privata et contractus arbitrarios captiosos in JS et Go programmandi linguas scriptos facere. Singillatim inspiciamus de architecturae fabricae Hyperledger et fac hoc esse systema universale quod solum specialia habet ad condenda et notandas notitias. Proprietas est quod notitia, sicut in omnibus claustris, reponitur in caudices, qui in claustro ponuntur, nisi si participes ad consensum pervenerint et cum notitias memoratas quiete corrigi vel deleri non possint.
Hyperledger Fabric Architecture
Figura demonstrat architecturae fabricae hyperledger:
organizations β instituta pares continent, i.e. blockchain existit ob sustentationem institutionum. Diversae institutiones eiusdem alvei pars esse possunt.
Channel β logica structura quae pares in coetus coniungit, i.e. quod datum est blockchain. Hyperledge fabricae fabricae plures impedimenta cum diversis negotiis logicae simul procedere potest.
Membership Services Providentem (MSP) est CA (Auctoritas certificatoria) pro identitate ferendi ac muneribus assignandis. Nodi creare, MSP penitus debes.
Nodi pari - cognoscere transactions, repone claustrum, fac contractus captiosos et penitus cum applicationibus. Pares habent identitatem (libellum digitale) quod editur a MSP. Dissimilis retis Bitcoin vel Etherium, ubi omnes nodi iura aequa habent, in Hyperledger nodis fabricae varias partes agunt;
Pari maybe subscriptionis pari (EP) contractus et dolor.
paris committens (CP) - Solummodo notitias in impedimento servando et renovationem "mundi status".
Anchora Peer (AP) - Si plures consociationes ad impedimentum participent, tum pares ancorae pro communicatione inter eos adhibentur. Quisque ordo debet habere unam vel plures anchoram pares. Usura AP, quilibet par in regimine informationem habere potest de omnibus paribus in aliis Institutis. Ad synchronize notitia inter APs confabulationes protocol.
Dux Peer - si ordo plures habet pares, tunc solus dux paris stipes ab ordine ministerii recipiet et eas ceteris paribus dabit. Dux potest esse vel determinatus stabiliter vel dynamice electus a paribus in ordinatione. Protocollum confabulationis etiam notitias de principibus synchronis fieri.
bONA - entia quae valorem habent et in clausura reponuntur. Specialius, haec est notitia clavis pretii in forma JSON. Haec est notitia quae scripta est in Blockchain. Historiam habent, quae in impedimento conditur, et status hodiernus, qui in datorum "terrarum statu" conditus est. Structurae datae ad libitum secundum negotia negotia implentur. Agri non sunt necessarii, sola commendatio est bonorum possessorem habere debere et pretiosum esse.
ledger β constat ex Blockchain et Verbi statu datorum, quod hodiernam rerum statum reponit. Mundus status utitur LevelDB vel CouchDB.
contractus dolor - utens captiosis contractibus, negotium logice systematis impletur. In Hyperledge Fabric, contractus captiosus, chaincode vocat. Usura catenae, bona et transactions super illis specificantur. In technicis verbis, captiosus contractus sunt moduli programmatum in JS vel Go programmandi.
Subscriptio consilium β pro unoquoque chaincode, potes consilium ponere in quot confirmationes pro transactione expectanda et a quibus. Si consilium non est positum, defalta est: "transactio ab aliquo membro cuiuslibet organizationis in canali firmari debet". Exempla agendi:
Negotium approbari debet ab aliquo administratore ordinationis;
Confirmari debet ab aliquo membro vel cliente ordinatione;
Pari ordinatione aliqua confirmari debet.
Ministerium iussis - sarcinas gerens in caudices eosque ad proceres in canali mittit. Fideiussores traditio nuntiorum omnibus pares in retiacula. Usus ad systemata industriae Kafka nuntius sectorem, ad progressionem et probationem Solo.
CallFlow
Applicatio cum Hyperledge fabricae usura Go, Node.js vel Java SDK communicat;
Cliens facit tx transactione et mittit pares subscriptiones;
Providus huius subscriptionem certificat, rem perficit, et chirographum chirographum suum ad clientem mittit. Chaincode fit solum in pari subscriptione, et effectus effectus eius omnibus paribus mittitur. Hoc algorithmus operis appellatur PBFT (Practical Byzantine Fault Tolerant) consensus. Differt ab classic BFT nuntius mittitur et confirmatio non ab omnibus participantibus, sed a quodam statuto expectatur;
Post clientem numerum responsionum ad subscriptiones pertinentium accepit, negotium ad ministerium Ordinis mittit;
Ministerium ordinans truncum generat et eum omnibus paribus committens mittit. Ministerium ordinatio sequentem tabulas caudices efficit, quae sic dictae ferrariae eliminat.see section "Caudinae");
Proceres truncum accipiunt, consilium in subscriptione iterum preme, stipitem scribe ad impedimentum et statum muta in βState Mundiβ DB.
Illae. Hoc evenit in divisione partium inter nodos. Hoc in tuto collocet, id est scalabilem ac securum;
Captiosus contractus (chaincode) praestare subscriptionis pares. Hoc efficit ut secreto contractus captiosus est, quia non ab omnibus participantibus, sed solum a pariibus approbando.
Cito laborare iubes. Hoc providetur per hoc quod ordinans solum truncum format et ad certum ducum procerum ordinem mittit.
Proceres committentes solum impedimentum reponunt - multa ex his esse possunt et multum potentiam et operationem instantem non requirunt.
Recorda et notitias ex blockchain datorum in JSON format;
Da et cognoscere API aditum usura certificatorium auctoritati.
Nunc ut pauca intelligimus de speciebus Hyperledger Fabricae, quid tandem utile faciamus!
disponas blockchain
DE PECCATO quaestio
Negotium est retis Citcoin cum his functionibus efficere: rationem crea, trutinam accipere, rationem tuam supermittis, nummos ab uno in alium transferes. Exemplar rem ducamus, quod in contractu acri ulterius efficiemus. Rationes igitur habebimus quae nominibus notantur et stateram continent et indicem rationum. Rationes et index rationum sunt in terminis bonorum Fabricae Hyperledger. Proinde habent historiam et statum hodiernum. Conabor hoc clare trahere;
Figurae supremae sunt status hodierni, qui in datorum "terrarum statu" conditus est. Infra eas figurae exhibentes historiam in claustro repositam. Praesens status bonorum per transactions mutatur. Res tantum in totum mutatur, ergo propter transactionem novum obiectum creatur et praesens valor rei in historiam accedit.
IBM Cloud
Nos rationem creare in IBM nubes. Ad suggestum stipendii utendum, upgraded ad redde-as-Te-Go. Hoc processus non potest esse velox, quia... IBM informationes petit et manually verificat. In nota affirmativa, dicere possum IBM habere materias disciplinas bonas quae te permittunt explicandi Hyperledge Fabricae in sua nube. Articulorum et exemplorum seriem sequentem probavimus;
Eae screenshots IBM Blockchain suggestum sunt. Haec non est instructio de impedimento faciendi, sed demonstratio scopo negotii. Ita, ad propositum nostrum, unam Unitarum facimus;
Nodos in ea creamus: Order CA, Org1 CA, Ordinis Peer:
Users creamus:
Channel crea et citcoin vocant;
Essentialiter Channel clausus est, unde nulla clausura incipit (Gen. obstructionum);
Scribens Smert contrahant
/*
* 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;
Intuitive hic omnia plana sunt;
Plures functiones (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) demo programma vocabit utens Hyperledger Fabric API.
Munera ex SendFrom et RefillBalance generant Events quae programmata demo accepturi sunt.
Munus instantiatum semel dicitur cum dolor contractus instantiatur. Nam dictum est non justo tempor, sed tempus dolor interdum. Ideo album initializing cum inani ordinata est idea mala, quia Nunc, cum versionem captiosae contractus mutamus, praesens album amittemus. Sed bene est, iustus sum discere).
Rationes et index rationum sunt structurae datae JSON. JS ponitur pro notitia maxi.
Praesens valorem res uti potes munus vocationis getState, ac putState update utens.
Cum Rationem creans, munus AddAccount appellatur, in quo comparatio fit ad maximum numerum rationum in claustro (maxAccounts = 5). Et hic est jambus (animadvertisti?), quae ducit ad numerum rationum inexhaustum auctum. Talia errata vitanda sunt)
Deinde captiosam contractionem in Channel oneremus et instantiamus eam:
Intueamur transactionem pro installing Smert contrahant:
Intueamur singula de nostro Channel:
Quo fit, ut sequenti schemate retis in IBM nubem stipendii consequamur. Tabula etiam ostendit rationem demo programma in nube Amazonum currentem in servo virtuali (plus de eo in sectione sequenti);
Creando GUI ad Hyperledger volutpat API vocat
Hyperledger Fabrica habet API quod ad usum potest;
alveum crea;
Hospites pervideas ad canalem ;
Installation and instantiation of smart contract in the channel;
Convocatis rebus;
Peto notitias in blockchain.
Applicationem progressio
In programmate demo nostro utemur API solum ad transactiones et informationes petendas, quia Iam reliquos gradus perfecerunt utendo tribunali IBM blockchain. Scribimus GUI utens norma technicae artis: Express.js + Vue.js + Node.js. Articulum separatum scribere potes in quomodo incipias applicationes interretiales creandi. Hic nexum relinquo lectionum seriem quam maxime probavi. Plena Stack Web App utens Vue.js & Express.js. Effectus est clientis applicationis cum familiari instrumento graphicali in stylo Googles materiali Design. CETERA API inter clientem et servulum pluribus nominibus constat;
HyperledgerDemo/v1/init - blockchain initialize;
HyperledgerDemo/v1/ rationum/listorum β indicem omnium rationum posside;
HyperledgerDemo/v1/ob?nomen=Bob&balance=100 β creare Bob rationem;
HyperledgerDemo/v1/info?account=Bob β notitias de ratione Bob;
HyperledgerDemo/v1/transactio?a=Bob&to=Alice&volume=2 - duos denarios a Bob in Alicia transferre;
Descriptio API cum exemplis comprehensis Postumius website β Nota programmata probandi HTTP API.
Demo application in Amazon nube
Ego application to Amazon uploaded quia ... IBM adhuc rationem meam upgrade non valuit ac permittit ut servitores virtualis crearem. Quomodo cerasus ad domain adde: www.citcoin.info. Servam aliquantisper servabo, tum eam avertam, quia... cents pro redditu stillant, et nummi citcoin nondum in commerciis stirpis recensentur) screenshots demo in articulo comprehendo ut logica operis patet. Demo application can:
Inchoare impedimentum;
Rationem crea (sed nunc novam Rationem creare non potes, quia numerus maximus rationum in contractu callidiorum in clausura perventum est);
Indicem Rationis accipite;
Translatio nummorum citcoin inter Alicia, Bob et Alex;
Accipe certe (sed nunc nullo modo est ostendere certe, ut pro simplici, quod interface dicit, certe non sustinetur);
Actus logi.
Primum impedimentum initialize debemus:
Deinde nos rationem creamus, ne tempus in trutina consumamus;
Indicem omnium rationum in promptu habemus:
Mittentem et recipientem eligimus et stateras sumimus. Si autem mittens et recipiens eadem sunt, implebitur ratio ipsius;
In iniuriari monitorem actionum executionem ponimus:
Profecto hoc totum cum progressione demo. Infra videre potes rem nostram in impedimento:
Index generalis rerum et transactionum;
Cum hoc, feliciter perfecerunt exsecutionem PoC ad network faciendum Citcoin. Quid aliud faciendum est ut Citcoin fiet retis plena retis ad transferendas nummos? Parvus, parva, parvum:
In scaena rationis creationis, generatio privata / clavis publica. Clavis privata condi debet cum usore rationis, clavis publica in clausura reponenda est.
Nummum fac transferre in quo clavis publica, potius quam nomen, ad usorem cognoscendum adhibetur.
Transactiones encrypt ab usore ad server cum clavis privatis suis.
conclusio,
Citcoin reticulum implevimus cum his muneribus: rationem adde, stateram sume, rationem tuam supermittis, nummos ab uno in alium transferes. Quid igitur nobis constat PoC aedificare?
Studere clausuram debes in genere et in specie fabricae hyperledge;
IBM vel Amazonum nubibus uti disce;
Disce linguam programmandi JS et compagem interretialem aliquam;
Si notitia aliqua reponenda non est in impedimento, sed in datorum separato, disce integrare, exempli gratia, cum PostgreSQL;
Ac postremum sed non minimum - in mundo hodierno sine scientia Linux vivere non potes!
Utique, scientia eruca non est, sed laborare habebis!
Fontes in GitHub
Fontes ad induendum GitHub. Reconditorium brevis descriptio:
Catalogue Β«ServerΒ» β Node.js server
Catalogue Β«huiusΒ» β Node.js client
Catalogue Β«blockchainΒ« (valores moduli et claves, utique non operantur et dantur nisi ad exemplum);
contractus - dolor contractus source codice
pera β claves usuario ad usus Fabric API Hyperledger.
*.Cds - dolor contractus versiones compilavit
* .json files - exempla configurationis lima utendo Hyperledger Fabric API