Bitsocket——BCH实时API,为BCH带来无限可能

Unwriter是BCH社区的一个程序员,他开发了很多基于BCH的应用,例如Chainfeed,一个名为@_Opreturn的Twitter机器人,Read.cash,Bitdb.network等等。除此之外,他还是“The Simple Ledger Protocol”BCH代币化方案的开发人员之一。

昨天他在社交平台yours上带来了他的新作品Bitsocket。这是一个强大的通知推送基础设施,可以用于构建实时事件驱动的应用程序。

虽然比特币已经存在了近十年,但开发人员从来没有一种简单而灵活的方式可以以编程方式实时的收听,过滤,处理和应对各种比特币交易模式。最好的情况是你可以听取每一个比特币交易的整个消息,并过滤出你需要的那些,但即便如此,你仍然需要解析每一个原始交易,看它是否真正符合你正在寻找的条件。这种方式虽然有效但是弊端也很大,为了找到需要的信息,需要对每一个交易信息进行解析,巨大的工作量对于想要通过它构建应用程序的人来说是一个非常大的阻力。不过Bitsocket的出现改变了这一点。

Bitsocket允许用户通过Bitquery订阅任何实时交易模式,以构建实时BCH事件驱动的应用程序。这是一个过滤器示例,它监听所有实时交易并将它们转换为可消化的API格式:

Bitsocket怎么运作?

第1步:转换

就像BitDB如何将原始线性BCH交易格式转换为可以查询的结构化数据库格式一样,Bitsocket将每个传入的BCH交易转换为相同的结构化格式,由同一个模块TNA提供实时支持。

第2步:准备

与从步骤1获取数据并将其存储到MongoDB中的BitDB不同,Bitsocket运行内存中实时过滤器和转换函数,以将交易对象转换为每个订阅客户端的特定于应用程序的事件。

请注意,插入Bitsocket的每个应用程序都订阅Bitquery对象,而不是依赖于特定的URL端点。

这个内容寻址的 pubsub模型(不像传统的位置寻址模型,如常规的websockets应用程序)很重要。这意味着您可以无缝地将一个Bitocket节点切换到另一个,并且您的应用程序将完全相同,因为每个Bitsocket节点都是相同的,并且您的客户端订阅了与服务器无关的不可变查询,而不是与特定服务器端点结合。

第3步:推送

来自上一步骤的每个转换事件都通过SSE(服务器发送事件)推送到相应的应用程序。这些应用程序可以是从移动应用程序到Web应用程序,也可以是从服务器端应用程序到硬件设备的任何应用程序。

当然,这些应用程序可以反过来触发另一个应用程序,这意味着一切皆有可能。

值得注意的是,通过这种推送范式,“在BCH上构建应用程序”的概念发生了变化。而不是“我正在为我的应用程序添加BCH支持”,它变成“我正在将我的应用程序安装到BCH计算机中”。

如何使用?

Bitsocket只不过是一个Web标准的SSE(服务器发送事件)。没有数据库可供使用,你只需打开一个SEE与Bitsocket连接就可以了。

这是一个功能齐全的应用程序的示例代码:

所有浏览器以及node.js等服务器端实现都自动支持Bitsocket。不需要学习特殊的技术,因为它只是服务器发送事件,您需要学习的是如何编写查询,以便您可以准确表达您想要收听的事件类型。此查询语言称为Bitquery。并且是与Bitdb相同的查询语言。

Bitsocket将带来什么可能?

Bitsocket打开了BCH编程的另一个维度。如果bitdb是基于“拉”的API,则Bitsocket是BCH的“推”API。通过拉和推,两者的组合几乎涵盖了BCH网络上构建的所有的应用程序。

几个例子:

1.BCH实时应用程序

在最原始的层面上,您可以将Bitsocket视为BCH的全局事件发射器。最终可以构建灵活的BCH实时应用程序,将BCH交易用作事件。

