fabric吧 关注:19贴子:38
  • 7回复贴,共1

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());


IP属地:广东1楼2020-08-27 15:02回复
    视频教程第一章https://www.bilibili.com/video/BV1zt411H7qX


    IP属地:广东2楼2020-08-27 15:04
    回复
      视频教程第二章https://www.bilibili.com/video/BV1554y1q7iE


      IP属地:广东3楼2020-08-27 15:04
      回复
        楼主 请问你有整个项目的源码吗


        IP属地:浙江来自Android客户端4楼2020-10-31 14:49
        收起回复
          楼主,你好,请问您有这个项目的文档吗?或者环境配置的文件?


          5楼2021-03-14 19:47
          收起回复