介绍:由Tendermint赋能、构建于Cosmos之上的Microtick

原文链接:

https://blog.cosmos.network/microtick-on-cosmos-tendermint-8fc2065ec3e6​

撰写者:Microtick

介绍:由Tendermint赋能、构建于Cosmos之上的Microtick

Microtick是Cosmos / Tendermint的去中心化价格预言机,它将为需要IBC协议提供实际价格数据的DApp提供免费的实时喂价。它通过去中心化的市场交易来实现这一目标 – 并且在此过程中,提供了一种在几乎任何资产上实现价格发现的新方法。关于Microtick的所有重要细节都可以在

www.microtick.com上找到。

在我们构建基于Cosmos的DApp的过程中,我们发现了一些对整个生态系统都有所帮助的经验。但首先,我们需要简要介绍一下Microtick。(我们将在不久的将来做更深入的概述)。

去中心化的价格发现

Microtick是一个去中心化的价格预言机。其定价数据源于短期期权市场。您在Microtick区域中扮演的角色取决于您的目标:

1. 做市商

您的动机:作为做市商,您可以通过提供并更新准确和实时的估价来赚取收益。

好处:通过将您的通证支持和独有信息添加到共识估算中,您将帮助全球网络实现更准确的估价。

2. 交易者

您的动机:作为交易者,您可以通过短期交易或套期保值机会,在市场上交易恶意,错放或被被忽视的报价数据,并收集其通证来赚取收益。

好处:您可以去除旧的做市商报价,快速响应不准确的报价,以锁定短期利润,进而帮助全球网络。

3. 作为验证人

您的动机:作为Cosmos的验证人,您可以通过收取做市商和交易员为报价和交易支付的佣金来赚钱。

好处:通过为Tendermint / Cosmos BFT共识做出贡献,并向Cosmos生态系统中的其他人提供Cosmos IBC数据访问,来帮助全球网络。

Microtick市场产生了大量的交易和报价,这对在区块链上开发可扩展产品提出了挑战。例如,以太坊无法完全处理Microtick每秒会产生的交易数量,即使只有很少的价格市场在运作。此外,大量的交易状态更改导致区块链膨胀,导致链上节点的高资源成本。

Tendermint非常适合Microtick,因为它具有两个特性:快速最终性和链主权。Cosmos SDK增加了Dapp所需的重要功能:交易身份验证,状态管理和状态导出。这些是重要的部分,但也超出了本文的范围。

客户端 / 服务器 API 架构

现在你已经有了一些背景知识,接下来我们探讨一下如何为Microtick设计和构建一个API层,为自动化做市商和交易者创建一个工具包来访问后端Microtick Dapp。这可以在不暴露Tendermint端口或内部数据结构的情况下实现,并创建更健壮和可扩展的系统架构。

介绍:由Tendermint赋能、构建于Cosmos之上的Microtick

图1. Microtick客户端/服务器体系结构

图1显示了在Microtick链上运行的单个Tendermint节点的系统图。Microtick Dapp(1)在Cosmos SDK上运行,并以标准方式通过ABCI与Tendermint Core(2)通信。Dapp继承了大多数标准的Cosmos SDK模块(auth,staking,distribution等),并实现了一组自定义查询以及特定于Microtick的事务。

当Cosmos SDK处理交易时,Dapp可以选择标记结果,以及将数据附加到交易结果。这些交易和结果首先传递给Tendermint,最初看起来像base64编码数据,但实际上是使用名为Amino的编码器/解码器编码的。我们不会在这里介绍Amino编码格式,但是有一个活跃项目可以为使用Cosmos SDK编写的Dapp的自定义交易构建编码器/解码器:

https://github.com/cosmos/amino-js 。

下面显示了带有Tx,标签和结果的Microtick交易。Result 标签字段允许Tendermint搜索工作。通过搜索特定标签或一组标签,例如mtm.MarketTick =’ATOMUSD’,区块链历史中与该标签匹配的所有交易都将出现在搜索结果中。Tendermint中的搜索是灵活的,但可能需要一些时间,具体取决于节点的负载和其他因素。

介绍:由Tendermint赋能、构建于Cosmos之上的Microtick

除了搜索之外,结果标签还允许Tendermint客户端订阅交易事件。但是,由于订阅事件是异步的(它们可能在任何时间发生),因此需要不同的连接类型。Tendermint使用websocket连接进行订阅。