利用bitquery(bitsocket的查询语言)的表达能力,可以构建BCH实时应用程序:

1)监视某个交易哈希并触发某些操作(当我的地址收到钱时,为用户提供唯一的链接)

2)监听在特定位置具有特定推送数据的交易模式(当有关于“糖果”主题的memo.cash帖子时,从该自动售货机分配糖果)

3)当某种交易模式发生时,向iOS或Android设备发送推送通知。

4)聆听交易图的模式并对其进行操作(例如,“如果地址B从地址D接收C金额,则运行代码A”)

5)更多(Bitquery是图灵完整的可编程查询语言,因此您可以设置各种过滤器)

2.触发第三方API

如果您只是将Bitsocket视为BCH的单一的全局事件发射器,那么一切都会变得清晰。您可以构建监听BCH事件并触发任何事情的应用程序。

这包括触发非BCH第三方API ,如Twitter,Github,Facebook,SMS或您拥有的企业API。

这可以产生各种现有应用和BCH的有趣组合。或者将BCH纳入其工作流程的现有企业以更实时的方式与客户打交道。

3.触发BCH交易

如果我们可以从Bitocket事件触发任何逻辑,那么就会引发一个问题:为什么不使用该事件来触发另一个事件(BCH交易)?

是! 我们可以构建从BCH(带有bitquery)监听特定事件模式的应用程序,并在满足条件时将消息发送回BCH(以BCH交易的形式)。通过这种方式,您可以轻松地构建复杂的自主应用程序,无论您想要哪种方式,都可以循环进出BCH。

4.BCH交易的IPC(进程间通信)

让我们深入一点。BCH可以看作一台计算机,BCH交易作为“事件”,为所有插入BCH的程序提供动力。透视的这种微小变化确实打开了各种潜力的大门。

首先,我们可以将这些BCH应用程序视为插入BCH的单个全局计算机的“外部进程”。这些过程并不总是必须直接嵌入计算机中。就像早期计算机时代的软盘和磁带一样,您可以将这些应用视为与计算机(BCH)连接以执行某些任务的外部设备。就像软盘和磁盘一样,程序的算法存储在外部,但实际的计算是在CPU(BCH)上进行的。

这意味着我们可以通过它让一个应用程序以BCH交易的形式将事件发送到另一个应用程序,将BCH交易用作BCH计算机的IPC(进程间通信)。这是一个例子:

App A被编程为在有传入事件A时触发事件B.

应用程序B被编程为在有传入事件B时触发事件C.

App A也被编程为在有传入的事件C时运行动作X.

现在有了这个设置,让我们假设您通过制作与“事件A”的签名匹配的BCH交易来触发“事件A”。

用户通过进行BCH交易来触发事件A.

应用程序A立即被事件A的bitsocket通知,并触发事件B.

然后Bitsocket将事件B发送给App B.

应用B触发事件C.

App A也在监听事件C,它可以确认整个往返并最终运行动作X.

这只是一个例子。但通过这种方式,可以构建一组来自多方的完全独立的应用程序,这些应用程序使用BCH作为中央消息总线和BCH交易作为进程间调用自主地相互通信。

Bitsocket:BCH应用程序的消息总线

如果BCH是计算机,Bitdb将是随存随取的存储器,Bitsocket将成为消息总线。两个项目的目标正是降低外部世界与BCH互动的障碍。您可以在几个小时内逐步构建BCH应用程序。

虽然Bitsocket只是基于BCH的一个开发工具,但是通过对Bitsocket的了解,Bitsocket将为BCH生态未来的开发工作提供很多便利,带来很多可能性。这些正是BCH社区所需要的。欢迎开发者们使用BCH的这些开发工具为BCH带来更多的应用程序,从而推动BCH生态的壮大。

相关链接:

https://www.yours.org/content/bitsocket--the-realtime-api-for-bitcoin-0c646d55c152

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181030A0GNJH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券