BaaS SDK使用指南
什么是BaaS SDK?
BaaS SDK是点融区块链云服务平台提供的软件开发工具包,旨在帮助用户快速开发应用程序来调用智能合约以及访问区块链信息。目前提供的是Java版本。
为什么要使用BaaS SDK?
在设计点融区块链云服务平台时,我们追求的目标是:
如何极度降低区块链的使用门槛——让用户只需聚焦于实现智能合约,而其余的事情交给平台来做。
以往,要搭建一套完整的超级账本区块链系统,用户需要先安装和部署区块链系统的基础节点。并通过实现大量客户端代码来创建通道、将节点加入通道、安装并部署智能合约等等步骤;其中的很多环节还需要加入链中的组织的多方签名背书才能完成,而收集多方签名的过程并没有现成的解决方案。
现在,通过点融区块链云服务平台,用户可以在线完成这些事情。
那么,接下来呢?
用户只需根据自己的业务逻辑实现智能合约。以及开发应用程序调用智能合约。
原生的Fabric SDK提供的接口很丰富,但不太容易上手:
- 接口非常基础,以至于太多的细节需要由应用程序来实现,比如构建与区块链的连接通道、交易流程的交互细节等等。(这里描述了一个调用智能合约的事务流程。)
- 缺少通道管理的相关API实现。
- 缺少用户管理的相关API实现。
BaaS SDK的目标:
- 简化使用
- 对接点融区块链云服务平台功能
- 扩展
BaaS SDK主要做了什么?
- 设计了通道管理服务接口"ChannelService",并提供了一个通道管理服务的实现“BlockchainChannelService”。它将用户在点融区块链云服务平台上创建的通道的所有相关信息(包括组织、Orderer节点、Peer节点、所部属的智能合约信息)作为输入,在客户端侧建立起对远端链上通道的”连接“(用channelID标识)。应用程序可通过该”连接“访问通道上的智能合约和通道信息。
- 实现了调用和查询智能合约的帮助类:ChaincodeInvoker 和 ChaincodeQuerier,屏蔽了繁琐与的交易流程相关的细节。此外,智能合约调用通常涉及多个节点(背书节点、排序节点),调用很耗时。所以这两个帮助类实现了Callable接口,方便用户可以轻松实现异步调用。
- 应用程序需要指明以某个组织的用户身份,才能访问部署在某个通道上的智能合约,而且该用户所在的组织必须已经加入了该通道。所谓的“用户”,其实是一个实现了org.hyperledger.fabric.sdk.User接口的实例。开发应用时,需要实现该接口并对用户实例进行统一管理。BaaS SDK设计了用户管理接口——“UserService”,用来提供实现User接口的实例。并提供了一个实现类“BlockchainUserService”, 它使用从点融区块链客户端导出的用户证书和私钥作为输入,对外提供"BlockchainUser"实例(是User接口的实现)。另外,用户可能有自己的一套用户管理和证书管理系统,那么也可以有自己的User接口的实现,并实现自己的“UserService”。
Quick start
下载SDK及应用示例
点击这里下载。然后解压到本地文件目录。
运行sdk-example
sdk-example位于解压后的应用示例的根目录下。它是一个可以独立运行的应用程序,主要用来访问一个部署在某个区块链通道上的同样是例子的智能合约(example_cc),以及查询通道信息。
注意:
- example_cc 位于sdk-example/chaincode目录下。
- 可以通过修改sdk-example来调用你自己开发的智能合约,前提是你已通过点融区块链云服务平台将智能合约发布到链上,并且部署到了某个通道,具体步骤请参考这里。
- sdk-example本身可以运行在私有链和联盟链两种场景下。每个组织都可以独立运行自己的sdk-example代码来调用同一个通道上的同一个智能合约。
在运行sdk-example之前,你需要通过点融区块链云服务平台完成一些列准备工作:创建区块链、建立联盟和通道、然后上传、发布、和部署智能合约(example_cc)。
SDK API
Java doc
- BaaS SDK的Java doc,位于SDK及应用示例中的baas-sdk-javadoc目录下。
SDK API的使用示例
- sdk-example目录中的Application.java文件中详细注释了API的使用方法。
注意:通过查看sdk-example输出的日志也可以清晰地了解底层的BaaS SDK的运行状况。