大概过程就是将背书节点添加到channel中,然后构造交易提案请求参数发送交易提案,然后构造交易请求参数,发送交易即可。

我这里在链码实例化的时候指定的背书策略为:AND('Org1MSP.member','Org2MSP.member')

org1中的peer0地址和端口为:192.168.89.131:7051

org2中的peer0地址和端口为:192.168.89.131:8051(下面就以这两个peer为背书节点编写node sdk)

'use strict';var co = require('co');
var path = require('path');
var fs = require('fs');
var util = require('util');
var hfc = require('fabric-client');
var Peer = require('fabric-client/lib/Peer.js');
var EventHub = require('fabric-client/lib/EventHub.js');
var User = require('fabric-client/lib/User.js');
var crypto = require('crypto');
var FabricCAService = require('fabric-ca-client');//定义证书文件的缓存目录,应该也可以用path.join(__dirname, 'fabric-client-kvs')
var tempdir = "/opt/gopath/src/github.com/hyperledger/fabric/scf/node-sdk/fabric-client-kvs"//创建客户端代理
var client = new hfc();//创建通道的客户端代理,被创建的通道名字为:mychannel
var channel = client.newChannel('mychannel');//创建orderer,该orderer运行的服务器地址为:192.168.89.131,创建成功后将该orderer加入到channel中
var order = client.newOrderer('grpc://192.168.89.131:7050');
channel.addOrderer(order);//创建peer1节点的客户端代理,该peer节点的IP地址为192.168.89.131(如果是运行在本机上,也可用localhost),端口号为:7051
var peer1 = client.newPeer('grpc://192.168.89.131:7051');
channel.addPeer(peer1);
//创建peer2节点的客户端代理,该peer节点的IP地址为192.168.89.131(如果是运行在本机上,也可用localhost),端口号为:8051
var peer2 = client.newPeer('grpc://192.168.89.131:8051');
channel.addPeer(peer2);
//上面将需要背书的peer1和peer2添加到了channel中,这样就可以实现AND多方背书策略co((function *(){let member = yield getOrgUser4Local();// 构造交易提案请求参数let tx_id = client.newTransactionID();var request = {chaincodeId: "example02cc",fcn: "invoke",args: ["a","b","1"],chainId: "mychannel",txId: tx_id};//发送交易提案()let chaincodeinvokeresult = yield channel.sendTransactionProposal(request);//获取返回结果var proposalResponses = chaincodeinvokeresult[0];var proposal = chaincodeinvokeresult[1];var header = chaincodeinvokeresult[2];var all_good = true;for(var i in proposalResponses){let one_good = false;//检验提案响应信息是否正确if(proposalResponses && proposalResponses[0].response && proposalResponses[0].response.status === 200){one_good = true;console.info('transaction proposal was good');}else{console.error('transaction proposal was bad');}all_good = all_good & one_good;}
//如果提案响应正确的话,则将交易提交给排序服务if(all_good){console.info(util.format('Successfully : Status - %s, message - %s, metadata - %s, endorsement signature - %s',proposalResponses[0].response.status,proposalResponses[0].response.message,proposalResponses[0].response.payload,proposalResponses[0].endorsement.signature));var request = {proposalResponses: proposalResponses,proposal: proposal,header: header};var sendPromise = yield channel.sendTransaction(request);}console.info(all_good+"all_good")
})())/***根据cryptogen模块生成的账户,通过fabric相关接口进行操作*这里使用org1组织的user1用户的账号进行操作*/
function getOrgUser4Local(){var keyPath = "/opt/gopath/src/github.com/hyperledger/fabric/scf/crypto-config/peerOrganizations/org1.scf.com/users/Admin@org1.scf.com/msp/keystore";var keyPEM = Buffer.from(readAllFiles(keyPath)[0]).toString();var certPath = "/opt/gopath/src/github.com/hyperledger/fabric/scf/crypto-config/peerOrganizations/org1.scf.com/users/Admin@org1.scf.com/msp/signcerts";var certPEM = readAllFiles(certPath)[0].toString();//var certPEM = Buffer.from(getKeyFilesInDir(certPath)[0]).toString();return hfc.newDefaultKeyValueStore({path:tempdir}).then((store)=>{client.setStateStore(store);return client.createUser({username: 'user87',mspid: 'CoreOrg1MSP',cryptoContent:{privateKeyPEM: keyPEM,signedCertPEM: certPEM}});});
};function readAllFiles(dir){var files = fs.readdirSync(dir);var certs = [];files.forEach((file_name) => {let file_path = path.join(dir,file_name);let data = fs.readFileSync(file_path);certs.push(data);});return certs;
}

