链码MySQL_超级账本HyperLedger:Fabric的Chaincode(智能合约、链码)开发、使用演示...

说明

这是网易云课堂“IT技术快速入门学院”使用的素材。

这里演示合约的用法,合约代码托管在在Github上:合约代码。

Example-1:demo

example-1: demo中演示了最基本、最常用的方法,可以通过这个合约进行下面操作:

func (t *Chaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response {

function, args := stub.GetFunctionAndParameters()

switch function {

//返回调用者信息

case "creator":

return t.creator(stub, args)

//调用改合约中的其它方法,用来演示复杂的调用

case "call":

return t.call(stub, args)

//直接对key的内容进行append,用来演示这样操作的结果

case "append":

return t.append(stub, args)

//读取当前用户的属性值

case "attr":

return t.attr(stub, args)

//查询一个key的当前值

case "query":

if len(args) != 1 {

return shim.Error("parametes's number is wrong")

}

return t.query(stub, args[0])

//查询一个key的所有历史值

case "history":

if len(args) != 1 {

return shim.Error("parametes's number is wrong")

}

return t.history(stub, args[0])

//创建一个key,并写入key的值

case "write": //写入

if len(args) != 2 {

return shim.Error("parametes's number is wrong")

}

return t.write(stub, args[0], args[1])

//通过当前合约,到另一个合约中进行查询

case "query_chaincode":

if len(args) != 2 {

return shim.Error("parametes's number is wrong")

}

return t.query_chaincode(stub, args[0], args[1])

//通过当前合约,到另一个合约中进行写入

case "write_chaincode":

if len(args) != 3 {

return shim.Error("parametes's number is wrong")

}

return t.write_chaincode(stub, args[0], args[1], args[2])

default:

return shim.Error("Invalid invoke function name.")

}

}

完整代码: 合约代码。

合约安装&单合约调用

获取合约代码

可以用下面的方式获取合约源代码:

mkdir -p $GOPATH/github.com/introclass

cd $GOPATH/github.com/introclass

git https://github.com/introclass/hyperledger-fabric-chaincodes.git

或者:

go get github.com/introclass/hyperledger-fabric-chaincodes

安装合约&初始化

安装合约:

cd /opt/app/fabric/cli/user/member1.example.com/Admin-peer0.member1.example.com

./3_install_chaincode.sh

合约初始化:

./4_instantiate_chaincode.sh

到另一个Peer上再安装一次合约:

cd /opt/app/fabric/cli/user/member1.example.com/Admin-peer1.member1.example.com/

./3_install_chaincode.sh

合约直接调用

下面的操作可以在任意一个Peer进行。

查看当前调用者,调用creator方法:

$ ./peer.sh chaincode query -C mychannel -n mycc -c '{"Args":["creator"]}'

2018-07-18 12:45:48.083 CST [chaincodeCmd] checkChaincodeCmdP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值