Fabric v1.x 应用开发指南

本文档详细介绍了Fabric v1.x版本的应用开发,涵盖了技术栈、chaincode API解析、开发模式以及黑盒开发等方面。技术栈包括经典软件工程管理、PKI密码体系、chaincode开发语言和devOps运维开发。在chaincode API解析中,讲解了如何获取参数、访问世界状态、历史记录查询和键值范围查询等功能。同时,还讨论了Init函数、Invoke与Query的区别以及开发周期中的各个环节,如加密物料生成、创世区块、orderer和peer的启动,以及channel的创建和加入。最后,文章提到了黑盒开发中需要注意的点,包括chaincode、Fabric User、背书节点、Orderer以及可选的CA服务和发现服务。
摘要由CSDN通过智能技术生成

1 技术栈

1.1 经典软件工程管理

Fabric应用开发者需要了解经典软件工程管理:

  • 依赖管理(调用第三方库):govendor/dep, npm/yarn, gradle/maven, pip
  • 异常处理:defer, saync/await
  • 测试流水线:Smoke, Unit/Mock, SI tests

1.2 PKI密码体系

Fabric应用开发者需要精通PKI密码体系,包括:

  • ECDSA
  • X.509
  • HSM和pkcs11

1.3 chaincode开发语言

chaincode开发支持的语言包括:

  • Golang
  • Node.js
  • Java

1.4 devOps运维开发

devOps运维开发技术栈包括:

  • 受认证的Fabric管理员(Certified Hyperledger Fabric Administrator):CLI in Unix/Linux
  • SDK语言:Java/Golang/Node.js/Python
  • Docker
  • gRPC

2 chaincode API解析

2.1 chaincode代码示例

chaincode的package包名必须是main,因为容器里会去找main函数。
必须实现Init和Invoke两个函数,这样才会构成一个chaincode。在初始化和升级chaincode时,会调用到Init函数;query以及invoke的第一阶段,会调用到Invoke函数。

package main
type StressChaincode struct{
   }
//called when initialize, upgrade
func (t *StressChaincode) Init(stub shim.ChaincodeStubInterface) peer.Response {
   
    return shim.Success(nil)
}
//called when query, phase-1 of invoke
func (t *StressChaincode) Invoke(stub shim.ChaincodeStubInterface) peer.Response {
   
    return shim.Success(nil)
}
func main() {
   
    err:=shim.Start(new(StressChaincode))
}

2.2 chaincode接口(shim.ChaincodeStubInterface)

获取参数(Params)

从外部传入chaincode的参数列表可以通过下面的两个接口获取到。GetFunctionAndParameters可以将第一个元素转换成功能名称。

GetArgs() [][]byte
GetFunctionAndParameters() (string, []string) //returns 1st argument as function,"fcn", rest as params

访问世界状态(Access world states)

Fabric的数据存储采用的是KV形式,根据key值就可以从数据库中获取、更新、删除数据。

GetState(key string)
PutState(key string, value []
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值