溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

node.js中怎么實現一個Fabric鏈碼

發布時間:2021-07-21 09:19:14 來源:億速云 閱讀:240 作者:Leah 欄目:互聯網科技

這篇文章將為大家詳細講解有關node.js中怎么實現一個Fabric鏈碼,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

使用fabric-shim開發Fabric鏈碼

fabric-shim是較底層的鏈碼開發包,它封裝了與節點通信的grpc協議。安裝方法如下:

~/fabric-shim-chaincode-demo$ npm install fabric-shim

fabric-shim要求鏈碼開發者定義一個實現兩個預定義方法的類。

  • Init(stub):初始化鏈碼時節點將調用該方法

  • Invoke(stub):節點將應用對鏈碼的調用轉化為對該方法的調用

參數stub由節點傳入,它提供了訪問鏈上賬本的方法,以便讀取或更新賬本狀態。

例如,下面的代碼實現了一個最小化的node.js鏈碼,每次調用鏈碼都會更新acc0的狀態(例如:可以使用這個狀態代表賬戶余額):

const shim = require('fabric-shim');

class EzChaincode {
    async Init(stub) {       
        return shim.success(Buffer.from('init done!'));//返回success對象
    }

    async Invoke(stub) {
        let key = 'acc0';
        let oldValue = await stub.getState(key); //讀取賬本中acc0的狀態

        let newValue = oldValue + 100; 
        await stub.putState(key, Buffer.from(newValue)); //更新acc0的狀態

        return shim.success(Buffer.from('update done!'));//返回success對象
    }
};

一旦定義好鏈碼,就可以使用shim.start()方法啟動鏈碼實例了。例如:

const shim = require('fabric-shim');
class EzChainCode {...}
shim.start(new EzChaincode());

這就是一個完整的Fabric鏈碼了!將上面代碼保存為demo.js,可以直接用node.js啟動:

~/fabric-shim-chaincode-demo$ node demo.js

使用fabric-contract-api開發Fabric鏈碼

fabric-shim是一種相對底層的fabric grpc協議封裝,它直接把鏈碼接口暴露給開發者,雖然簡單直白,但如果要實現相對復雜一點的鏈碼,開發者需要自己在Invoke實現中進行方法路由。

fabric-contract-api則是更高層級的封裝,開發者直接繼承開發包提供的Contract類,就不用費心合約方法路由的問題了。fabric-contrac-api開發方法如下:

~/fabric-contract-api-demo$ npm install fabric-contract-api

使用fabric-contract-api的鏈碼示例代碼如下,除了構造函數之外的每個方法都自動稱為鏈碼的方法,可供外部應用調用 :

//demo.js
const { Contract } = require('fabric-contract-api');

class EzContract extends Contract

    constructor(){
        super('EzContract'); 
    }

    async update(ctx, newValue) {
        await ctx.stub.putState('acc0', Buffer.from(newValue));
        return Buffer.from('update done!');
    }

    async remove(ctx) {
        //.....
    }

};
module.exports.contracts = ['EzContract'];

與fabric-shim不同,fabric-contract-api只需要鏈碼導出contracts數組,因此不能直接使用node.js啟動鏈碼,而需要使用fabric-chaincode-node程序。例如:

~/fabric-contract-api-demo$ fabric-chaincode-node demo.js

關于node.js中怎么實現一個Fabric鏈碼就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女