文档章节

初次编写chaincode并部署运行体验

fangYC
 fangYC
发布于 2017/08/19 17:37
字数 688
阅读 172
收藏 0

#环境:

1、vmware和ubuntu虚拟客户机环境为ubuntu16.04.2 LTS和vm12.5.7
2、已经运行成功fabric1.0的byfn网络(可参考笔者的另一篇文章“hyperledger-fabric+docker安装体验”)

#说明:

1、方便起见,笔者利用byfn网络所带的脚本进行部署chaincode,并没有通过开发模式
2、以下描述的脚本中语句和内容都是原先的不经过修改的例子

#步骤:

1、在你喜欢的IDE上编写chaincode,这方面自行参考网上,和{你的目录}/fabric-samples/chaincode/下的几个链码例子,参考链接:http://www.cnblogs.com/studyzy/p/7360733.html

2、在{你的目录}/fabric-samples/chaincode/下新建一个文件夹,把写好的chaincode文件(***.go等所有相关文件)复制到该文件夹中,参考命令:

	cp {chaincode文件路径}/具体文件 {你的目录}/fabric-samples/chaincode/新文件夹/具体文件

3、打开first-network/scripts目录下的scripts.sh文件,按照如下步骤修改:

	1)找到脚本中的installChaincode函数,修改其中内容chaincode_example02为第二步新建的文件夹名字
	2)找到脚本中的instantiateChaincode函数,修改其中参数部分:
		如,["init","a","100","b","200"]中第一个参数是要做的对应操作,init对应chaincode中的Init方法(这一步中init不用改),其他的都会进入Invoke方法,具体见代码;第二个参数开始就是要传入chaincode的参数(args []string),根据代码需要进行修改
	3)找到脚本中的chaincodeQuery函数,修改同2,其中第一个参数根据chaincode中编写的Invoke方法内查询方法对应的字符串
	4)找到脚本中的chaincodeInvoke函数,修改同2,其中第一个参数根据chaincode中编写的Invoke方法内调用的方法对应的字符串
	5)找到#Query on chaincode on Peer0/Org1注释下的语句,把chaincodeQuery的第二个参数修改为你的chaincode在此时调用查询方法得到的结果(注意,如果结果中有空格,则只写以空格分隔的最后一部分。这个参数其实是用于脚本判断查询是否成功)
	6)找到#Query on chaincode on Peer3/Org2, check if the result is 90注释下的语句,同5一样修改,注意此时的查询结果不一定和5一样,因为在这之前经过了一次invoke,当然,具体看你的chaincode了

4、这时候就可以开启测试了,进入byfn.sh脚本目录,直接执行./byfn.sh -m up

5、进行测试:
	进入cli容器,执行查询、调用等命令测试chaincode是否正常运行,具体命令参考scripts.sh脚本或者参考http://hyperledger-fabric.readthedocs.io/en/latest/samples.html

DONE.

© 著作权归作者所有

共有 人打赏支持
fangYC
粉丝 0
博文 12
码字总数 11571
作品 0
揭阳
程序员
私信 提问
区块链100讲:Hyperledger Fabric 中的链码(智能合约)

1 链码概念 网络运行环境我们已经启动完成,现在我们从开发者的角度来认识一下完成交易所必须的智能合约(在 Hyperledger Fabric 中被称之为 Chaincode,也就是链上代码)的相关知识,以便于...

HiBlock
12/01
0
0
虚拟货币,山寨币开发多节点集群的部署(1)

区块链爱好者(QQ:53016353) 虚拟货币 Fabric 1.0即将揭开面纱,社区用户对此充满期待。为迎接 Fabric 1.0 的发布,本文分3期连载,介绍如何搭建多节点的分布式 Fabric 集群,文后可下载P...

jqq53016353
2017/12/07
0
0
用Java为Hyperledger Fabric(超级账本)开发区块链链代码智能合约之编写链代码程序

编写第一个 Java 链代码程序 在上一节中,您已经熟悉了如何构建、运行、部署和调用链代码,但尚未编写任何 Java 代码。 在本节中,将会使用 Eclipse IDE、一个用于 Eclipse 的 Gradle 插件,...

笔阁
05/24
0
0
在Fabric ChainCode中导入第三方包(以状态机为例)

在企业级应用开发中,经常会涉及到流程和状态,而有限状态机(FSM)则是对应的一种简单实现,如果复杂化,就上升到Workflow和BPM了。我们在Fabric ChainCode的开发过程中,也很可能涉及到状态...

深蓝居
2017/09/08
0
0
Fabric基础架构原理(4):链码 | 赠书活动

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/q48S71bCzBeYLOu9T0n/article/details/82836879 题图摄于加州Carmel 本文首发于哈希1024社区: https://hash...

亨利笔记
09/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

集成测试——Spring TestContext框架支持详细解说

概述 集成测试是在单元测试之上,通常是将一个或多个已进行过单元测试的组件组合起来完成的,即集成测试中一般不会出现Mock对象,都是实实在在的真实实现。 对于单元测试,如前边在进行数据访...

呐呐丶嘿
9分钟前
0
0
爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/top250

所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中。 目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/top250 1)确定目标网...

linjin200
10分钟前
0
0
ES6私有变量的实现

1. 约定 实现 class Example { constructor() { this._private = 'private'; } getName() { return this._private }}var ex = new Example();console.log(ex.getName()); // ......

peakedness丶
12分钟前
0
0
SQLServer AlwaysOn在阿里云的前世今生

缘起 早在2015年的时候,随着阿里云业务突飞猛进的发展,SQLServer业务也积累了大批忠实客户,其中一些体量较大的客户在类似大促的业务高峰时RDS的单机规格(规格是按照 内存CPUIOPS 一定比例...

阿里云官方博客
17分钟前
0
0
绑定域名到 GitHub Pages

GitHub Pages 绑定来自阿里云的域名 简介 我在阿里云上注册了一个新域名:yuanzb.com,我已经在GitHub Pages上建立了自己的博客:http://yuanzb.github.io/yuanzb/。现在我希望将yuanzb.com映...

临江仙卜算子
22分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部