Kuidas alustada Hyperledger Fabric Nodejs ahelkoodi kirjutamist

Märkus: alates selle artikli kirjutamisest on meie moodul läbinud mõned muudatused ja värskendused. Kontrollige githubist uusimat teavet.

Ahelkoodi kirjutamine ei tohiks olla vaeva. Õnneks on Hyperledger Fabric v1.1.0-s kasutusele võtnud Nodejsi ahelkoodi (ametlik väljalase peaks olema selle kuu lõpuks valmis). Võrreldes Golangiga on see keel, millest inimesed saavad rohkem aru ja mida on lihtsamini kasutada, sealhulgas ka meil. Ausalt öeldes sain Golangile meeldida (kui ma sellest lõpuks aru sain). Kuid minu arvates on ahelkoodi kirjutamine palju rohkem õla kui Nodejs. Lülitasime ümber, kui me ei saanud Golangis ABAC-i (cid) funktsiooni juurde, kuna selle paketi sõltuvust ei tahetud õigesti lahendada.

Kõik näited on kirjutatud masinakirjas, kuna kõik meie paketid on välja töötatud ka masinakirjas. Kuid tüüpide eemaldamisega saate seda kasutada ka mitte-masinakirjas olevas rakenduses. Soovitame kasutada masinakirja, kuna ilma tippimiseta saaks teie ahelkood vigu hõlpsamini tutvustada.

Komponendid

Lõime paketi, mis sisaldab abistajate klassi komplekti, et saaksite koodi kiiremini kirjutada. Võrreldes Golangiga saab teie funktsioone vähendada 10-lt realt 4-le.

lõnga lisage @ theledger / kangas-ahelkood-utid

Keti kood

Chaincode klass on põhiklass, mis sisaldab käitlejaid funktsioonidele Invoke () ja Init (), mida kangaserval nõutakse. Funktsiooni Init () saab üle kirjutada, rakendades selle lihtsalt oma MyChaincode klassis. Selle funktsiooni nimi peaks olema init ja sellele sisestatakse samad argumendid, mis teie kohandatud funktsioonidele.

ekspordiklass MyChaincode laiendab ketikoodi {

Chaincode'i põhiklass rakendab ka meetodit Invoke (). See otsib teie klassis olemasolevaid ahelkoodimeetodeid teie saadetud funktsiooni nimega. Samuti mähitakse ja järjestatakse vastus automaatselt shim.success () ja shim.error () abil. Võite lihtsalt tagastada javascripti objekti ja see teeb ülejäänu, aga puhverpala tagastamine on endiselt toetatud. Näiteks kui me kutsume oma ahelkoodi funktsiooniga queryCar, siis täidetakse allolev funktsioon.

ekspordiklass MyChaincode laiendab ketikoodi {

    async queryCar (stubHelper: StubHelper, args: string []) {
      // Võite lihtsalt javascripti objekti tagastada
      tagasisõiduauto;
      // Või saate selle ise ise seeriaviisiks seada
      tagasi Buffer.from (JSON.stringify (auto));
    }
    
}

StubHelper

StubHelper on ümbrisriidest riidetüki ümber toimiv ümbris. See on abistaja salvestatavate / hangitavate andmete automaatseks järjestamiseks ja realiseerimiseks. Täieliku API leiate siit.

Muutke

Klass Teisendus on abiks andmete teisendamisel vormingutes, mida nõuab Hyperledger Fabric. Täieliku API leiate siit.

Koodkoodi kirjutamine

Ahelkoodi kirjutamine pole Nodejsis nii keeruline. Järgmistes näidetes dokumenteerime, kuidas oma paketti ahelkoodi kirjutada. Kasutame selleks fabcari näidet.

Argumentide kontrollimine

Kirjutasime abistajafunktsiooni, et Yupi abil argumente hõlpsalt kontrollida. Lisaks argumentide kontrollimisele saab see ka parsida argumendid stringidest soovitud andmevormingusse. See parsib ja kontrollib teie argumenti automaatselt skeemi alusel.

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

Valideerimise näide näeks välja selline. Jupiga läksime seetõttu, et see on hõlpsasti laiendatav. Lisateavet leiate Yup's Githubist.

// Args
const args = [{
            võti: "CAR0",
            mark: "volvo",
            mudel: "v40",
            värv: "punane",
            omanik: "Bob",
         }]
// Argumentide kontrollimine
const verifiedArgs = ootama Helpers.checkArgs (args [0], Yup.object ()
   .kuju ({
            võti: Yup.string (). nõutav (),
            mark: Yup.string (). nõutav (),
            mudel: Yup.string (). nõutav (),
            värv: Yup.string (). nõutav (),
            omanik: Yup.string (). nõutav (),
         }));

Koostoime kangaga

Nagu ülalpool mainitud, võimaldab StubHelper hõlpsalt Fabrici olekuga suhelda. See ümbris võimaldab teil kirjutada ahelkoodi, ilma et peaksite tegelema seerialiseerimise ja põhjaliku vormistamisega. See muudab teie koodi puhtamaks ja võimaldab teil rakendusele keskenduda. Täieliku API leiate siit või README-st.

Näited

Ahelkoodi rakendamise täieliku näite leiate siit.

Küsige autot

Päring rikaste päringute abil (lisateavet rikaste päringute kohta leiate siit)

Uute objektide loomine

Objektide värskendamine

Objektide värskendamine

Kas soovite alustada oma plokiahela projekti, kuid te ei tea, kuidas? Kas vajate abi tokenmüügi alustamiseks või selle auditeerimiseks? Võtke ühendust TheLedgeriga.

Järeldus

Näitasime siin, kui lihtne on meie paketi abil ahelkoodi kirjutada. Te ei pea seda tegema, kuid see kiirendab asja natukene kiirenemist. Need näited aitavad teil alustada, kui soovite lugeda meie dokumentatsiooni, saate vaadata meie githubi. Samuti julgustame teid oma panust andma ja seda paketti paremaks muutma.

Kuhu edasi minna

→ Hyperledger Fabric ressursside kureeritud loetelu

→ Meie Hyperledger Fabric REST serveri tüübikirjeldus

→ Võrguboiler koos Nodejs ahelkoodinäitega

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

JÄRGMINE ARTIKKEL SEES SARJAS → Kuidas alustada Hyperledger Fabric Nodejs ahelkoodi testimist