本篇我们探讨一下区块链世界里的数据供应,以及以数据为核心产品的服务商如何形成一定的市场规模,即他们如何产生价值和捕获价值的。
区块链本质上是一个分布式数据库,虽然有着公开、透明、可追溯等特点,但是直接访问或者获取这写数据并不便利,需要特定的接口、进行格式化、以及转变保存类型。大部分区块链使用的是键-值类型的数据库,方便多写少读,而普通用户比较习惯的是关系型数据库。关系型数据库可以用像SQL那样的查询语句来进行查询,像DuneAnalytics这样的服务商就是把链上数据变成关系数据库,方便调取,这中间的流程还包含了数据的存储和再加工的过程。
一般有两类有价值的数据:
链上数据:链相关数据、转账、普通交易、智能合约事件等,这类数据被分布式数据库所维护,可靠性由共识保证。即区块链的核心数据。
非链上数据:与链上相关,准确性依靠中心化或去中心化的节点验证的数据,如交易所、预言机等,类似于Web2.0服务。交易所数据介于链上链下之间,是链上数据的链下计算,然后经链上验证,也产生了很大的数据量。
我们认为数据市场需求爆发的驱动来自于:
多链宇宙的成型
应用的增加和用户的增加
应用带来的数据需求的增加
用户行为复杂化
数据市场参与者
交易者
交易者根据各类数据信息判断可交易的方向,比如观察某条链的活跃程度,某个DEX的成交情况、某个借贷协议的借出贷款等。他们会需要有可靠的数据源,一些高级用户会使用付费的数据服务。
数据的提供者
被动的产出方:如区块链的节点,交易所,普通用户主动地产出方:API提供者,数据搜索引擎,定制化数据包。他们往往是原始数据的加工者。
开发者
开发者查询、调用链上数据,与区块链交互。由于节点服务商的存在,开发者不需要搭建自己的节点,就可以直接和链上进行交互。众多dApp以及第三方钱包应用都依赖于Infura这样的节点服务商,与区块链进行交互。开发者的需求来自于:网络状态监控、交易执行状况监控、稳定的执行环境、市场和竞品趋势信息、产品和市场策略指定、根据客户偏好提升产品性能等。
需要不停监听网络状态的应用和中间
比如借贷协议需要监控账户状态,一些自动化中间件要及时反馈价格变化等。
区块链数据结构、存储、和访问-以Ethereum为例
键值数据库
区块链本质上是个数据库,和比较为大众熟悉关系型数据库不同,以太坊使用的键值类型数据库,其底层基于Google的LevelDB,适用于写多读少的场景。关系型数据库历经多年发展,被程序员所接受,也非常利于普通人理解。关系型数据库的结构是一系列的表。
国务院办公厅卢向东:区块链等新技术与政府业务深入融合:10月12日,第三届数字中国建设峰会数字政府分论坛在福州召开。国务院办公厅电子政务办公室主任卢向东表示,党中央、国务院作出推进数字政府建设的重要决策部署,意义重大,影响深远。目前推进数字政府建设已经具备良好的支撑条件。当前,5G网络覆盖范围不断拓展,云计算统筹优化基础设施资源,物联网、大数据、人工智能、区块链等新技术与政府业务深入融合,新一代信息技术为数字政府建设提供了强有力的技术保障。(经济参考报)[2020/10/15]
键值数据库是新发展出来的非关系型数据库,结构相对简单:键作为唯一的标识符,值存储数据,值可以是任何东西,不需要遵循表的结构,灵活多变且扩展性强。键值和关系数据库相比扩展性好,可以提供大数据量的读写,常被用于缓存。大部分分布式数据库采用键值数据库,依靠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字段等,不同字段对应着不同类型。
声音 | 河北辛集副市长:大力推进“区块链+智能制造”的深入融合:12月27日,河北省钢铁行业“区块链+智能制造”主题峰会在石家庄辛集市举行,峰会由河北省冶金行业协会、中国电信河北分公司、长城新媒体集团主办。辛集市副市长牛军波表示,冶金行业的发展对于辛集市的经济建设起到举足轻重的作用,目前钢铁行业的自动化、信息化的发展已具有良好的基础。大力推进“区块链+智能制造”的深入融合,可以为钢铁行业带来全面的提升,在提高企业竞争力、打造优质产品方面提供有力支持。(长城网)[2019/12/27]
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等。
声音 | 北邮教授:5G的本质是无限连接 将促进区块链等技术的深入发展:据澎湃新闻消息,5月26日下午,2019中国国际大数据产业博览会举行“5G重构数字社会基础生态”高端对话,中国信息经济学会副会长、北京邮电大学教授吕廷杰在会上表示,5G循序渐进的发展一定会带来一个完全不同的社会,它会使社会的效率更高,因此也会涉及到更大的安全问题。他指出,5G的本质是无限连接,连接产生了高价值的关键数据,未来的大数据会有全新的飞跃,将促进人工智能、区块链等技术的深入发展,生产很多新的架构和生态,必将重构数字经济的生态,在未来5-8年会渗透到生活的方方面面,也将改变10年以后的整个社会的游戏规则。[2019/5/26]
来源:《深入理解以太坊》
如果不使用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从头到尾串起了数据的流转。整个区块链数据流转的过程是这样的:
动态 | 南开大学新设金融科技研究中心 对区块链等科研课题进行深入研究:7月13日,南开大学金融学院金融科技研究中心在天津成立。该中心内设南开大学金融学院金融科技创新实验室,对金融以及人工智能、大数据、区块链等科研课题进行深入研究,并推动与在金融科技领域全球领先的机构和专家广泛合作,培养出优秀的研究人才和产业人才。[2018/7/13]
数据服务者类型
节点服务层
节点服务商可以说已经变成了以太坊运行的根基,比如最有名的Infura,本身运行以太坊节点并提供IaaS服务,省去了建立以太坊节点的过程,应用可以直接靠Web3访问。API成为管道,需要使用数据的话,对管道进行付费。
底层数据服务和上层数据服务可以紧密合作,底层提供节点,上层提供数据的查询。比如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提供的数据表有:
SYNC 2018区块链系列活动会议于新加坡召开 MDT与诸多领域大咖进行深入探讨:3月9日,由科技媒体Pingwest举办的SYNC 2018区块链系列活动会议于新加坡召开。MDT量数代表黄何,火币全球运营总监Herbert,ODYSSEY/OBike项目负责人Sophie,新加坡星展银行DBS私人银行副总监于珊珊一同前来参会。在会议现场MDT量数与银行、虚拟货币交易所,通过不同立场探讨了虚拟货币作为货币形态在科技领域的展望。[2018/3/12]
原始交易数据,提供区块链上所有活动的详细记录
项目级数据表,返回预处理后数据,用于解码的项目
抽象表,一种更高级的表,返回相关行业/主题的聚合数据。
目前支持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转载请注明文章出处
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。