博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hyperledger智能合约Hello World示例程序
阅读量:5259 次
发布时间:2019-06-14

本文共 3858 字,大约阅读时间需要 12 分钟。

简介

Hyperledger是Linux 基金会主导的一个开源的区块链(BlockChain)项目. 本文介绍了一个简单的Hyperledger智能合约的开发过程.

开发环境

本文使用Docker作为Hyperledger智能合约的本地开发环境.

第一步

从Docker官网http://www.docker.com/下载其安装包,并安装Docker.

第二步

启动Docker QuickStarter Terminal并运行如下命令在Docker中安装Hyperledger Fabric.

docker pull hyperledger/fabric-peer:latestdocker pull hyperledger/fabric-membersrvc:latest

1026414-20161006202016270-1761376988.png

第三步

在工作目录下创建如下的docker-compose.yml

membersrvc:  image: hyperledger/fabric-membersrvc  ports:    - "7054:7054"  command: membersrvcvp0:  image: hyperledger/fabric-peer  ports:    - "7050:7050"    - "7051:7051"    - "7053:7053"  environment:    - CORE_PEER_ADDRESSAUTODETECT=true    - CORE_VM_ENDPOINT=unix:///var/run/docker.sock    - CORE_LOGGING_LEVEL=DEBUG    - CORE_PEER_ID=vp0    - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054    - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054    - CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054    - CORE_SECURITY_ENABLED=true    - CORE_SECURITY_ENROLLID=test_vp0    - CORE_SECURITY_ENROLLSECRET=MwYpmSRjupbT  links:    - membersrvc  command: sh -c "sleep 5; peer node start --peer-chaincodedev"

然后在Docker QuickStarter Terminal中运行以下命令以启动Hyperledger Fabric

docker-compose up

1026414-20161006200859457-1786750997.png

第四步

安装并运行SSH客户端,例如putty或mRemoteNG, 使用以下信息连接Docker

host : 192.168.99.100user name : dockerpassword : tcuser

1026414-20161006200920457-1537895224.png

第五步

运行如下命令以确认Hyperledger Fabric的进程

docker ps

运行如下命令以进入Hyperledger Fabric环境

docker exec -it hyperledger_vp0_1 bash

1026414-20161006200949379-295643143.png

第六步

运行如下命令从git下载Hyperledger Fabric源代码

mkdir -p $GOPATH/src/github.com/hyperledgercd $GOPATH/src/github.com/hyperledgergit clone http://gerrit.hyperledger.org/r/fabric

第七步

运行如下命令创建HelloWorld目录

mkdir -p $GOPATH/src/github.com/HelloWorld/cd $GOPATH/src/github.com/HelloWorld/

创建如下HelloWorld.go文件

package mainimport (    "errors"    "fmt"    "strconv"    "github.com/hyperledger/fabric/core/chaincode/shim")type HelloWorldChaincode struct {}func (t *HelloWorldChaincode) Init(stub shim.ChaincodeStubInterface, function string, args []string) ([]byte, error) {    fmt.Printf("HelloWorld - Init called with function %s!\n", function)    return nil, nil}func (t *HelloWorldChaincode) Invoke(stub shim.ChaincodeStubInterface, function string, args []string) ([]byte, error) {    fmt.Printf("HelloWorld - Invoke called with function %s!\n", function)    return nil, nil    }func (t *HelloWorldChaincode) Query(stub shim.ChaincodeStubInterface, function string, args []string) ([]byte, error) {    fmt.Printf("HelloWorld - Query called with function %s!\n", function)    message := "Hello World"    return []byte(message), nil;}func main() {    err := shim.Start(new(HelloWorldChaincode))    if err != nil {        fmt.Printf("Error starting Hello World chaincode: %s", err)    }}

使用如下命令编译代码

go build ./

第八步

使用如下命令运行HelloWorld

export CORE_CHAINCODE_ID_NAME=myccexport CORE_PEER_ADDRESS=0.0.0.0:7051./HelloWorld &

1026414-20161006201025879-1392860904.png

第九步

向Hyperledger服务接口http://192.168.99.100:7050/registrar 发送如下REST请求,使用内置的jim用户登录系统

{    "enrollId": "jim",    "enrollSecret": "6avZQLwcUe9b"}

第十步

向Hyperledger服务接口http://192.168.99.100:7050/chaincode 发送如下初始化HelloWorld的REST请求

{   "jsonrpc": "2.0",   "method": "deploy",   "params": {    "type": 1,    "chaincodeID":{        "name": "mycc"    },    "ctorMsg": {         "function":"init",         "args":[]     },    "secureContext": "jim"  },   "id": 1 }

调用HelloWorld的REST请求

{   "jsonrpc": "2.0",   "method": "invoke",   "params": {       "type": 1,       "chaincodeID":{           "name":"mycc"       },       "ctorMsg": {          "function":"invoke",          "args":[]       },       "secureContext": "jim"   },   "id": 3 }

以及查询HelloWorld的REST请求

{   "jsonrpc": "2.0",   "method": "query",   "params": {       "type": 1,       "chaincodeID":{           "name":"mycc"       },       "ctorMsg": {          "function":"query",          "args":[]       },       "secureContext": "jim"   },   "id": 5 }

1026414-20161006201058692-1104834228.png

总结

本文介绍了一个简单的Hyperledger智能合约在本地Docker环境下的开发过程.

转载于:https://www.cnblogs.com/huyouhengbc/p/5934683.html

你可能感兴趣的文章
如何将dmp文件导入到自己的oracle数据库中
查看>>
生成key
查看>>
s5_day13作业
查看>>
区间跳跃问题
查看>>
Redis 事物、悲观、乐观锁 (详细)
查看>>
模仿块级作用域
查看>>
Visual Studio 2005 Web Application Projects正式发布!
查看>>
servlet知识点总结
查看>>
U盘安装Win7
查看>>
Android 中的监听器模式与观察者模式
查看>>
pageadmin CMS自助建站系统教程:模板中执行sql语句
查看>>
Spinner的级联效果实现
查看>>
115-PHP实例化和不实例化输出类常量
查看>>
P3810 陌上花开 CDQ分治
查看>>
【python】-- socketserver
查看>>
JDBC事务和JTA事务的区别
查看>>
创建web项目后生成的配置文件解析
查看>>
pcl之kdtree的使用
查看>>
android 两种定时器的实现
查看>>
第三次作业
查看>>