Claustrum: quid PoC aedificare debemus?

Oculi tui timent, et manus tuae pruriunt!

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?

Claustrum: quid PoC aedificare debemus?

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:

Claustrum: quid PoC aedificare debemus?

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:

Claustrum: quid PoC aedificare debemus?

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

Claustrum: quid PoC aedificare debemus?

  • 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.

Plura de solutionibus architecturae hyperledger Fabricae et cur hoc modo operatur et non aliter hic inveniri potest: Architecture Originum vel hic; Hyperledger volutpat: A Distribuit Operating Ratio pro Permissionibus Blockchains.

Ita, Hyperledge Fabrica est ratio vere universalis qua potes;

  • Effectum deducendi arbitrariam negotii logicam utens machinamentum callidum contrahendi;
  • 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;

Claustrum: quid PoC aedificare debemus?

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;

Claustrum: quid PoC aedificare debemus?

Nodos in ea creamus: Order CA, Org1 CA, Ordinis Peer:

Claustrum: quid PoC aedificare debemus?

Users creamus:

Claustrum: quid PoC aedificare debemus?

Channel crea et citcoin vocant;

Claustrum: quid PoC aedificare debemus?

Essentialiter Channel clausus est, unde nulla clausura incipit (Gen. obstructionum);

Claustrum: quid PoC aedificare debemus?

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:

Claustrum: quid PoC aedificare debemus?

Intueamur transactionem pro installing Smert contrahant:

Claustrum: quid PoC aedificare debemus?

Intueamur singula de nostro Channel:

Claustrum: quid PoC aedificare debemus?

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);

Claustrum: quid PoC aedificare debemus?

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;
  • HyperledgerDemo/v1/disconnect - nexum clauso claudere.

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:

Claustrum: quid PoC aedificare debemus?

Deinde nos rationem creamus, ne tempus in trutina consumamus;

Claustrum: quid PoC aedificare debemus?

Indicem omnium rationum in promptu habemus:

Claustrum: quid PoC aedificare debemus?

Mittentem et recipientem eligimus et stateras sumimus. Si autem mittens et recipiens eadem sunt, implebitur ratio ipsius;

Claustrum: quid PoC aedificare debemus?

In iniuriari monitorem actionum executionem ponimus:

Claustrum: quid PoC aedificare debemus?

Profecto hoc totum cum progressione demo. Infra videre potes rem nostram in impedimento:

Claustrum: quid PoC aedificare debemus?

Index generalis rerum et transactionum;

Claustrum: quid PoC aedificare debemus?

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

Hoc solum initium est!

Source: www.habr.com