Postarea Construirea unei aplicații Blockchain cu JavaScript a apărut mai întâi pe Coinpedia Fintech News

Introducere

Tehnologia Blockchain are un impact asupra multora dintre inovațiile actuale care schimbă jocul, de la criptomonede precum Bitcoin până la aplicații descentralizate (DApps) în diferite domenii. Un blockchain este un registru partajat care ține evidența tranzacțiilor pe mai multe computere, astfel încât înregistrarea să nu poată fi schimbată după fapt. Fiecare intrare, sau „bloc”, este conectată la cea dinaintea ei, formând un lanț de blocuri, motiv pentru care se numește „blockchain”. Această configurare se asigură că datele sunt deschise, securizate și nu pot fi modificate, ceea ce este esențial pentru multe utilizări

JavaScript în Blockchain

Javascript este un limbaj cu mai multe fațete și celebru, potrivit în special pentru dezvoltarea blockchain. Cu ecosistemul său extins și sprijinul puternic al comunității, JavaScript simplifică dezvoltarea blockchain în mai multe moduri:

  • Adopție largă: Deoarece Javascript este limbajul de bază folosit pentru dezvoltarea web, este foarte evident să existe aplicații în peisajul blockchain cu aplicații web.

  • Procesare asincronă: capabilitățile asincrone ale JavaScript, facilitate de Node.js, sunt ideale pentru gestionarea tranzacțiilor și interacțiunilor multiple într-un mediu blockchain.

  • Ecosistem bogat: instrumentele și bibliotecile din ecosistemul JavaScript, cum ar fi Node.js pentru dezvoltarea pe server și Express.js pentru API-uri, eficientizează dezvoltarea aplicațiilor blockchain.

Public

Acest articol este conceput pentru dezvoltatorii care sunt familiarizați cu JavaScript și doresc să se aprofundeze în tehnologia blockchain. Vă va ghida prin configurarea mediului de dezvoltare, înțelegerea fundamentelor blockchain, construirea unei aplicații de bază blockchain și expunerea acesteia printr-un API simplu.

Capitolul 1: Configurarea mediului de dezvoltare

Instalarea Node.js

  • Descărcați node js pe sistemul dvs. de pe site-ul oficial și preferați versiunea LTS (Long Term Support), deoarece este recomandată cea mai bună pentru toate sistemele de operare și mențineți stabilitatea.

  •  Urmați instrucțiunile de instalare specifice sistemului dvs. de operare. Instalarea include npm (Node Package Manager), care este esențial pentru gestionarea dependențelor de proiect.

  • Verificați că instalarea este efectuată corect sau nu, rulând următoarele comenzi în bash:

    1. nodul -v

    2. npm -v

După ce rulați comenzile, ar trebui să obțineți versiunile corespunzătoare ale pachetelor pe care le-ați instalat dacă configurarea are succes.

Alegerea unui IDE

Când optați pentru JavaScript ca limbaj de programare, cel mai bun partener pentru a satisface toate nevoile de dezvoltare este VsCode, caracteristicile sale robuste și mediul versatil este cel mai potrivit.

  • Cod Visual Studio:

    1. Descărcați VsCode de pe site-ul oficial

    2. Instalați extensiile după cum urmează:

      1. ESLint: pentru identificarea și remedierea problemelor în codul JavaScript.

      2. Mai frumos: pentru formatarea coerentă a codului.

      3. Depanator pentru Chrome: pentru depanarea codului JavaScript care rulează în Google Chrome.

      4. Node.js: pentru capabilitățile de depanare Node.js.

Instalarea bibliotecilor necesare

Bibliotecile JavaScript sunt gestionate prin npm. Inițializați-vă proiectul și instalați bibliotecile necesare cu:

npm init -ynpm install express body-parser crypto//express este cadrul nodului //body-parser este programul mediu pentru a analiza cererile primite//funcția cripto folosită pentru hashing

Capitolul 2: Înțelegerea conceptelor Blockchain cu JavaScript

Bazele blockchain în JavaScript

