_unwriter的工具附带说明,实际用例通过审查

这篇文章最初发表在Yours.org上,经过作者约书亚·亨斯利(Joshua Henslee)的许可,我们予以转载。

_unwriter从新年伊始就开始大展拳脚,其推出了一款新工具,貌似让人们每天都可以在比特币SV的基础上从事开发工作。

虽然大多数圈内人都清楚他正在为伟大的事业开山铺路,但某些技术背景薄弱的人也许还不甚明白。本人算是技术控了,但仍感觉很难跟上节奏!

有时候,我不得不反复琢磨这些工具的工作原理,所以,我决定写一篇文章来解释它们的深奥之处,包括已经有人提出过的实际用例,以及本人自己钻研出来的用例。

BitDB — BitDB是一个以可读的、格式化的方式在区块链中构建交易的数据库。我们不再需要编写冗余代码来从交易中获取数据。该工具是在分叉前发布的,但您必须先搞懂它是怎么回事,才能掌握其他工具的工作原理。

GenesisBabelChronosMeta

虽然这些名称看起来神秘而复杂,但都只是BitDB的子集实现。

Genesis — BSV专用的BitDB,只使用传统的地址格式,并根据早前的压力测试优化了性能。

Babel — BitDB的另一个子集,是为了让用户查询以OP_RETURN脚本写到链上的任意数据而专门优化过的数据库。由于它只关注存储在链上的任意数据,所以数据量较少,查询速度会快得多。

用例:Babel应该用于只需要访问存储在区块链中的数据、文件或协议的应用程序,而不必访问交易的脚本或其他细节。

Chronos — BitDB的另一个子集,该数据库用于跟踪交易的时间戳,但需要注意的是,该数据库只跟踪过去24小时滚动周期内的交易。

这意味着,两天前发送的交易不会存储在Chronos数据库中。为什么?

譬如Babel,我们知道因为数据库包含的数据较少,所以查询速度要快得多。Chronos应该也非常快,因为它只存储过去24小时的交易!

用例:由于Chronos按时间顺序存储每一笔带有时间戳的交易,就跟踪交易的时间而言,该数据库可作为单一真相来源。用户不必依赖其他节点、自身节点或矿工的不一致性。因此,开发人员有动机将Chronos用于他们的应用程序,而非(但愿不会)他们自己的“完整节点”。

Meta — BitDB的另一个子集,该数据库只包含区块属性,例如,区块高度、难度、时间戳等,一直追溯到开采出的首个区块。因为该数据库存储的数据比Babel和Chronos还要少,所以它是速度最快的BitDB实例。

用例:

利用区块元数据的难度字段将人工智能(AI)功能添加到您的视频游戏应用程序,例如,比特币SV网络的难度升高实际上会增加您视频游戏的难度!

使用下一个采出区块的时间或区块高度来确定视频游戏角色属性的增加,或某个数字角色的年龄(@itisbitcoin提出的用例)。

现在,我们可以探索这些工具之间的交互方式。

Bitsocket — 该工具也是在分叉前发布的,这是一种基于您的自定义查询监听不同类型交易的机制,然后执行一些您用代码实现的功能。

它还使用其他哪些工具?

该工具与BitDB配合使用,这意味着它可以与Genesis、Babel、Chronos和Meta配合使用。

用例:

监听您的一个比特币地址(例如,动态利用Handcash的下一个比特币地址),一旦收到交易,就给自己发一封电邮。

当客户向比特币地址付款,但仍处于未确认状态时,向客户发送订单确认电邮。一旦该交易得到一定数量的确认(例如6),就向您的ERP系统或您自己发送另一条通知,表明该订单符合提货/发货条件了。

Bitpipe — 服务器端应用程序,可以接收JSON格式的比特币交易请求,然后将其广播到网络。这款工具可能是我的最爱。

JSON告诉Bitpipe如何发送交易,这意味着请求只是请求,并不等同于比特币交易。Bitpipe的所有者为交易付费,即通过请求发起的交易对该方是免费的。

该请求可以指示Bitpipe将2,000聪发送到地址B,或者将一些加密数据发送到地址C,或者一次请求同时执行两项任务。

自定义过滤可以添加到您的Bitpipe实例中,这样您就可以选择性地广播某些交易,也就是说,如果有人以您不认可的方式发送随机请求,您可以直接拒绝或忽略它。

这绝对是一个巨大的进步,因为开发人员再也不用在其应用程序中编写冗余的输入/输出管理和交易签名逻辑来发送比特币。

任何应用程序、任何编程语言都能轻松地以JSON格式发出HTTP请求,从而使几乎所有的外部应用程序都能与比特币SV区块链快速交互。

这样一来,我们就有了一种外部应用程序能够与比特币进行交互的方法——实际上不需要拥有比特币。

这款工具正好实现了亚历克斯(Alex)在推特上的见解,我们可以告诉公司向具有特定JSON文档/协议的Bitpipe节点发送标准的HTTP请求,由此发挥比特币的强大性能。

