Kuinka aloittaa Hyperledger Fabric Nodejs -koodin kirjoittaminen

Huomaa: Tämän artikkelin kirjoittamisen jälkeen moduulimme on tehty joitain muutoksia ja päivityksiä. Tarkista githubista uusimmat tiedot.

Ketjukoodin kirjoittaminen ei saisi olla vaivaa. Onneksi Hyperledger Fabric on tuonut Nodejs-ketjutunnuksen v1.1.0: een (virallisen julkaisun pitäisi olla valmis tämän kuun loppuun mennessä). Verrattuna Golangiin, tämä on kieli, jota ihmiset ymmärtävät ja ovat helpompi käyttää, mukaan lukien meidät. Ollakseni rehellinen, pidän Golangista (kun ymmärsin sen lopulta). Mutta mielestäni ketjukoodin kirjoittaminen on paljon enemmän kuin ylimääräinen piirte kuin Nodejsilla. Vaihdoimme, kun emme päässeet ABAC (cid) -ominaisuuteen Golangissa, koska tämän paketin riippuvuus ei halunnut ratkaista oikein.

Kaikki esimerkit on kirjoitettu konekirjoituksella, koska kaikkia pakettejamme kehitetään myös konekirjoituksella. Mutta poistamalla tyypit voit käyttää sitä myös muussa kuin kirjoitusohjelmassa. Suosittelemme kirjoituskoneen käyttöä, koska ketjukoodisi voi helpommin tuoda vikoja ilman kirjoitusta.

komponentit

Loimme paketin, joka sisältää joukon auttajaluokkia, jotta voit kirjoittaa koodia nopeammin. Verrattuna Golangiin, toimintosi voidaan vähentää 10 rivistä 4: een.

lanka lisää @ theledger / kangas-ketju -koodit

Chaincode

Chaincode-luokka on perusluokka, joka sisältää käsittelijät Invoke () ja Init () -toiminnoille, joita kangaslevy vaatii. Init () -toiminto voidaan korvata vain ottamalla se käyttöön MyChaincode-luokassa. Tätä toimintoa tulisi kutsua init: ksi ja siihen lisätään samat argumentit kuin mukautetut toiminnot.

vientiluokka MyChaincode laajentaa ketjukoodia {

Ketjukoodin perusluokka toteuttaa myös Invoke () -menetelmän. Se etsii luokassasi olemassa olevia ketjutunnusmenetelmiä lähettämäsi funktionimellä. Se myös kääri ja sarjaa vastauksen automaattisesti shim.success () ja shim.error () -sovelluksilla. Voit palauttaa vain javascript-objektin ja se tekee loput, mutta puskurin palauttamista tuetaan myös. Joten esimerkiksi jos vedämme ketjukoodiin toiminto queryCar, alla oleva toiminto suoritetaan.

vientiluokka MyChaincode laajentaa ketjukoodia {

    async queryCar (stubHelper: StubHelper, args: merkkijono []) {
      // Voit palauttaa vain javascript-objektin
      paluu auto;
      // Tai voit järjestää sen itse
      palauta Buffer.from (JSON.stringify (auto));
    }
    
}

StubHelper

StubHelper on kääre kangaslevyn ympärillä. Se on auttaja sarjaamaan ja ansaitsemaan automaattisesti tallennettavat / noudettavat tiedot. Täysi sovellusliittymä löytyy täältä.

Muuttaa

Transform-luokka on avustaja tietojen muuntamisessa Hyperledger Fabric -sovelluksen edellyttämiin muotoihin ja niistä. Täysi sovellusliittymä löytyy täältä.

Koodikirjoittaminen

Ketjukoodin kirjoittaminen ei ole niin vaikeaa Nodejsissa. Seuraavissa esimerkeissä dokumentoimme kuinka kirjoittaa ketjukoodi paketin kanssa. Käytämme tässä fabcar-esimerkkiä.

Tarkistetaan argumentit

Kirjoitimme auttajafunktion tarkistaaksesi argumentit helposti Yupin avulla. Argumenttien tarkistuksen lisäksi se voi myös jäsentää argumentit merkkijonosta vaadittuun datamuotoon. Se jäsentää ja tarkistaa argumenttisi automaattisesti skeeman perusteella.

const verifiedArgs = odota Helpers.checkArgs (args, yupSchema);

Esimerkki validoinnista näyttää tältä. Syynä siihen, että menimme juan kanssa, on se, että se on helposti laajennettavissa. Lisää dokumentaatiota löytyy Yup's Githubista.

// Args
const args = [{
            avain: "CAR0",
            merkki: "volvo",
            malli: "v40",
            väri punainen",
            omistaja: "Bob",
         }]
// Argumenttien tarkistaminen
const verifiedArgs = odota Helpers.checkArgs (args [0], Yup.object ()
   .muoto({
            avain: Yup.string (). vaaditaan (),
            merkki: Yup.string (). vaaditaan (),
            malli: Yup.string (). vaaditaan (),
            väri: Yup.string (). vaaditaan (),
            omistaja: Yup.string (). vaaditaan (),
         }));

Vuorovaikutus kankaan kanssa

Kuten edellä mainittiin, StubHelper antaa sinun olla helposti vuorovaikutuksessa kankaan tilan kanssa. Tämän kääre antaa sinun kirjoittaa ketjukoodin joutumatta käsittelemään sarjoittamista ja ansioitumista. Tämä tekee koodisi puhtaammaksi ja antaa sinun keskittyä sovellukseen. Täysi sovellusliittymä löytyy täältä tai lukea.

esimerkit

Täydellinen esimerkki ketjukoodin toteutuksesta löytyy täältä.

Kysy autoa

Kysely rikkaita kyselyjä käyttämällä (lisätietoja rikas kyselyistä täältä)

Uusien kohteiden luominen

Objektien päivittäminen

Objektien päivittäminen

Oletko kiinnostunut aloittamaan oman blockchain-projektisi, mutta et tiedä miten? Tarvitsetko apua tokenimyynnin aloittamisessa tai sen tarkistamisessa? Ota yhteyttä TheLedgeriin.

johtopäätös

Osoitimme täällä, kuinka helppoa on kirjoittaa ketjukoodi paketin avulla. Sinun ei tarvitse, mutta se nopeuttaa asioiden lopettamista hiukan. Nämä esimerkit voivat auttaa sinua aloittamisessa. Jos haluat lukea dokumentaatiomme, voit tarkistaa githubimme. Kannustamme myös sinua osallistumaan ja parantamaan tätä pakettia.

Minne mennä seuraavaksi

→ kuratoitu luettelo Hyperledger Fabric -resursseista

→ Hyperledger Fabric REST -palvelimen typpikirjoituslevy

→ Verkkokattilalevy, mukaan lukien Nodejs-ketjutunnus

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

SEURAAVA ARTIKKELI TÄMÄN SARJASSA → Kuinka aloittaa Hyperledger Fabric Nodejs -koodikoodisi testaaminen