Un blockchain este format din blocuri, care conțin:

  • Index: Poziția blocului în lanț.

  • Marca temporală: data și ora la care a fost creat blocul.

  • Date: date despre tranzacție sau alte informații stocate în bloc.

  • Previous Hash: Hash al blocului anterior din lanț, care leagă blocurile între ele.

  • Hash: identificator unic pentru bloc, generat prin hashing conținutul acestuia.

const crypto = require(‘crypto’);class Block {    constructor(index, timestamp, data, previousHash = ”) {        this.index = index;        this.timestamp = marcaj temporal;        this.data = date;        this.previousHash = previousHash;        this.hash = this.calculateHash();    }    calculateHash() {        return crypto.createHash(‘sha256’)            .update(this.index + this.previousHash + this.timestamp + JSON.stringify(this.data))            ); est    }}

Importanța mecanismelor de descentralizare, imuabilitate și consens:

Descentralizare: 

Nu există nicio autoritate centrală care să dețină toate datele necesare sau validarea tranzacțiilor, mai degrabă, toate acestea sunt distribuite în rețea. După cum știm în blockchain, fiecare nod păstrează o copie a registrului, care asigură că nu există nicio discrepanță din cauza unui singur punct de control. 

Transparenţă:

Toate nodurile și participanții pot vizualiza registrul asigurând transparență în întreaga rețea. În Ethrerneum tranzacțiile sunt vizibile în exploratorul blockchain.

Imuabilitate:

Trebuie să fii foarte atent înainte de a executa orice tranzacție, deoarece odată ce este finalizată, nu poate fi modificată în continuare. Această proprietate este destul de utilă în prevenirea fraudei și a dublei cheltuieli.

Mecanism de consens:

Mecanismele de consens sunt un set de protocoale pe care nodurile ar trebui să le urmeze în rețea pentru a conveni asupra stării registrului. Aceste mecanisme sunt utilizate pentru validarea și autentificarea tranzacțiilor. Aceste mecanisme asigură că toate nodurile din DLT sunt de acord cu starea registrului. 

Componentele unei aplicații Blockchain

Structura blocurilor în JavaScript:

