原文标题: Hyperledger Fabric开发实战-03编写智能合约 Hyperledger Fabric开发实战-04编写智能合约 本文是在阅读《区块链开发实战-Hyperledger Fabric关键技术与案例分析》一书的同时,在实践中记录的一些实践步骤与经验分享。 Hyperledger Fabric的智能合约叫做Chaincode,是业务的成载体,负责具体的业务逻辑 Chaincode代码 Fabric的Chaincode运行在容器中,可以使用Go,Java,Node.js语言开发,Golang是目前为主比较成熟稳定的。 Chaincode组成 Chaincode主要由下面几个组成: 必须在main包下 引用必要的依赖 定义一个结构体,并为结构体绑定Init和Invoke方法 shim.ChaincodeStubInterface和pb.Response main方法 下面以一个例子进行说明 Chaincode部署 Chaincode的运行分为:install,instantiate和invoke三步 编写以上的代码后,我们将其放入一个文件夹,例如:/home/ssj234/fabricwksp/05-chaincode/下,在部署的时候,会去$GOPATH的src下面寻找文件夹,因此,我们在如下路径编写Chaincode 安装 实例化 实例化的时候会调用init方法 instantiate实例化命令运行的时间较长,银行会启动一个docker容器来执行chaincode,我们可以通过docker ps命令观察,会看到下面的一个容器正在运行 使用docker logs bee440516894查看日志,会输出Init方法中打印的内容 调用 使用peer chaincode invoke可以调用chaincode的invoke方法 执行完成,通过docker logs命令可以查看到Invoke方法的打印内容。 在上一节演示了一个简单的Chaincode示例,可以看到,Chaincode中主要是Init和Invoke方法的实现。两个方法的原型如下: 可以看到,主要是对shim.ChaincodeStubInterface的使用。 shim接口 shim.ChaincodeStubInterface pb.Response shim提供了一组方法,用来包装返回的信息 返回成功 返回失败 Chaincode存取数据 通过上面的shim接口,我们可以看到如何将数据存放到账本中,如何从账本取出,下面编写一个例子来演示,对上一节的代码进行改动。 Init方法中,接收两个名字和金额,如["init","Alice","100","Bob","200"] Invoke方法中,接受A到B的转账,如["invoke","Alice","Bob","10"] 编写完成后,还需要编写main方法 之后,使用go build构建,再按照上一节的方法,安装,实例化,调用测试,使用docker logs查询日志 编写完成Chaincode后,可以执行gobuild查看是否编译成功,如果安装和实例化之后更改了Chaincode程序,需要重新build,然后使用peerchaincodeupgrade命令,设置最新的版本号,更新chaincode 作者:史圣杰 链接:https://www.jianshu.com/p/2e389823f556 https://www.jianshu.com/p/6b7049b4bdba 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 —- 编译者/作者:区块链服务网络 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
BSN智能合约开发培训-HyperledgerFabric(一)
2020-03-20 区块链服务网络 来源:区块链网络
LOADING...
相关阅读:
- Chainlink借助新的赠款计划实现智能合约采用2020-08-05
- 以色列将启动区块链平台2020-08-05
- 根据区块链安全审计员的说法,卡尔达诺将与雪莱硬叉一起领先Tezos2020-08-04
- 以太坊的投资价值2020-08-04
- 币赢DeFi专区8.4项目复盘汇总2020-08-04