文章目录
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
Hyperledger Fabric v1.x 智能合约与chaincode开发详解

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

被折叠的 条评论
为什么被折叠?