const crypto = require(‘crypto’);class Block {    constructor(index, timestamp, data, previousHash = ”) {        this.index = index;        this.timestamp = marcaj temporal;        this.data = date;        this.previousHash = precedentHash;        this.hash = this.calculateHash();        aceasta.nonce = 0; // Pentru dovada lucrării    }    calculateHash() {        return crypto.createHash('sha256')            .update(this.index + this.previousHash + this.timestamp + JSON.stringify(this.  nce.data)    di    nce. ('hex');    }    mineBlock(dificultate) {        while (this.hash.substring(0, dificultate) !== Array(dificulty + 1).join(“0”)) {            this.nonce++;            this.hash = this.calculateHash();        }        console.log(„Bloc minat: ” + this.hash);    }}

Crearea și verificarea tranzacțiilor folosind JavaScript:

Tranzacțiile formează blocurile de bază ale datelor într-un blockchain. Ei arată o schimbare a valorii, execută un contract sau fac alte modificări în starea blockchain-ului. Sistemul grupează aceste tranzacții în blocuri și le pune în blockchain.

Detalii despre tranzacție:

  • Expeditor: cheia publică sau identificarea specifică a cui o trimite.

  • Destinatar: cheia publică sau identificarea specifică a celui norocos care primește tranzacția.

  • Sumă: ce se transmite, fie că sunt bani sau unele informații.

  • Marca temporală: Când au decis să apese trimite pe acest lucru.

  • Dovada/Semnătura de autenticitate: Unele coduri super-secrete care arată că afacerea este legitimă și nu a fost modificată. Cel care îl trimite își folosește cheia secretă pentru a încheia afacerea, iar toți ceilalți pot verifica dacă este real cu cheia publică.

Fragment de cod pentru tranzacție:

clasa Tranzacție {    constructor(fromAddress, toAddress, amount) {        this.fromAddress = fromAddress;        this.toAddress = toAddress;        this.amount = suma;        this.timestamp = data noua().toISOString();    }    calculateHash() {        return crypto.createHash(‘sha256’)            .update(this.fromAddress + this.toAddress + this.amount + this.timestamp)                 ;('  .digest);    }    signTransaction(signingKey) {        if (signingKey.getPublic(‘hex’) !== this.fromAddress) {            throw new Error(‘Nu poți semna tranzacții pentru alte portofele!’);        }        const hashTx = this.calculateHash();        const sig = signingKey.sign(hashTx, ‘base64’);        this.signature = sig.toDER(‘hex’);    }    isValid() {        dacă (this.fromAddress === null) returnează adevărat;        if (!this.signature || this.signature.length === 0) {            throw new Error(‘Fără semnătură în această tranzacție’);        }        const publicKey = ec.keyFromPublic(this.fromAddress, ‘hex’);        return publicKey.verify(this.calculateHash(), this.signature);    }}

Verificarea tranzacției confirmă legitimitatea unei tranzacții prin verificarea faptului că expeditorul a semnat-o corect și că expeditorul are suficiente fonduri. Acest proces implică de obicei validarea semnăturii criptografice și asigurarea faptului că soldul expeditorului este egal sau mai mare decât suma tranzacției.

clasa Blockchain {    constructor() {        this.chain = [this.createGenesisBlock()];        this.pendingTransactions = [];        this.miningReward = 100;    }    createGenesisBlock() {        return new Block(Date.parse(‘2024-01-01’), [], ‘0’);    }    getLatestBlock() {        return this.chain[this.chain.length – 1];    }    minePendingTransactions(miningRewardAddress) {        let block = new Block(Date.now(), this.pendingTransactions, this.getLatestBlock().hash);        block.mineBlock(aceasta.dificultate);        console.log(‘Blocul minat cu succes!’);        acest.lanț.împinge(bloc);        this.pendingTransactions = [            nouă Tranzacție (null, miningRewardAddress, this.miningReward)        ];    }    addTransaction(tranzacție) {        if (!transaction.fromAddress || !transaction.toAddress) {            throw new Error(„Tranzacția trebuie să includă adresa de la și către adresa”);        }        if (!transaction.isValid()) {            throw new Error(‘Nu se poate adăuga tranzacție nevalidă în lanț’);        }        this.pendingTransactions.push(tranzacție);    }    getBalanceOfAddress(adresă) {        let sold = 0;        for (const block of this.chain) {            for (const trans of block.data) {                if (trans.fromAddress === adresa) {                    balance -= trans.amount;                }                dacă (trans.laAdresă === adresă) {                    sold += trans.suma;                }            }        }        sold de returnare;    }    isChainValid() {        for (fie i = 1; i < this.chain.length; i++) {            const currentBlock = this.lanț[i];            const previousBlock = this.chain[i – 1];            dacă (!currentBlock.hasValidTransactions()) {                return false;            }            if (currentBlock.hash !== currentBlock.calculateHash()) {                return false;            }            dacă (currentBlock.previousHash !== previousBlock.hash) {                return false;            }        }        return true;    }}

Prezentare generală a algoritmilor de consens compatibili cu JavaScript:

Dovada muncii (PoW):

Explicație tehnică: Dovada muncii este cunoscută și sub numele de minerit. În acest mecanism de consens, utilizatorii trebuie să rezolve puzzle-uri criptografice care îi recompensează. Este un concurs în care primul care o rezolvă ajunge să treacă de noul bloc. Acest algoritm folosește hashing pentru a securiza blockchain-ul. 

Implementarea dezvoltatorilor: Instrumentele pentru implementarea PoW sunt furnizate de Mediul pentru dezvoltatori Bitcoin, cum ar fi Bitcoin Core.

Dovada mizei (PoS):

Explicație tehnică: Proof of Stake selectează validatorii în funcție de numărul de monede pe care le dețin și de miza ca garanție. Procesul de selecție nu depinde doar de miză, ci și de factori precum vârsta monedei și aleatorietatea. Validatorii care au cea mai mică valoare hash și cea mai mare miză sunt aleși pentru a adăuga noul bloc

Implementare pentru dezvoltatori: instrumentele și bibliotecile pentru PoS sunt furnizate de Ethereum 2.0 SDK

Dovada de miză delegată (DPoS):

Explicație tehnică:  Utilizează votul și delegații pentru validarea tranzacției și crearea de noi blocuri.

Implementare pentru dezvoltatori: EOSIO SDK oferă instrumente și biblioteci pentru DPoS.

Capitolul 3: Construirea unui Blockchain simplu cu JavaScript

 În aceasta veți afla despre structura blockchain-ului, definirea claselor și parametrii blocurilor și blocurilor și modul în care acestea sunt legate între ele.

Crearea clasei bloc

Blockchain-ul, așa cum îl reprezintă numele, este format din blocuri și fiecare clasă de blocuri bas atribute cum ar fi:

  • Index: un identificator numeric pentru poziția blocului în blockchain.

  • Timp: ora la care a fost creat blocul.

  • Date: Datele sau tranzacțiile stocate în bloc. Aceasta ar putea include informații precum detaliile tranzacției, datele utilizatorului etc.

  • PreviousHash: Hash-ul blocului anterior din lanț, asigurând continuitate și securitate.

  • Hash: un identificator unic pentru bloc, generat prin hashing conținutul blocului.

  • Nonce: un număr folosit pentru algoritmul Proof of Work, care este ajustat până când este găsit un hash valid.

Implementați metode pentru a calcula hash-ul blocului folosind sintaxa JavaScript:

  • createGenesisBlock(): creează primul bloc din blockchain, cunoscut sub numele de bloc genesis.

  • getLatestBlock(): Preia cel mai recent bloc din blockchain.

  • addBlock(): adaugă un nou bloc în blockchain după extragerea lui.

  • isChainValid(): validează integritatea blockchain-ului, asigurându-se că hashurile fiecărui bloc se potrivesc și că hashurile anterioare sunt consecvente.

Crearea clasei Blockchain

Definiți o clasă Blockchain pentru a gestiona lanțul și implementați metode pentru a adăuga noi blocuri:

clasa Blockchain {    constructor() {        this.chain = [this.createGenesisBlock()];        aceasta.dificultate = 4;  // Nivel de dificultate pentru minerit    }    // Metoda de creare a blocului genesis    createGenesisBlock() {        return new Block(0, „01/01/2024”, „Genesis Block”, „0”);    }    // Metodă de a prelua cel mai recent bloc din lanț    getLatestBlock() {        return this.chain[this.chain.length – 1];    }    // Metodă de adăugare a unui bloc nou în lanț după extragerea acestuia    addBlock(newBlock) {        newBlock.previousHash = this.getLatestBlock().hash;        newBlock.mineBlock(aceasta.dificultate);        this.chain.push(newBlock);    }    // Metodă de validare a integrității blockchain-ului    isChainValid() {        for (let i = 1; i < this.chain.length; i++) {            const currentBlock = this.chain[i];            const previousBlock = this.chain[i – 1];            // Verificați dacă hash-ul blocului curent este corect            if (currentBlock.hash !== currentBlock.calculateHash()) {                return false;            }            // Verificați dacă hash-ul anterior al blocului curent se potrivește cu hash-ul blocului anterior            if (currentBlock.previousHash !== previousBlock.hash) {                return false;            }        }        return true;    }}

Capitolul 4: Implementarea mecanismelor de consens în JavaScript

Dovada Muncii

Proof of Work, denumită adesea mining, este un sistem descentralizat în care membrii rețelei, sau minerii, concurează pentru a rezolva puzzle-uri criptografice. Primul miner care a rezolvat puzzle-ul adaugă următorul bloc la blockchain și primește o recompensă. Acest proces folosește hashing pentru a securiza blockchain-ul. Dificultatea puzzle-urilor PoW asigură că blockchain-ul rămâne sigur și controlează viteza cu care sunt adăugate blocuri noi.

În clasa Block, putem implementa Proof of Work prin adăugarea unei metode mineBlock. Această metodă ajustează nonce până când hash-ul blocului îndeplinește o anumită țintă de dificultate (de exemplu, hash-ul trebuie să înceapă cu un anumit număr de zerouri).

Fragment de cod:

class Block {    constructor(index, timestamp, data, previousHash = ”) {        this.index = index;        this.timestamp = marcaj temporal;        this.data = date;        this.previousHash = previousHash;        this.hash = this.calculateHash();        aceasta.nonce = 0;    }    // Calculați hash-ul blocului folosind SHA-256    calculateHash() {        return crypto.createHash('sha256')           .update(this.index + this.previousHash + this.timestamp +(this.timestamp) +(this.timestamp) this.nonce)            .digest('hex');    }    // Implementarea dovezii de lucru    mineBlock(dificultate) {        while (this.hash.substring(0, dificultate) !== Array(dificulty + 1).join(“0”)) {            this.nonce++;            this.hash = this.calculateHash();        }        console.log(`Block mined: ${this.hash}`);    }}

Actualizați clasa Blockchain pentru a valida dovada înainte de a adăuga noi blocuri.

clasa Blockchain {    constructor() {        this.chain = [this.createGenesisBlock()];        aceasta.dificultate = 4;    }    // Creați blocul genesis    createGenesisBlock() {        return new Block(0, „01/01/2024”, „Genesis Block”, „0”);    }    // Obțineți cel mai recent bloc din lanț    getLatestBlock() {        return this.chain[this.chain.length – 1];    }    // Adăugați un bloc nou în lanț    addBlock(newBlock) {        newBlock.previousHash = this.getLatestBlock().hash;        newBlock.mineBlock(aceasta.dificultate);  // Implementarea dovezii de lucru        this.chain.push(newBlock);    }    // Verificați dacă blockchain-ul este valid    isChainValid() {        pentru (let i = 1; i < this.chain.length; i++) {            const currentBlock = this.chain[i];            const previousBlock = this.chain[i – 1];            if (currentBlock.hash !== currentBlock.calculateHash()) {                return false;            }            dacă (currentBlock.previousHash !== previousBlock.hash) {                return false;            }        }        return true;    }}

Capitolul 5: Crearea unui API Blockchain simplu cu JavaScript

Doar crearea unui blockchain nu este suficientă pentru a-l face utilizabil în viața reală. În acest scop, trebuie să creăm o interfață de interacțiune care va fi un simplu API.

Configurarea mediului API

Înainte de a începe să construiți API-ul, este necesară configurarea mediului cu toate instrumentele și cadrele esențiale.

  • Instalați node și npm 

  • Inițializați-vă proiectul cu comanda: npm init -y

  • Install Express: npm install express –save (Express este cadrul nod js care ajută la construirea mai rapidă a API-urilor)

  • Instalați Body parser pentru a gestiona cererea de intrare: npm install body-parser –save

Construirea API-ului

Acum că mediul dvs. este configurat, să construim API-ul. API-ul va permite utilizatorilor să interacționeze cu blockchain-ul, să vadă lanțul și să adauge noi blocuri.

Creați serverul cu Express:

const express = require(‘express’);const bodyParser = require(‘body-parser’);const Blockchain = require(‘./blockchain’);  // Importă aplicația Blockchain classconst = express();app.use(bodyParser.json());let demoBlockchain = new Blockchain();  // Inițializați o nouă instanță Blockchain

Definiți punctele finale API

app.get('/blocks', (req, res) => {     //endpoint pentru a obține blockchain-ul    res.json(demoBlockchain.chain);});//acesta este punctul final pentru a crea un newblockapp.post(' /mine', (req, res) => {    const newBlock = new Block(        demoBlockchain.chain.length,        Date.now(),        req.body.data,        demoBlockchain. ); latestBlock (demoBlockchain. ); LatestBlock blocare );     res.send(`Blocul extras cu succes: ${newBlock.hash}`);});

Porniți serverul

app.listen(3000, () => {    console.log(‘Blockchain API rulează pe portul 3000’);});node server.js

Capitolul 6: Rularea și testarea aplicației

Această fază este critică pentru a vă asigura că blockchain-ul dumneavoastră funcționează corect și că toate funcțiile funcționează conform așteptărilor.

Rularea aplicației

  1. Porniți serverul: navigați la directorul proiectului și apoi rulați ținta: node server.js

  2. Obțineți confirmarea serverului: API-ul Blockchain rulează pe portul 3000

  3. Accesarea aplicației: aplicația dvs. rulează acum local pe http://localhost:3000, făcând-o gata să accepte solicitări HTTP

Testare cu Postman

Postman este un instrument utilizat pe scară largă pentru testarea API-urilor, permițându-vă să trimiteți solicitări HTTP și să vizualizați răspunsurile. Este deosebit de util pentru verificarea funcționalității API-ului blockchain.

  • Instalați Postman

  • Testarea punctului final Blockchain

  • Testați punctul final Mining

  • Verificați blockchain-ul

(Step1)node server.jsBlockchain API rulează pe portul 3000//http://localhost:3000/block(Step2)[    {        „index”: 0,       „timestamp”: 1636568888888     ,         „ previousHash”: „0”,        „hash”: „81f1a4ab4d484c64f1b4c524b1d8f2fef8f2bca7853d44682e12022fb2d803b9”    }](Pasul 3. : " :     " :     " :     " ,        „emițător”: „John Doe”,        „destinatar”: „Jane Smith”    }} (Pasul 4){    „mesaj”: „Blocare extrasă cu succes”,    „blocare”: {        „index”: 1,       „marca temporală”: 1636578990123,         „date”:                         „sender”: „John Doe” ,            „receptor”: „Jane Smith”        },        „previousHash”: „81f1a4ab4d484c64f1b4c524b1d8f2fef8f2bca7853d               „hash”: „5a1cdd657c8d0d3c0f12c2bb2c9fdf32a7d2d4ad13fcb78170a8caa82ff4a9a2”    }} (Pasul 5)[    {         “     ” 6” :    ” 6”    6 87994,        „date”: „ Genesis Block”,        „previousHash”: „0”,        „hash”:„81f1a4ab4d484c64f1b4c524b1d8f2fef8f2bca7853d44682e12022fb2d803b”

 

   },    {

 

       „index”: 1,        „marca temporală”: 1636578990123,        „date”: {            „sumă”: 100,            „expeditor”: „John Doe” :                                   },        „previousHash”: „81f1a4ab4d484c64f1b4c524b1d8f2fef8f2bca7853d44682e12022fb2d803b9”, „hash”: „5a1cdd657c8d0d3c0f12c2bb2c9fdf32a7d2d4ad13fcb78170a8caa82ff4a9a2”    }]

curl http://localhost:3000/blocks //Vizualizați blockchain-ul[    {        „index”: 0,        „timestamp”: 1636568887994,         „date”: „Genesis Block”,       :         „81f1a4ab4d484c64f1b4c524b1d8f2fef8f2bca7853d44682e12022fb2d803b9”    }]//Exploarea unui nou blockcurl -X POST -H „Content-Type: application/{“:“:”: „John”: „0:“:” hn Doe”, „ receptor”: „Jane Smith”}}' http://localhost:3000/mine//verify the blockcurl http://localhost:3000/blocks[    {        „index”: 0,        „timestamp”: 1636568887994,            : „Blocul Genesis”,        „previousHash”: „0”,        „hash”: „81f1a4ab4d484c64f1b4c524b1d8f2fef8f2bca7853d44682e12022e12022e12022e12022e                     index”: 1,        „marca temporală”: 1636578990123,        „date”: {            „sumă”: 100,             „expeditor” : „John Doe”,            „destinator”: „Jane Smith”        },        „previousHash”: „81f1a4ab4d484c64f1b4c524b1d8f2fef8f2bca782”,             „hash”: „5a1cdd657c8d0d3c0f12c2bb2c9fdf32a7d2d4ad13fcb78170a8caa82ff4a9a2”    }]

Capitolul 7: Exemplu live de construire a unei aplicații Blockchain cu JavaScript

Execuție pas cu pas

  • Pasul 1: Creați clasa Block cu atributele necesare folosind sintaxa JavaScript.

class Block {    constructor(index, timestamp, data, previousHash = ”) {        this.index = index;        this.timestamp = marcaj temporal;        this.data = date;        this.previousHash = previousHash;        this.hash = this.calculateHash();        aceasta.nonce = 0;    }}

  • Pasul 2: Implementați metoda calculateHash.

calculateHash() {    return crypto.createHash(‘sha256’)        .update(this.index + this.previousHash + this.timestamp + JSON.stringify(this.data) + this.nonce)        .digest(‘hex’);}

  • Pasul 3: Definiți clasa Blockchain și inițializați-o cu un bloc de geneză.

clasa Blockchain {    constructor() {        this.chain = [this.createGenesisBlock()];    }}

  • Pasul 4: Implementați metode pentru a adăuga blocuri noi și pentru a prelua cel mai recent bloc folosind JavaScript.

getLatestBlock() {    return this.chain[this.chain.length – 1];}addBlock(newBlock) {    newBlock.previousHash = this.getLatestBlock().hash;    newBlock.hash = newBlock.calculateHash();    this.chain.push(newBlock);}

  • Pasul 5: Adăugați funcționalitatea Proof of Work la clasa Block și actualizați clasa Blockchain.

mineBlock(dificultate) {    while (this.hash.substring(0, dificultate) !== Array(dificulty + 1).join(“0”)) {        this.nonce++;        this.hash = this.calculateHash();    }}

  • Pasul 6: Configurați mediul API pentru a gestiona solicitările folosind Express.

npm init -ynpm install express –save                        //Configurarea proiectului și a directoruluiconst express = require(‘express’);      //Configurarea serverului expres const bodyParser = require(‘body-parser’);const Blockchain = require(‘./blockchain’); // Presupunând că aveți clasa Blockchain din capitolele anterioareconst app = express();app.use(bodyParser.json());const demoBlockchain = new Blockchain();app.get('/blocks', (req, res) => {    res.json(demoBlockchain.chain);});      app.post('/mine', (req, res) => {            //crearea unui nou bloc             const newBlock = new Block(demoBlockchain.chain.length,         Data.now(),    de                                                                                                                                                              const newBlock ('/mine), (req, res) => {            ().hash);     newBlock.mineBlock(2) // Presupunând o dificultate de 2 pentru PoW    demoBlockchain.addBlock(newBlock);     res.send(`Block cu succes: ${newBlock.hash}`);}); app.listen(3000, () => {                               //pornirea serverului    console.log('Blockchain API rulează pe portul 3000');});node server.js

  • Pasul 7: Testați aplicația prin extragerea unui bloc nou și verificând blockchain-ul folosind Postman sau curl.

În poștaș trimiteți cererea: solicitarea GET către http://localhost:3000/blocks.{    „date”: {        „sumă”: 10,        „sender”: „Alice”,        „receptor”: „Bob”    }}În curl :curl http://localhost:3000/blocks

Să rezumăm pe scurt pașii de mai sus

Să parcurgem procesul pas cu pas pentru a aduce la viață aplicația ta blockchain:

  1. Începeți prin a defini clasele Block și Blockchain pentru a stabili structura de bază a blockchain-ului dvs.

  2. Încorporați Proof of Work prin adăugarea metodei mineBlock la clasa Block, asigurându-vă că fiecare bloc îndeplinește dificultatea necesară înainte de a fi adăugat în lanț.

  3. Configurați un API folosind Express care vă permite să interacționați cu blockchain-ul dvs., permițând operațiuni precum vizualizarea lanțului și adăugarea de noi blocuri.

  4. Executați și testați aplicația dvs. cu Postman sau curl pentru a verifica dacă totul funcționează conform așteptărilor, de la extragerea blocurilor până la preluarea datelor blockchain.

Codare fericită!!