Covalent, the indexing of Blockchain

最近花时间读完了Covalent的白皮书,来分享下项目的设计细节,进度,还有我的看法。

项目内容

Covalent提供的服务,可以让用户(比如dapp开发者),很简单的使用SQL一样的语法检索所有的链上数据。举例子的话,比如搜索出所有Eth链上持有XX nft的地址,再按持有时间排个序等等。

这种检索,现在想要做到,只能自己写代码,一个区块一个区块的扒拉,然后自己设计数据库,自己存,自己索引。不仅对用户来说门槛很高,花费也很高(运行代码+aws 数据库都是要花钱的)。但是有了Covalent的服务之后,只需要写常规的RPC,或者Json的API,然后按照API 访问频率收费就可以了,搜索链上数据变得简单且方便。

代币模型

这个项目是发币了的$CQT。主要是个功能性代币。具体使用场景如下:

  1. 当做奖励。
    不同的结点有不同的功能,当不同的结点正确的做了该做的事,那么CQT就会用来当做奖励。
    1. 爬虫结点(Block Specimen Producer Node),也就是负责把各个链上数据转换成固定格式数据的结点,正确转换之后,可以得到奖励。错误的话,结点内部stake的所有$CQT会被验证者(Validator),收走。作为对Validator的奖励。
    2. 索引结点(Indexer Node), 负责给爬虫结点转换的数据,增加索引。正确索引之后,可以得到奖励。错误的话内部stake的$CQT会被收走。
    3. 存储结点(Storage Node), 负责存储索引好的数据,响应外界的搜索要求。正确回复外界搜索之后,会得到奖励。
    4. 性能差的结点,比如availability低的,会被惩罚。但是性能好的,会被奖励。
  2. 买数据。
    一些特殊的数据的买卖,可以使用$CQT交易。
  3. 用来DAO的管理。
    可以用来投票,比如是否增加新的功能之类的。$CQT相关的投票只涉及功能方面,不涉及股权,团队分红等方面。

注意,作为普通用户,使用CQT的索引数据,比如搜索多少地址持有XXX NFT,不是花费$CQT,而是稳定币。这样是为了签订服务合同的时候,避开$CQT价格波动的影响。

整体架构

Overview of Covalent
Overview of Covalent

上图中,蓝色为Covalent网络里不同的角色,黄色是数据转换过程。从区块链数据,变为用户可搜索的数据,整个网络里需要4种结点。有两个特殊的结点角色画不下了,它们是:

  1. 验证结点(Validator)
    每一步新数据的产生,都可以被质疑,依据Validator的验证结果,要么结点会被关闭(做了坏数据),所有stake的$CQT被没收; 要么结点安然无恙,质疑者的$CQT被没收。
  2. 路由结点(Directory Service Node)
    每个存储结点存的内容并不一样,比如有的可以只存BSC的数据,有的只存ETH的数据,那么用户的搜索需要被引导到哪个存储结点,就是路由结点的功能。

当前进度

根据白皮书,最终的设想是完全分布式。也就是团队只负责开发运行各种结点需要的SDK,但是结点本身由各个不同身份的社区成员运行。但是在上线的时候,大部分的结点目前为止还是由团队运行的。可以理解为现在还是一个中心化的网络。

当前支持的链:

设计细节

  1. 想成为任意一种结点,几乎都需要质押一部分$CQT。
  2. 爬虫结点
    1. 想成为爬虫结点,需要跑一个SDK(extract and norm worker)。
    2. 爬虫结点转换完数据之后,会提交一个工作证明给CQT 主网。第一个被接受的结点,会被奖励$CQT。此过程类似于挖矿。
    3. 一般一个爬虫结点同时会兼任验证者的职能。因此整个网络里验证者至少和原始数据生产者数量一致。
  3. 索引结点。
    1. 需要跑一个SDK (stateless tracker).
    2. 产生的新数据结构被称为trace specimen.产生的结果会存到存储结点,并且发一个结果的hash值给主网,第一个被接受的结点,会被奖励$CQT, 依旧类似于挖矿。
    3. 索引结点最好自己同时也是存储结点,不然把结果存储到另一个结点的花费会比较高。
  4. 存储结点。
    1. 主要处理内部的request,对于每一个request,存储结点都可以收费。内部的request主要是索引结点发起的,目的是找到最经济实惠的存储地址。
    2. 他们需要告诉路由结点,自己的费用,自己存什么样的数据。
  5. 搜索结点。
    1. 会需要跑一个Covalent ETL worker,预先从搜索结点加载一些数据,放到本地,以便拥有更快的响应速度。
    2. (QQ??) query node收谁的钱??用户付钱不是付的stable coin嘛??

质疑点

  1. 现在项目的近况如何了?每种node都有多少个?
  2. 由于用户不会直接使用$CQT支付搜索费用, 那么什么情况下$CQT价格会升高?
    (Those making requests for data (as customers) will however never interact with the CQT economy. Instead, their payments will be made in standard dollar figures and charged in stablecoins. This makes it possible for standard agreements and pre-set pricing to be made when a company chooses to use the Covalent Network for running its operations. It also protects them from speculating on the underlying currency.)

个人思考

  1. 项目设计的不错。不像是圈钱就要跑的。
  2. 作为一个数据库,最重要的性能就是两个,Availability(不能宕机,用户使用的时候最好永远在线,像Google一样) and Durability(数据不能丢)。这两个性能在这个系统里,极大取决于负责读取的结点的个数,也就是存储结点,搜索结点,和路由结点。
  3. 还没太想明白CQT用户增多和$CQT价格上涨之间的关系。感觉其实可以没什么关系?
    越多的用户 -→ 越多的搜索需求 -→ 越多的stable coin和美元订单 -→团队更多钱。但是不知道团队更多钱和$CQT价格上涨有啥关系。感觉可以毫无关系…
Subscribe to CCONQUEROR
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.