本篇我们探讨一下区块链世界里的数据供应,以及以数据为核心产品的服务商如何形成一定的市场规模,即他们如何产生价值和捕获价值的。
区块链本质上是一个分布式数据库,虽然有着公开、透明、可追溯等特点,但是直接访问或者获取这写数据并不便利,需要特定的接口、进行格式化、以及转变保存类型。大部分区块链使用的是键-值类型的数据库,方便多写少读,而普通用户比较习惯的是关系型数据库。关系型数据库可以用像SQL那样的查询语句来进行查询,像DuneAnalytics这样的服务商就是把链上数据变成关系数据库,方便调取,这中间的流程还包含了数据的存储和再加工的过程。
一般有两类有价值的数据:
链上数据:链相关数据、转账、普通交易、智能合约事件等,这类数据被分布式数据库所维护,可靠性由共识保证。即区块链的核心数据。
非链上数据:与链上相关,准确性依靠中心化或去中心化的节点验证的数据,如交易所、预言机等,类似于Web2.0服务。交易所数据介于链上链下之间,是链上数据的链下计算,然后经链上验证,也产生了很大的数据量。
我们认为数据市场需求爆发的驱动来自于:
多链宇宙的成型
应用的增加和用户的增加
应用带来的数据需求的增加
用户行为复杂化
数据市场参与者
交易者
交易者根据各类数据信息判断可交易的方向,比如观察某条链的活跃程度,某个DEX的成交情况、某个借贷协议的借出贷款等。他们会需要有可靠的数据源,一些高级用户会使用付费的数据服务。
数据的提供者
被动的产出方:如区块链的节点,交易所,普通用户主动地产出方:API提供者,数据搜索引擎,定制化数据包。他们往往是原始数据的加工者。
开发者
开发者查询、调用链上数据,与区块链交互。由于节点服务商的存在,开发者不需要搭建自己的节点,就可以直接和链上进行交互。众多dApp以及第三方钱包应用都依赖于Infura这样的节点服务商,与区块链进行交互。开发者的需求来自于:网络状态监控、交易执行状况监控、稳定的执行环境、市场和竞品趋势信息、产品和市场策略指定、根据客户偏好提升产品性能等。
需要不停监听网络状态的应用和中间
比如借贷协议需要监控账户状态,一些自动化中间件要及时反馈价格变化等。
区块链数据结构、存储、和访问-以Ethereum为例
键值数据库
区块链本质上是个数据库,和比较为大众熟悉关系型数据库不同,以太坊使用的键值类型数据库,其底层基于Google的LevelDB,适用于写多读少的场景。关系型数据库历经多年发展,被程序员所接受,也非常利于普通人理解。关系型数据库的结构是一系列的表。
哈佛经济学家Kenneth Rogoff:美国距离发行央行数字货币至少还有10年时间:金色财经报道,据 China Daily消息,哈佛经济学家 Kenneth Rogoff 预测,美国距离发行自己的央行数字货币(CBDC)至少还有十年的时间,而中国人民银行则远远领先于其他主要央行。Kenneth Rogoff预测,数字人民币的增长最终将促进人民币在国际上的使用。全球会计师事务所普华永道发现,美国在央行数字货币创新排行榜中位列第 18 位,不仅落后于中国,还落后于巴哈马、厄瓜多尔和土耳其等较小的国家。[2022/1/8 8:34:37]
键值数据库是新发展出来的非关系型数据库,结构相对简单:键作为唯一的标识符,值存储数据,值可以是任何东西,不需要遵循表的结构,灵活多变且扩展性强。键值和关系数据库相比扩展性好,可以提供大数据量的读写,常被用于缓存。大部分分布式数据库采用键值数据库,依靠LMS-tree的结构进行有效的数据写入和查询。少部分选用关系型数据库,如Ripple。
区块链的数据根据状态和交易的抽象结构如下:
来源:HyperLedger
以太坊的区块数据包括区块头和区块体,区块头包含许多字段。从结构来看,以太坊的主干就是三棵树:状态树、交易树和收据树。
以太坊的主要字段是StateRoot(状态树),包含了账户余额、声明、随机数等,状态树采用的是Merkel-Patrica结构,需要不断的更新。而交易树和收据树不需要更新,所以采用了Merkel的数据结构:交易数据是永久数据,永久数据已经记录不会被改变。状态树储存每个以太坊账户的地址余额,一经发生交易就会修改。以太坊的数据结构总结起来就是这一张图:
来源:LucasSaldanha
永久储存与临时储存
如前所述,以太坊的底层数据是以K-V形式储存在底层LevelDB里的。但是LevelDB适合于写多读少的场景,所以真正用于读取、查询的数据库是StateDb,它管理着所有账户的集合,账户的呈现形式是stateObjectStateDB。其直接面向业务,是底层数据库和业务模型的之间的存储模块。它采用两级缓存机制,以满足查询、更新、调用等功能。第一级缓存为map形式,存储stateObject,二级缓存以MPT形式存储。当stateObject有变动的时候,实例化的stateObject会更新,当IntermediateRoot()被调用后,他们会被提交到MPT上,当CommitTo()被调用后,他们会被提交到底层levelDB中。这就形成了三级缓存结构。使用多存数据库的好处是,当需要回滚的时候,直接调用stsateDB中MPT树的根节点进行数据还原即可。
来源:网络,HashKeyCapital整理
但是要是将这些数据变成可用的数据,就是将这写数据变成可用的查询字段,比如Blockheader包含的字段,BlockBody包含的字段,智能合约的Log的字段等,交易的Trsaction字段等,不同字段对应着不同类型。
邮储银行研究员:央行数字货币是经济社会发展的必然:邮储银行研究员娄飞鹏指出,相较于Libra以及PayPal,央行数字货币是货币数字化,背后有国家信用支撑,这是最大区别。央行数字货币出现是经济社会发展的必然,央行试水数字货币是为了优化金融基础设施,提高交易效率和宏观调控政策效果。此外,娄飞鹏提到,央行数字货币一般都是进行了充分的研究,充分考虑了潜在风险,推出也相对谨慎,需要做好公众引导,让公众对此有正确的认识。(北京商报)[2020/11/3 11:28:51]
DuneAnalytics提供的以太坊可查询数据字段
Log是非常重要的数据,因为以太坊的智能合约运行在EVM中,与外界隔离,EVM发生的事件就是通过Log传输到外面并记录在区块链上。实际上,像Etherscan这样的浏览器就是用过Parity客户端回放EVM,拿到智能合约交易的记录。
许多区块链的结构也可以存储非交易数据,但是容量有限。比如比特币的output中的OP_RETURN字段就可以存储不超过40字节的数据。限制的原因在于放大增加这部分会影响区块链的性能。以太坊的区块头也有Extra字段可以用来写入数据,如这样的:
来源:https://etherscan.io/block/12912176
区块链并不合适进行文件的存储,以IPFS作为存储底层和区块链结合的方式是比较认可的,比如数据储存在IPFS中,但是数据的Hash值存在以太坊的状态数据库中。
缓存
除了上链的交易外,以太坊还有一个保存在缓存中的数据,即mempool里面的排队数据。各个节点提交的交易都会被放入mempool交易池中,经过序列化、交易验证、过滤等步骤,最终选择合适的交易被矿工打包。交易池中有Queue和Pending两个map,用来存储未验证交易和已验证交易。Queue和Pending清理结束后,根据不同节点提交的交易,交易池要进行重构,防止出现分叉。
以前交易池的数据没有那么重要,但是随着智能合约的交易占比提升,交易的排序有了更多的经济意义,所以已经有项目开始做类似的工作。
趣味性强的的比如Txstreet
真实提供交易池数据接口的比如Blocknative
提供MEV解决方案的如Flashbot
访问
如何访问以太坊上的数据呢?一般是两种方式:
远程访问以太坊的节点
使用web3或者是JSON-RPC的方式。JSON-RPC是无状态的轻量级跨语言远程调用协议,文本传输的数据是JSON格式,传入和传回都是JSON格式。使用JSON-PRC,客户端发送PRC请求,就可以直接通过以太坊客户端,传回相应数据,比如使用对应字段,eth_gasPrice,eth_blocknumber等。
声音 | 日本央行副行长:央行数字货币广泛采用的前提是现金衰亡:据路透社报道,日本央行副行长宫井正义认为央行数字货币(CBDC)不会得到广泛的支持,取消现金将使公共基础设施安置不便,因此没有中央银行会这样做。他还补充说,若数字货币仍有负利率,人们仍会选择现金以减少开支,从而限制了央行数字货币的采用率。[2019/7/5]
来源:《深入理解以太坊》
如果不使用JSON-PRC方式,可以以太坊基金会提供的javascript库,即web3.js。它底层封装了RPC,使用起来和JSON-RPC方法一样,先创建一个web3对象,就可以使用库里提供的方法获取各种数据。比如,显示账户的余额:
varbalance_1=web3.eth.getBalance(web3.eth.accounts);console.log(balance_1.toString());
使用web3.js有一系列好处,在于他们有非常细致的模块:
web3-eth用来与以太坊区块链及合约的交互;
web3-shhWhisper协议相关,进行p2p通信和广播;
web3-bzzswarm协议相关;
web3-utils包含一些对DApp开发者有用的方法。
JavaScript库还可以通过读取ApplicationBinaryInterface(ABI)来直接和复杂的智能合约进行交互。ABI就是json形式的智能合约函数,因为智能合约是以solidity写的,json形式就可以通过JavaScript直接使用了。可以做的事情包括:向合约发送交易、估计使用EVM的gasfee、部署智能合约等等。
除了web3.js库外,还有ether.js库这样的javascript库。
使用web3.js的一个实例就是区块链浏览器:使用web3.js访问以太坊,获得的数据进行加工,通过中心化的接口加入非链上信息,然后循环调用web3.js查询链上数据,不断更新区块。
自己搭建节点,本地访问
自己搭节点就是自己将所有的以太坊全网数据全部下载下来,这需要大量的成本,以及安全技术,大部分用户和开发者都不会选用这样的模式去使用数据,一般会使用第一类方法或者直接从去找到更好的API服务商。
流转过程
以太坊的本质是交易驱动的状态机,一切变化皆由交易开始,变化的记录就是数据,API从头到尾串起了数据的流转。整个区块链数据流转的过程是这样的:
数据服务者类型
节点服务层
节点服务商可以说已经变成了以太坊运行的根基,比如最有名的Infura,本身运行以太坊节点并提供IaaS服务,省去了建立以太坊节点的过程,应用可以直接靠Web3访问。API成为管道,需要使用数据的话,对管道进行付费。
政策 | 欧洲议会经济和货币事务委员会:央行数字货币可创造更稳定的金融体系:据fstech消息,欧洲议会经济和货币事务委员会表示,虽然加密货币由于可扩展性的限制无法取代传统货币,但央行数字货币(CBDCs)可以创造一个更稳定的金融体系。一份由德国基尔世界经济研究所(Kiel Institute for the World Economy)成员撰写的论文也得出结论:CBDCs前景中可以作为目前部分储备银行体系的替代品。[2018/6/26]
底层数据服务和上层数据服务可以紧密合作,底层提供节点,上层提供数据的查询。比如Quicknode和DuneAnalytics的合作就是这样的例子。Dune为数据分析这提供一个可以应用SQL语句查询的数据库,还可以将数据可视化。在Dune出现之前,没有一个统一的数据格式可以将项目之间进行比较。Dune是Quicknode的主要客户,之前是使用自建的Parity节点。经常需要担心节点的内存泄露、磁盘空间不够等,而且成本较高,使用Quicknode后后大大降低了成本,每月成本1000美元降到每月35美元。此外Quicknode还提供类似CDN的服务,这可能是另外一个可以促进dapp应用体验的方向。还可以帮助访问mempool的数据。还可以提供私有节点。Quicknode有一些业内知名的用户,比如Nansen,PayPal,DappRadar,Chainlink。
Alchemy把区块链的底层架构进行梳理,可以提供典型的JSON-RPCAPI,还可以提供增强型的API,将日常请求简单化,简化开发人员的成本等。Alchemy对许多知名项目也进行了支持,比如CryptoKitties,Formatic,Bancor,Celer。
Infura,Alchemy和Quicknode均各自有一些知名用户:
处在这一赛道的还有CryptoAPI,Blockchair,Blockdaemon等。
查询索引服务层
数据服务再往上进一层就是应用类的服务,比如DuneAnalytics。区块链的数据虽然是公开透明的,但是缺乏工具的情况下,数据都是杂乱的,需要编写各类脚本来访问区块,遍历信息等,然后再进行格式化。
Dune先把区块链上的数据进行解析,然后填充到数据库中,变成一个PostgreSQQL的数据库。用户无需写脚本,只要会使用简单的SQL语句就可以进行查询。Dune起了一层将数据进行解析和格式化的作用,还提供了可视化工具。以太坊是键值数据库,Dune把它变成一个关系型数据库,SQL语句就是关系型数据库的接口。Dune提供的数据表有:
原始交易数据,提供区块链上所有活动的详细记录
项目级数据表,返回预处理后数据,用于解码的项目
抽象表,一种更高级的表,返回相关行业/主题的聚合数据。
泰国计划将区块链用于发行债券、央行数字货币和银行同业支付系统:泰国中央银行宣布将利用区块链技术改善服务并降低运营成本和加强安全性的计划,但将继续实施加密货币监管。泰国央行行长Veerathai Santiprabhob在本周一的“泰国金融技术展览会”上表示,该行计划将区块链技术实施到债券发行、央行数字货币和银行同业支付系统。[2018/3/20]
目前支持Ethereum和xDai两个链。以太坊的原始数据包括Block,Log,Transaction,Trace等四大类数据,Dune把他们解码成humanreadable的格式。
TheGraph提供了一个数据的搜索引擎,借助于GraphQLAPI,用户可以通过subgraph直接访问获得信息。而且TheGraph是去中心化的,受到很多DeFi项目的支持。其也提供一些列成型的subgraph,供代码能力一般的用户直接使用。
数据查询的流程遵循以下步骤:
Dapp通过智能合约上的交易将数据添加到以太坊。
GraphNode持续扫描以太坊的新块和它们可能包含的子图数据。
GraphNode在这些块中为子图查找以太坊事件,并运行映射处理程序。
去中心化的应用程序使用节点的GraphQL端点向GraphNode查询从区块链索引的数据。GraphNode反过来将GraphQL查询转换为对其底层数据存储的查询,以便获取该数据,并利用存储的索引功能。
Dapp将这些数据显示在终端用户的前端中。用户通过前端进行交易活动。
由于是去中心化的模式,TheGraph设计了GRT代币机制,以鼓励多方参与这个网络,涉及到委托人、索引者、策展人、开发者等四类。简要而言就是用户提出查询需求,索引者运行TheGraph节点,委托人向索引者质押GRT代币,策展人使用GRT来指引哪类子图有查询价值。
快速和节约资源:TheGraph的价值在于,他可以非常快速的用数据回答很具象的问题。他们举了个例子:对于CryptoKitties,可以查询在2018月之间1月到2月诞生的Kitties的所有者是谁的问题,这就需要遍历智能合约的birth事件,以及ownof方法。这样一个问题可能需要几天时间才可以。TheGraph的子图就是解决这些问题的索引。
类似于TheGraph的项目还有Covalent,提供了一个数据查询层,让工程师可以快速的以API的形式调用数据。一个简单的API就可以解决所有Covalent支持的链的数据。Covalent的数据集比较完备,可以多链多项目的一起查询,不需要很强的coding基础。Covalent也有自己的代币CQT,代币持有者可以用来抵押、投票。Covalent有两类endpoints,一类是区块链全体数据类型,如余额、交易、日志类型等;另一类是对某一个协议的endpoint,如查询AAVE的日志。Covalent最有特点的是跨多链查询,不想需要重新建立类似子图的索引,二是通过改变chainID就可以实现,query的可扩展性大大增强了。
SubQuery是专注于波卡生态的数据提供方,可以转换和查询Web3.0生态数据。SubQueary受到TheGraphh启发,也是使用的Facebook开发的graphQL语言。SubQuery面向所有的Polkadot和Substrate,并且提供一个开源SDK。相对于TheGraph,作为开放市场的SubQuery中的角色有三个:消费者、索引这和委托人。消费者发布任务,索引这提供数据,委托将空闲的SQT代币委托给索引者,激励他们更多的诚实参与工作。代币经济学和TheGraph类似。
如前所述Blocknative专注于实时交易数据的检索功能,提供了mempool的数据浏览器。最大的特点是突出了实时性,可以追踪交易相关的相应字段的结果,比如地址的追踪,内部交易的追踪,未成功交易的信息,被替换交易的信息比如被加速或者取消。
主要的产品有:mempool浏览器、网站SDK、Gas平台和模拟平台
Mem浏览器,通过API形式的可以订阅mempool,可以精确到任何一一个协议中,比如UniswapV3,Sushiswap的相关交易在mempool里面的表现
Gas平台,通过实时mempool数据来预测gasfee的工具
模拟平台功能,模拟mempool中检测可被执行的事务,并根据当前块高度对它们进行模拟,以显示它们的效果。只要符合Blocknative检测规则的交易进行模拟
SDK平台,各类网站可以通过javascript挂接Blocknative的API,来显示该网站产品的交易执行情况
Blocknative是专门针对mempool进行侦测的数据网站,因为mempool的数据和最终区块数据不会一致,其及时性和其他数据indexing比要求跟高。以太坊有一套复杂的系统来管理mempool中的交易,Blocknative提供的字段查询更加即时和精确。
数据分析层
这一层主要是提供一整套链上或者链下的数据集或API,方便于交易员进行分析。
链上和链下数据:链上数据的提供者直有很细分的rawdata,但对于非专业的认识不需要,其实很多用户需要的颗粒度并不是很高。这样的选手包括Coinmetics,Nomics,Glassnode,intotheBlock,CryptoQuant等。他们本身会拆分每一笔交易,但是提供的产品是一种交易的集合。还有一类是交易所数据的包括:Skew,Kaiko,CoinAPI。他们把各类交易所的交易数据进行集合,打包提供给交易者。包括最近崛起的Nansen,将标签的精细度加深,这也代表深颗粒度/面向特定领域的数据受到重视。
业务很传统:这些服务商体量都不大,经过几年的竞争,上面提到的这些名字已经初步跑出。他们基本都是中心化的项目,估值在几千万美元。业务逻辑容易理解,有传统的可比标的,数据合规做得好是很好的收购标的。
交易所也自然的参与其中:除了集中式的API供应,交易所本身也提供大量的数据。这部分是中心化交易所私有的,交易所把这部分数据半免费开放给外部,这属于整个区块链里最有价值的一类。对于trader来讲,orderbook和成交量比较有用,orderbook类似以太坊的内存池数据。而还有一类就是交易所钱包和链上交互的数据,代表了一定的得市场氛围。
数据的合规性还未受到重视:合规是很多服务商较少充实的层面,不仅公司合规,数据也要合规。Kaiko的数据广度好,而且颗粒度精细,拥有把一整套数据进行标准化的方法,满足传统机构投资人的合规要求,并符合FIGI标准,是认证的FIGI服务商。在未来机构进场的趋势下是一个很大的优势。
除此以外,还有各类DeFi分析面板如DefiPulse、Dfilima、DeBank等,都提供各自擅长的数据集。
数据服务商的价值提升仍然有很大空间
可靠性的提升
区块链数据越来越多是一个不可避免的趋势。但只有对数据进行分析,得出可操作的见解,才能利用数据的真正价值。区块链技术在数据分析领域扮演着两个截然不同的角色。首先,存储在区块链和区块链网络中的数据本身提供了丰富的信息来源。第二,通过在数据和派生分析模型中添加保证元素,区块链可以使可信的数据分析环境用于多方数据共享。
虽然规模在增加,但是数据质量还没有受到重视,数据质量即代表数据可用性的问题,数据质量需有以下标准:
一致性-数据没有矛盾且一致。
可追溯性-数据可审计,变动可追踪
可用性-能够被授权用户和应用程序进行检索。
合规性-数据符合标准、惯例或一些已经执行的规定
机密性-数据只能被授权用户访问
可信度-用户相信数据的真实性
区块链的数据就有很好的一致性、可追溯性、可用性,但是缺乏合规性、一定的私密性和可信性,尤其是面对监管的时候。用户相信一些数据,还是需要对方数据交叉验证,自己去链上数据交叉验证并不容易。这是未来需要解决的。
用户数据从里层走向表层
用户数和用户行为的爆发还有一个潜在结果,就是当这个级别开始逐渐接近互联网级别的时候,一些传统的数据挖掘方法就开始体现出价值。Web3.0上依然可以提供类似Web2.0的服务,而有些数据虽然是公开的,但却是只能被部分公司access到,者给予对用户行为分析和打标签的能力。一个比较大的gap是,现在用户的Web2.0和Web3.0身份还没有对应上,比如很多项目的用户,也非常积极的在Discord里面交流,他们和Web3.0的身份没有对应,这里面其实也会让很多机会。像Nansen就是把海量的钱包进行打标签,为数据用户提供真实的链上行为分析,尤其是可以看到那些巨鲸的活动。像Nansen这样的,未来针对用户数据的再挖掘,会让数据服务上的再上一个新台阶,比如Zerion、Zapper、InstaDapp这样的DeFi聚合层,也是可以很好发掘用户数据的平台。Covalent也提供了对钱包的查询功能。
价值的体现
数据的可靠性是一方面,价值捕获依靠的是可用性和认可。数据变得有值钱我们可以从这类项目的融资可以看出,2021年是数据真正开始体现价值的一年,以上提及的项目今年发生了多次融资:
Skew和Zabo直接被Coinbase收购,传统领域的资金也在参与。随着多链时代的开启,数据量会成倍的增加。多链时代对行业是个考验,但对于数据公司来说,则打开了宝藏之门。TheGraph提供的统计显示,2020年6月,每天只有3000万的query,到了2021年的6月份,每天的query达到了6.75亿。
未来数据市场的驱动力主要有四个:多链宇宙的成型,应用的增加和用户的增加,应用带来的数据需求的增加,用户行为复杂化。但是数据状态也不会爆炸下去,也会经过一波整合,和Gartner发展曲线类似。
本文链接:https://www.8btc.com/article/6672531转载请注明文章出处
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。