fabric 2.2 fabric.js源码解析

'use strict';//使用严格模式。
const {
   
    Contract } = require('fabric-contract-api');
  • const定义的变量,不可修改且必须初始化。
  • require用于引入模块,json,或本地文件。
  • 在这里引入的是fabric-contract-api模块,这是一个高度封装的开发接口,使用该API可以在高层级编写智能合约的业务逻辑。
  • 同时fabric-contract-api模块也要求链码开发者继承Contract类。
  • 还有一个fabric-shim模块,那是一个提供了底层的链码开发接口的模块,同时fabric-shim模块要求开发者实现ChaincodeInterface接口。
  • 也就是实现invoke和init方法。
  • init():在初始化和升级链码时会调用invoke()方法,以进行必要应用状态的初始化,方法原型: Init(stub)。
  • invoke():在进行交易和查询时调用invoke()方法,方法原型: Invoke(stub)。
  • 这两个方法在被调用时都需要传入一个根村stub参数,来获取相关信息,例如调用者身份,目标通道,参数等等,同时也需要利用存根对象与peer节点通信,以获取或更新应用状态。
  • stub:ChaincodeStub对象,由fabric-shim库实现并在调用链码方法时传入。 该对象封装了链码实现和fabric节点之间的通信细节。
class FabCar extends Contract {
   
   
  • 自定义的Fabcar类继承了Contract类,同时定义了以下几个交易:
  • initLedger,queryCar,queryAllCars,createCar和changeCarOwner。
	async initLedger(ctx) {
   
   
  • async函数把返回结果封装在一个promise对象中。
  • 异步函数简介:
  • 当函数遇到await时,await后面的语句会被挂到另一个线程中,而该线程会继续进行下去。
  • 关键参数ctx:ctx描述交易环境。
	console.info('============= START : Initialize Ledger ===========');
        const cars = [
            {
   
   
                color: 'blue',
                make: 'Toyota',
                model: 'Prius',
                owner: 'Tomoko',
            },
            {
   
   
                color: 'red',
                make: 'Ford',
                model: 'Mustang',
                owner: 'Brad',
            },
            {
   
   
                color: 'green',
                make: 'Hyundai',
                model: 'Tucson',
                owner: 'Jin Soo',
            },
            {
   
   
                color: 'yellow',
                make: 'Volkswagen',
                model: 'Passat',
                owner: 'Max',
            },
            {
   
   
                color: 'black',
                make: 'Tesla',
                model: 'S',
                owner: 'Adriana',
            },
            
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值