fabric1.1 node-sdk实现AND多方背书策略相关推荐

  1. Fabric node sdk 1.4简明教程

    hyperledger fabric的node sdk最新版本为1.4,本文将介绍如何使用最新版本的fabric node sdk开发node.js应用,以实现与fabric区块链的交互,例如查询链码 ...

  2. java 环信 rest api_[huanxin-sdk] 环信 Rest Api Node sdk

    The node sdk of Huanxin Rest API for high performance 详细用法请移步:test/,建议使用 redis 存储token 'use strict'; ...

  3. Fabric背书策略

    1 用途 1.1 交易流程回顾 Hyperledger Fabric 区块链网络交易的执行分为以下几个步骤.Endorser 与 Committer 都是 Hyperledger Fabric 区块链 ...

  4. 区块链学习8:超级账本项目Fabric中的背书、背书节点、背书策略、背书签名

    ☞ ░ 前往老猿Python博文目录 ░ 在Hyperledger Fabric区块链中,有背书节点进行背书,Hyperledger Fabric 使用背书策略来定义哪些节点需要执行交易. Hyper ...

  5. (七)Fabric2.0智能合约实践-设置背书策略

    总目录: (0) 如何利用区块链保护知识产权 (一)HyperLedger Fabric 2.0-release测试网络部署 (二)Fabric2.0 first-network 生成配置说明 (三) ...

  6. Fabric框架的学习-4-链码与背书策略

    六. 智能合约 6.1 Golang版本的ChainCode的代码结构 链代码的包名的指定 // xxx.go package main // main不能改 必须要引入的包 // go get gi ...

  7. Hyperledger Fabric 背书策略

    背书策略是为了告知peer节点,交易是否被正确的背书.当peer接收到一个交易到时候,它将会invoke与交易相关的chaincode的VSCC(Validation System Chaincode ...

  8. 七牛云存储Python SDK使用教程 - 上传策略详解

    本教程旨在介绍如何使用七牛的Python SDK来快速地进行文件上传,下载,处理,管理等工作. 前言 我们在上面的两节中了解到,客户端上传文件时,需要从业务服务器申请一个上传凭证(Upload Tok ...

  9. java调用obs直播_OBS JAVA SDK Demo:设置桶策略

    1背景介绍 OBS桶策略可以给特定用户设置特定的权限.下面代码展示通过JAVA SDK给用户桶设置高级桶策略. 2代码展示 需要先下载OBS最新的JAVA SDK,参考官网链接:https://dev ...

最新文章

  1. 《Datawhale年度学习总结报告》发布!
  2. ORACLE HANDBOOK系列之十四:变化通知(Change Notification)
  3. ui设计学习辅助书籍推送
  4. clob存base64文件存不进去_Kafka 和 RocketMQ 底层存储之那些你不知道的事
  5. EXCEL打开CSV文件乱码的解决方法
  6. Proxy error: Could not proxy request /admin/myResources.do from localhost.jd.com:41000 to http://loc
  7. C++双冒号和单冒号的用法区别
  8. 安全:incaseformat蠕虫病毒来袭,你中招了吗?
  9. python怎么执行程序_小鹅通视频怎么下载?用python实现小鹅通视频下载(二)
  10. (C语言)二维整型数组的“最大点”(驻点)
  11. 字节回应阿里涉侵犯男员工曾面试并通过一面;HarmonyOS 2.0用户数升至5000万|极客头条...
  12. Android自定义控件及自定义属性
  13. 2006年博客之星(小废物点评版)
  14. PostgreSQL ALTER TABLE 命令
  15. android手机的mqtt测试工具,sIoT及安卓app实现mqtt实验
  16. Apache commons digester简介说明
  17. gg修改器偏移量修改_GG修改器正版
  18. 台式机通过网线连接笔记本上网
  19. Oracle 数据库 简单操作命令(新手看 可以收藏哟)
  20. 卧槽!百度网盘宣布 VIP 开放免费领取!亲测有效!!

热门文章

  1. C练习记录8——数字字符转换成相对应的数值
  2. 晶振,PLL, VCO介绍
  3. 17福师计算机在线作业,2019秋福师《计算机应用基础》在线作业二17(100分)
  4. 新版chrome浏览器video播放去掉自带的“播放速度,下载”按钮,去掉右下角三个点
  5. 《ESMap平台如何在线绘制三维可视化地图-易景空间地图》
  6. earthview 6
  7. 前端html+css+js弹窗的实现
  8. MySQL查询---联合查询
  9. 教程:Nodejs大漠插件开发游戏脚本实战(二)搭建项目
  10. 23-Flink-高级特性-新特性-异步IO-了解