用例:

与外部应用程序实体进行交易,通过您的Bitpipe节点每月处理一定数量的交易。例如,第三方可以用法币每月支付您100美元,而您广播他们的交易只需花费一小部分成本即可获利。

电子数据交换(EDI)传输,ERP系统用OP_RETURN脚本向Bitpipe实例发送一项包含850笔采购订单的详细信息的HTTP请求,而Bitpipe实例将交易广播到接收方的地址。ERP不必管理私钥或跟踪比特币。

Bitchat — 这款工具更简单,它是基于区块链的实时聊天应用程序。用户发送聊天消息,由于它利用Bitpipe,因此只要有资金,交易就是免费的。

它还使用其他哪些工具?

BitDB、BitSocket、BitPipe

Bitcom — Bitcom是一款用于在区块链上创建自己的空间、协议或数据库的工具。该理念是:从您的私钥生成的比特币接收地址具有唯一性,而且它从您的密钥派生而来,可以证明所有权。

使用OP_RETURN,您将发送一笔包含以下内容的交易:

OP_RETURN <您的比特币地址> <您的数据或协议>

用例:

利用加密功能在链上存储您自己的数据库,链上查找很容易过滤(在您的地址上),从而无需为应用程序运行MongoDBSQL实例(降低了成本)

创建您自己的视频游戏协议,其中命令以您的比特币地址为前缀,而这些命令表示在游戏环境中其角色的某种状态变化

B:_unwriter创建的协议,用于在比特币区块链上存储和引用任意数据。

它还使用其他哪些工具?

Bitcom

用例:

如此优秀,不言而喻。

创建可在您的应用程序中引用的文件、图片或音频的所有权目录。例如,根据用户自己生成的比特币地址,将可以表示字符或属性集(RPG?!)的文件分配给用户。

OP_Return <您的输入地址> <用户比特币地址> <JSON文档属性>

Datapay — 利用瑞安·查尔斯(Ryan X. Charles)维护的bsv javascript库,该角本库可以让您用最少的代码广播交易。您可以轻松发送比特币、写入数据或同时执行这两项任务。对于有意从事比特币开发的初学者来说,这是不错的入门工具。

ButtonPage — 用户可以在该网页上即时生成动态的货币按钮,并与他人分享网址(URL)。使用该货币按钮文档,用户可以轻松修改字段,创建自定义的货币按钮,即可向自己、朋友或多人支付任意数量的比特币。

该网址也可以用代码生成,这样应用程序就可以生成货币按钮,然后分享给与其应用程序进行交互的用户。

用例 在电子商务网站上,生成货币按钮网址,使用户可以在线订购商品并买单(以OP_RETURN语言编写订单号)。该货币按钮可以配置多项输出,以便商户和供应商在用户刷卡买单时收到钱款。

随着这些工具的问世,比特币SV的开发潜力得以充分释放,同时展示了锁定协议的功能。

_unwriter通过创建这些工具,向大家透露了他的开发意图。他/她/他们通过提供这些工具来简化开发、支持可扩展应用程序,并创建维持未来网络和安全模式所需的强大生态系统,打消了怠于开发的借口,这对我们所有人都是一种鞭策。

文中不足之处请不吝指教。欢迎读者留言交流,同时分享您想到的这些工具的其他用例!

点击此处查看原文。

202024日的“创世”协议升级是比特币历史上的一大里程碑,将见证BSV最大程度地回归到中本聪原先设想的协议。请访问“创世”硬分叉页面以了解更多信息。

要直接在您的收件箱接获CoinGeek.com最新消息,CoinGeek会议特别优惠以及其他内部信息,请加入我们的邮件列表

[10]
[10]
[id^="_form"]
[id^="_form"]
[id$="_submit"]
[id$="_submit"]
[^;]
[^;]
['on' + event]
['on' + event]
[?&]
[?&]
[^&#]
[^&#]
[(d+)]
[(d+)]
[i]
[i]
[results[1]]
[results[1]]
[elem.name]
[elem.name]
[+_a-z0-9-'&=]
[+_a-z0-9-'&=]
[+_a-z0-9-']
[+_a-z0-9-']
[a-z0-9-]
[a-z0-9-]
[a-z]
[a-z]
[el.name]
[el.name]
[10]
[10]
[id^="_form"]
[id^="_form"]
[id$="_submit"]
[id$="_submit"]
[^;]
[^;]
['on' + event]
['on' + event]
[?&]
[?&]
[^&#]
[^&#]
[(d+)]
[(d+)]
[i]
[i]
[results[1]]
[results[1]]
[elem.name]
[elem.name]
[+_a-z0-9-'&=]
[+_a-z0-9-'&=]
[+_a-z0-9-']
[+_a-z0-9-']
[a-z0-9-]
[a-z0-9-]
[a-z]
[a-z]
[el.name]
[el.name]