乔伊🐷 Nut_木头人
在你想要放弃的那一刻,想想为什么当初坚持走到了这里。
关注数: 24 粉丝数: 90 发帖数: 3,725 关注贴吧数: 25
hyperledger 企业级开发项目实战江苏省农牧厅渔业管理系统代码 'use strict' const shim = require('fabric-shim'); const util = require('util'); let Chaincode = class { //初始化方法,不用写什么东西 async Init(stub) { console.info('初始化成功'); return shim.success(); } //调用方法,主要写逻辑业务 async Invoke(stub) { let ret = stub.getFunctionAndParameters();//获取函数和参数 let method = this[ret.fcn]; if (!method) { console.error('找不到要调用的函数,函数名:' + ret.fcn); throw new Error('找不到要调用的函数,函数名:' + ret.fcn); } try { let payload = await method(stub,ret.params);//直接调用函数,获取返回值 return shim.success(payload); } catch (err) { console.log(err); return shim.error(err); } } //查询fish信息 async queryFish(stub,args) { if(args.length != !){ throw new Error('错误的调用函数,实例:FISH01'); } let fishNumber = args[0]; let fishAsBytes = await stub.getState(fishNumber); //从账本中获取fish的信息,账本是二进制存储的 if (!fishAsBytes || fishAsBytes.toString().length <= 0) { throw new Error(fishAsBytes + '不存在'); } console.log(fishAsBytes.toString()); return fishAsBytes; } //初始化账本方法,官方建议单独写,不用最上面点Init方法 async initLedger(stub,args){ console.info('开始:初始化账本'); let fishes = []; fishes.push({ vessel:"奋进号38A", location:"12,34", timestamp:"1598509989", holder:"wang" }); fishes.push({ vessel:"奋进号39A", location:"123,346", timestamp:"1598509989", holder:"gao" }); fishes.push({ vessel:"奋进号40A", location:"1234,3467", timestamp:"1598509989", holder:"liu" }); for (let i = 0; i < fishes.length; i++) { await stub.putState('FISH' + i,Buffer.from(JSON.stringify(fishes[i]))); console.info('Add <--> ',fishes[i]); } console.info('结束:初始化账本'); } //记录fish信息 async recoredFish(stub,args){ console.info('开始:记录fish信息'); if (args.length != 5) { throw new Error('需要5个参数'); } var fish = { vessel:args[1], location:args[2], timestamp:args[3], holder:args[4] } await stub.putState(args[0],Buffer.from(JSON.stringify(fishes))); console.info('结束:记录fish信息'); } //查询所有fish async queryAllFish(stub,args){ let startKey = 'FISH0'; let endKey = 'FISH999'; let iterator = await stub.getStateByRange(startKey,endKey); let allResults = []; while (true) { let res = await iterator.next(); if (res.value && res.value.value.toString()) { let jsonRes = {}; console.log(res.value.value.toString('utf8')); jsonRes.Key = res.value.key; try { jsonRes.Record = JSON.parse(res.value.value.toString('utf8')); } catch (err) { console.log(err); jsonRes.Record = res.value.value.toString('utf8'); } allResults.push(jsonRes); } if (res.done) { console.log('end of data'); await iterator.close(); console.info(allResults); return Buffer.from(JSON.stringify(allResults)); } } } //更改归属人 async changeFishHolder(stub,args){ console.info('开始:更改归属人'); if (args.length != 2) { throw new Error('需要2个参数'); } let fishAsBytes = await stub.getState(args[0]); let fish = JSON.parse(fishAsBytes); fishAsBytes.holder = args[1]; await stub.putState(args[0],Buffer.from(JSON.stringify(fish))); console.info('结束:更改归属人'); } } shim.start(new Chaincode());
1 下一页