大概过程就是将背书节点添加到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. python自学网站推荐-杭州python自学网站
  2. Word2016此功能看似已中断...
  3. Angular之组件的创建
  4. 对POST提交数据限制的解决方案
  5. C++中的类加多线程代码修炼
  6. Twitter开放平台api key申请流程 (Twitter Consumer Key)
  7. 计算机组成定时方式,2019考研408计算机组成原理知识:总线操作和定时
  8. Java后端实战项目推荐-尚医通
  9. 用python写网络爬虫-英文翻译
  10. 猫途鹰联手携程集团打造面向中国出境旅行者的顶级旅行平台
  11. js操作Cookie,js设置Cookie值,js读取Cookie值
  12. Katana的高性能图形分析库
  13. 神来之笔,2021CTF内核漏洞精选解析
  14. 5G NR 基本概念
  15. [UE4教程] UE4蓝图总结(入门)
  16. 用动态面板阈值模型研究金融和经济增长的关系
  17. 笔记整理 之 寒门难出贵子4 家庭的思维价值体系
  18. Ubuntu20.04配置好文
  19. c语言队列初始化、入队、出队
  20. USIM 相关知识,术语

热门文章

  1. [UWP]抄抄《CSS 故障艺术》的动画
  2. 直播软件开发IOS直播客户端SDK,视频直播APP源码【开源】
  3. linux新建图片,Fedora 下的图像创建程序 | Linux 中国
  4. 保5年用10年,绿源磷酸铁锂电池高能量超安全!
  5. Ori and the Will of the Wisps 游戏体验
  6. Git命令下载项目到本地
  7. MySQL 面试题(一):索引失效的几种情况
  8. 秃顶之路-Day22
  9. 莫甘娜的盾可以挡机器人_LOL:最害怕莫甘娜的辅助,机器人排第二,第一直接失去信心...
  10. 全球与中国触控显示一体化模组市场现状及未来发展趋势