最后,基于Cosmos SDK的Dapp(如Microtick)实现了自定义查询。Microtick查询示例如下所示。

介绍:由Tendermint赋能、构建于Cosmos之上的Microtick

提交Tx或发出查询的客户端不会直接与Cosmos SDK Dapp通信。Tendermint有一个RPC接口,通常在端口26657上,用于处理这个问题,具体如下:

  • 使用broadcast_tx调用广播交易
  • 使用abci_query调用处理Dapp查询
  • 使用tx_search调用处理历史记录搜索
  • 通过与websocket调用连接的websocket处理事件

将Tendermint RPC端口打开到外部被认为是对安全性不好的做法,因此对于Microtick API,我们需要创建一个新的功能部件来处理外部连接。在图1中,在浏览器或做市商或交易机器人内部运行的API服务器(3)和API客户端(4)联合起来以创建处理外部连接的通信协议。

在浏览器中运行的API客户端提供了一个统一的API,用于处理抽象层,使得用于Microtick Dapp接口所需的各种调用变得容易。这些API调用通过自定义协议传输到API服务器(将来我们可能会使用像JSON-RPC这样的标准)。API服务器之后会连接到Tendermint节点,以处理内部通信。

Microtick API客户端还包括一个源自

https://github.com/okwme/js-cosmos-wallet

的Javascript的Cosmos钱包(5),但略微修改成了使用javascript而不是typescript。API客户端开发人员可以使用API调用轻松创建新钱包或重新使用现有钱包。请注意,是开发人员,而不是API,来负责处理私钥,包括加密以及存储。

API客户端/服务器拓扑具有以下优势:

  • Tendermint RPC(a)和websocket(b)通信与外部调用隔离。
  • 对Microtick Dapp©的ABCI查询也是隔离的。
  • 查询在每个区块的基础上会被缓存,因此如果区块编号未更改,则getBlockNumber()等常见调用可以使用缓存结果。API服务器处理每个区块的缓存,每个缓存都会被新的区块清空。
  • 类似地,websocket事件可以在同一连接上进行多路传输,并且事件订阅也被管理,因此如果多个浏览器客户端各自订阅同一事件,则仅会发出一个Tendermint订阅。
  • 现在,每个订阅都通过自己的websocket发给Tendermint,因为如果有错误并且订阅被删除,则错误消息中没有订阅号,因此如果您在一个websocket上有多个订阅,则无法知道哪个订阅被删除了。API服务器将这些应用特定问题与客户端隔离开来。

在Tendermint和外部世界之间添加额外层的另一个优势是我们现在可以实现交易缓存。我们会把一个界面接到Mongo数据库服务器(6 – 单独提供),以更具可伸缩性和UX友好性的方式处理和存储交易。

如果在启动API服务器时,数据库未同步到区块链,我们会在后台启动同步过程以访问历史区块并继续直到达到当前块高度(d)。同步后,可以更快速地处理标准查询,而无需加载Tendermint节点(e)。

在图1的系统架构图中,灰色的系统组件(API服务器,浏览器GUI的API客户端部分以及用于Tx签名的基于浏览器的Cosmos钱包代码)使用了javascript,并且在MIT执照的许可下开源:

https://gitlab.com/microtick/mtapi​

关于Microtick

Microtick最初成立于2003年。创始人想以独特的方式标准化新的期权产品,以允许基于市场的短期平价期权执行——以二级市场平仓为代价。

随着最初从以太坊开始的区块链技术的出现,Microtick开始创建一个去中心化的预言机:

  • 期权费(内置不确定性)非常适合区块链技术。在传统订单中,可能无法预测交易时间,并且价格的微小地理差异会导致提前交易。
  • 我们最初设想的市场机制和实时隐含的标的价格实际上是一种优秀的系统,用于以去中心化的方式向区块链输入价格。
  • 从实际交易执行中的解耦价格发现不仅仅在区块链技术上有优势。

Microtick使用Cosmos SDK,目前正在Tendermint上运行。欲了解有关Microtick的更多信息,请访问我们的网站microtick.com或在microtick.zone

上试一下测试网。我们的电报群是

https://t.me/microtick_general

来源:COSMOS