WeBASE是一个体验友好、功能丰富的区块链中间件平台,通过一系列通用功能组件和实用工具,助力开发者快速搭建区块链应用的基础环境,并提供可视化合约IDE和一站式联盟链管理台。
FISCO BCOS自2017年开源以来,大量开发者基于FISCO BCOS开发区块链应用。在和开发者的日常沟通中我们发现,区块链应用开发流程可以进一步简化与缩短,比如所有应用都需要智能合约开发、交易上链、可视化管理、数据分析等模块,而这些模块的开发具备共性,可以抽象成通用组件。
为此,微众银行区块链开始打造一款区块链中间件平台,期望通过软件分层的形式,集中解决应用层面临的问题,屏蔽区块链底层的复杂度,降低开发者门槛,帮助企业和开发者快速搭建区块链应用。这个中间件平台就是WeBASE。
WeBASE于2019年7月份正式开源,在社区伙伴的通力协作下高速迭代、不断完善,目前共迭代22个版本,代码仓库18个,核心代码超过100000行,集成在近百个区块链应用中。
这些区块链应用覆盖多种场景,需解决的问题也不尽相同,本文将结合具体场景,讲解如何在不同场景下使用WeBASE。
WeBASE的设计理念是组件化与微服务化,即尽量将组件粒度做到最小,这个特性保证了使用的灵活性,可解决不同场景的问题。开发者可将WeBASE作为一个可视化开发环境,可集成一个或多个组件到应用中,可基于已有组件进行二次开发,当然也支持搭建所有子系统以获得更完备功能,如何使用取决于个人选择。
具体而言,开发者可以怎么使用WeBASE呢?
智能合约是区块链应用开发的关键一步。
在未使用WeBASE的情况下,开发者通常将Solidity合约代码使用命令行的方式进行编译、调试、部署,再将获取生成的ABI、合约地址等信息拷贝到应用层,这对于多份代码文件的管理非常不方便。虽然开发者可以使用Remix进行普通合约开发,但Remix不支持FISCO BCOS的一些特有合约功能,例如CURD合约调用、CNS合约调用,且Remix无法连接FISCO BCOS节点,不支持在线部署。
WeBASE-Front集成了智能合约IDE,支持Solidity语言,支持使用JS本地编译,在线部署,多文件管理,自动生成Java类,交易测试等非常实用的功能。
使用WeBASE-Front,开发者仅需在节点同机部署WeBASE-Front,即可搭建可视化开发环境,快速进行智能合约开发。
目前,社区开发者中针对WeBASE-Front最常见的应用是使用它搭建可视化开发环境,也有开发者将其中的智能合约IDE作为插件,集成到自己的产品中。如:ChainIDE基于WeBASE的IDE插件进行了二次开发,集成在自身的在线IDE中,给开发者带来了更好的编程体验。
区块链应用都需要集成FISCO BCOS的SDK与节点进行交互,FISCO BCOS支持多语言SDK, 但多语言间如何便捷调用,在底层各节点上同机部署WeBASE-Front可顺滑实现。正因为WeBASE-Front需要和节点同机部署,所以我们将两者集成到一个Docker镜像中,客户无需感知WeBASE-Front,可以将它看作底层节点的一部分。
WeBASE-Front集成了Java SDK,将SDK大部分接口封装成Restful风格接口,应用层仅需向节点发送Http请求即可和区块链节点进行交互。不但可以解决多语言调用问题,还能让上层应用的交互变得更简单。
交易上链需要先用私钥签名,账户私钥由应用层自行保管,如管理不当,则存在泄漏风险。
私钥存储管理和签名可以采用组件化方式妥善解决。
例如,如某停车场运营公司,每个用户在链上对应一个账户。随着业务发展,用户量增加,需托管的私钥越来越多,如用户私钥丢失,其在链上的资产也就丢失了。因此私钥一般不由用户保管,而是托管在平台方的后台服务器中。在此场景下,平台方可选择搭建WeBASE-Sign统一管理用户的私钥,降低私钥托管和云端签名的开发成本。
WeBASE-Sign支持自动托管私钥和云端签名。开发者可在应用层搭建WeBASE-Sign,每个账户生成的私钥加密存储在WeBASE-Sign,实现私钥不出服务器;为进一步提高安全性,WeBASE-Sign所在服务器可部署在内网安全区域,通过白名单来控制访问权限。
应用层向区块链发送交易,一般做法是将SDK集成在应用中,应用层和节点建立长连接,调用SDK接口,发送交易并通过长连接通道,接收链上事件。但有些场景中,节点外网是不开放的,导致应用无法和节点建立直连,或请求需要路由策略才能找到节点。
面临此类情况,开发者可在链外搭建交易通道,应用层使用Rest API发送交易。需要搭建服务有WeBASE-Transaction、WeBASE-Front、WeBASE-Sign。
区块链服务网络BSN就采用此模式:通过交易上链服务进行鉴权,路由,交易通过WeBASE-Sign签名后,再通过WeBASE-Front上链。
平台型区块链项目,一般会运维多条链,不同链对应不同应用项目,这些链和应用需要同一个平台进行统一管理。
为此我们专门开发了链管理服务——WeBASE-Chain-Manager,WeBASE-Chain-Manager搭建起来之后,上层可调用它提供的接口,实现对多条链集中管理。
区块链服务网络BSN就采用了WeBASE-Chain-Manager来管理多条链、多个群组,可通过API便捷地操作平台中各节点,实现在线运维管理。
可视化管理平台是完整区块链应用中必不可少的一部分。
开发者可在区块链应用开发完成后,使用WeBASE-Node-Manager、WeBASE-Front、WeBASE-Sign、WeBASE-Web,搭建一个完整的区块链管理平台。它包含了管理一个区块链的所有功能:查看链上数据、查看各个节点的信息、管理链上部署的智能合约、解析每一笔交易、管理私钥、证书等。
区块链上的数据在每个区块中,链上数据不支持结构化查询。随着业务运行时间越来越长,交易数据不断累积,如何对数据进行分析和监管成为难题。
WeBASE支持将链上数据导出到传统存储设备中,让常规数据分析成为可能。为支持更丰富的监管功能,我们后续也会推出功能更全数据监管平台,不但可实现链上数据的展示、搜索、审计,还可对违规数据进行干预。
WeBASE日渐茁壮的路上,离不开每一位社区伙伴的帮助与支持。接下来,我们还会陆续推出WeBASE系列实操文章,更好地支持社区区块链应用开发和落地,也欢迎您将感兴趣的话题告诉小助手。关注本公众号,对话框回复【小助手】进技术交流群。
了解更多干货内容,请关注FISCO BCOS开源社区公众号,访问FISCO BCOS代码仓库可下载项目所有源代码:https://github.com/FISCO-BCOS/FISCO-BCOS,欢迎点击页面右上角star收藏,获取最新版本。