近日,BCH社区开发商Bchd发布了一款用go语言编写的可替代BCH全节点的gRPC API。据开发者介绍称,这是一个具备高性能且可靠的服务器,它的出现会使bchd成为比特币现金生态系统中最顶级的索引区块链服务器之一。
gRPC开发背景
大多数的完整节点,比如Bitcoin core、BCH ABC或BU等,它们的全节点客户端计算和存储的数据非常少,这样虽然对于节点运行商没什么影响,但对于一些钱包、区块浏览器等生态基础设施却不是很友好,因为客户端没有足够预留的数据空间为这些基础设施服务。
在完整节点预留空间不足的情况下,基础设施商的开发人员通常会寻求第三方索引服务器的帮助,比如Bitpay的Insight服务器,这些服务器一般是额外的软件,需要安装在整个节点上,而且它计算所需的索引需要通过公共API获取。
索引服务器大多难以安装和在生产环境中运行,比如Insight服务器对某些类型的数据需要做重置API处理,随后还需要使用WebSockets和socket.io。另外,Electrum服务器使用的stratum API过于笨重和繁琐。
基于上述现象,Bchd开发商提供了一个“开箱即用”的解决方案,它只需要使用者下载二进制文件并运行就可以了。
gRPC是什么,它有什么用处和优点?
gRPC API是用go语言编写的一个新的服务器,可以替代BCH全节点(比如ABC和BU),帮助基础设施开发者们解决全节点数据不足的问题。
它拥有许多优于原系统遗留JSON-RPC以及各种REST / WebSocket API的优势,它为用户提供了一个高性能且可靠的服务器,具有快速同步模式等功能,允许客户端的初始链在记录时间内同步下载。该节点还包括BIP113,157,158等属性和可调整区块大小上限。使用gRPC,可以非常轻松地构建定义明确、易于推理的API。
前端开发的具体表现:
· 不再需要查找API文档 – proto是API契约的规范格式。
· 不再需要手动编写JSON调用对象——所有请求和响应都是强类型和代码生成的,IDE中提供了提示。
· 不再处理方法、标题、正文和低级网络 – 一切都由gRPC处理。
· 不再猜测错误代码的含义 – gRPC状态代码是表示API中问题的规范格式。
· 不再需要一次性从服务器端请求处理程序来避免并发连接 –gRPC基于HTTP2,在同一连接上多路复用多个数据流。
· 从服务器传输数据不再有问题 - gRPC-Web支持1:1RPC和1:多个数据流请求。
· 在推出新二进制文件时,不再有数据解析错误 - 请求和响应的向后和向前兼容性。
BCH基础设施开发者的又一福利
相较于传统的互联网应用开发来说,在现阶段基于区块链底层协议的开发难度要更高一些,而区块链行业的技术从业人员又非常有限,在这种情况下,如果想要加快某条公链应用的开发进度,那么完善其开发配套设施就显得非常重要了。
gRPC API无疑是非常优秀的一项基础服务,它可以有效减轻BCH相关应用的开发难度,加快应用的落地速度,进而完善整个BCH生态体系。
类似于gRPC这样的辅助工具在BCH社区还有一些其它的,比如Bitcoin.com推出的开发者平台,在4月11日,还平台的REST服务层一天甚至收到了超过500万个请求,这表明BCH开发人员正在使用这些辅助工具构建一些新型应用。
相信未来还会有更多的辅助开发工具被构建和分享,而基于BCH的相关应用和配套的基础设施也能够从中受益。