Blacne transfer是Hyperledger fabric Node SDK的一个示例应用,主要使用了SDK中fabric-client 和 fabric-ca-client 模块中的API,实现了与Fabric网络交互的各种操作. 先决条件 Docker - v1.12 or higher Docker Compose - v1.8 or higher Git - needed for clone commands Node.js - v8.4.0 or higher Docker…
balance transfer 提供了很多查询接口,包括链码查询,根据区块号查询区块数据,根据交易ID查询交易信息,查询链上的区块数,查询已安装或已实例化的链码,查询通道. 源码解析 1.调用链码查询:调用指定背书节点上部署的普通chaincode对状态数据库进行查询操作,该方法只会发送交易提案到目标节点,并不会产生新的交易发送给排序服务. // 调用指定节点上部署的普通链码进行查询 app.get('/channels/:channelName/chaincodes/:chaincodeNa…
详细分析blance transfer示例的用户注册(register)与登录(enroll)功能. 源码分析 1.首先分析项目根目录的app.js文件中关于用户注册和登录的路由函数.注意这里的token很重要,在之后的请求中,只要在请求头中附上token,js的路由函数就能直接获取其中的参数:req.username,req.orgName // 注册和登录用户 app.post('/users', async function(req, res) { // 获取并检验参数 var usern…
详细解析blance transfer示例的安装(install)和实例化(Instantiate)链码(chaincode)的过程.安装chaincode会根据本地的链码文件生成chaincode镜像,实例化chaincode则会启动该镜像,使链码在docker容器中运行. 安装chaincode 1.首先看app.js中的路由函数 app.post('/chaincodes', async function(req, res) { var peers = req.body.peers; //…
链码安装和实例化之后就可以调用chaincode执行交易,下面分析简单的账户转账操作是如何完成的. 源码分析 1.首先看app.js的路由函数 app.post('/channels/:channelName/chaincodes/:chaincodeName', async function(req, res) { var peers = req.body.peers; var chaincodeName = req.params.chaincodeName; var channelName…
详细解析blance transfer示例的创建通道(Channel)和加入节点到通道的过程. 创建Channel 1.首先看app.js的路由函数 var createChannel = require('./app/create-channel.js'); app.post('/channels', async function(req, res) { // 接收参数channel名称和配置文件的路径 // 通道配置交易路径: ./artifacts/channel/mychannel.tx…
上篇文章中我们介绍了链码的概念,本文中我们将介绍Fabric下链码的编写和测试.我们会通过一个简单例子的方式来阐述链码API的使用. 链码API     每一个链码程序都必须实现一个接口Chaincode Interface, 这些方法用来响应接受到的交易.特别的,当链码接收到``Instantiate``和``upgrade``类型的交易时会调用``Init``方法,执行一些需要的初始化,包括应用状态的初始化.当链码接收到``Invoke``类型的交易时候会调用``Invoke``方法来处理交…
运行fabric-samples项目中的一个例子:first-network,创建第一个网络(Building Your First Network). 该网络共有4个peer节点,划分为2个组织(organizations),以及1个单独的orderer节点,另外还需要一个容器来执行创建和加入channel.部署和执行chaincode等命令. 运行该例子需要下载的文件有:fabric-samples项目,特定的平台二进制文件,所需的镜像文件. 准备 项目下载 在已设置的GOPATH路径下从g…
借助开发网络调试 fabric 源码本地调试 准备工作 IDE Goland Go 1.9.7 fabric-samples 模块 chaincode-docker-devmode fabric 源码 步骤 添加本地域名 127.0.0.1 peer 127.0.0.1 orderer 用 ide 打开 $GOPATH 下的fabric源码目录 在源码目录下添加 dev-network 把 sampleconfig 下的所有文件复制到 dev-network 修改 core.yaml 中 fil…
在<Hyperledger Fabric链码之一>和<Hyperledger Fabric链码之二>中我们介绍了链码的定义,并通过dev网络测试了测试了自己编写的链码程序. 本文中我们站在区块链网络管理员的角度来阐述链码,我们集中在链码的声明周期管理,如链码的打包,安装,初始话以及升级. 链码声明周期 超级帐本Fabric提供的接口使得多种类型的节点能够进行交互 - 节点,排序节点以及成员管理服务 - 同时使得在背书节点上可以进行打包.安装.初始化和升级链码. Hyperledge…