Baorui's random thoughts
Dune作为区块链数据仓库,已经颇具规模,目前占据市场主导地位。Dune的商业模式主要是封装所有的区块链数据来源,将结构化明细数据开放给下游使用,帮助开发人员在上面开发看板和完成分析。处理统一的明细数据外,Dune还开放了数据可视化能力,进一步增强了数据的可用性和直观性。
用户在上面的开发,也可以沉淀到平台,正如名字“Dune”,达到聚沙成塔的目的。用户的看板等产品可以被订阅和传播,后期可以进行空投或者组织DAO,前景不可估量。随着区块链数据的进一步丰富,Dune所承载的数据将会越来越多,满足各种数据需求。
下面介绍和记录一些常用数据,帮助大家搭建自己的数据产品。
用PostgreSQL进行数据计算,能一定程度上保证速度。后面如果区块链指数增加,性能会出现瓶颈。目前新的引擎(V2)集成了Spark,但效率仍需考验;
整体架构目前不太牵扯大数据引擎,直接用Data Pipeline触发实现传参,没有DAG图的概念,没有传统数仓的调度;
没有口径的概念,大家对数据指标各有定义,链与链之间难以直接比较,口径共识范围较小;
部分指标受限于性能可能无法实现,比如同环比还有不同的去重数据等;
存在大量长尾数据,数据治理等需要尽早介入,不然后期包袱越来越重;
下个周期,非金融数据的丰富,目前的架构一定会无法支持。
Dune开放一个函数解析接口,项目方可以根据自己的数据结构自主接入,相当于众包模式,让业务方自己准备好明细数据,接入Dune平台。同时,项目方的数据结构等发生变化,Dune没有义务和能力去监控,只能靠项目方自己来更新。
除了项目方自己接入以外,Dune还给了开发者提供了一套解码方式,方便简化一些复杂逻辑,相当于自建UDF。
目前没有统一的建模方式,基本围绕需求展开,需求全靠脑补,数据分析相对较初级。且不能和其他链下数据相配合,也无法获取用户行为数据,目前只能针对结果数据去处理。
block_time 区块时间
nonce 发送地址的交易计数:该账户为外部账户时候,表示该账户创建的交易序号,每做一次交易都会加1。该账户为合约账户时候,表示该账户创建的合约序号,每创建一次会加1。
index
success
from 发起地址
to 转入地址
value 转账金额
block_number
block_hash
gas_limit 本区块中所有交易消耗的Gas上限
gas_price 为交易付出的Gas价格
gas_used 本区块中所有交易使用的Gas之和
data 附加数据(合约调用input data)
hash
type 交易类型,表明该交易是合约创建交易还是一般的message-call 交易(NullTransaction -- 空交易;ContractCreation -- 创建合约的交易,直接忽略地址
access_list
max_fee_per_gas
max_priority_fee_per_gas
priority_fee_per_gas
block_time
sub_traces
tx_success
success
block_hash
block_number
tx_hash
from
value
gas
gas_used
tx_index
trace_address
type
address
code
call_type
input
output
to
refund_address
error
contract_address
topic1
topic2
topic3
topic4
data
tx_hash
block_hash
block_number
block_time
index
tx_index
以ethereum链为例,下图是转移token的过程产生的数据流转。假设现在要在链上转移USDT,就会调用transfer函数,指定接收者和转移的金额,对此条交易进行签名,那么此时链上就会产生calldata数据,dune将这个数据存在了ethereum.transaction表中,这张表主要包含以下字段~from(发送交易的人的地址/签名者),to(合约交互的地址,现在转移的是USDT,那么就是USDT的合约地址),success(这条交易是成功?还是失败?),value(表示的是转移的ETH数值,那现在转移的是USDT,没有转移ETH,所以在这条交易中value的值为0),gas_column(主要记录交易的gas使用情况,有gas limit,gas used,gas price),hash(在链上进行的每次行为都会产生一个唯一的transaction hash,这个值也是用来多表关联的唯一主键),blocknumber,blocktime主要记录交易发生的区块和时间~
转移USDT的合约调用过程,也称为内部交易/子交易,数据存在了ethereum.traces表中。
交易执行的日志数据,包括签名者、接收者、topic、转账金额等等存在ethereum.logs表中。
Dune作为区块链数据仓库,已经颇具规模,目前占据市场主导地位。Dune的商业模式主要是封装所有的区块链数据来源,将结构化明细数据开放给下游使用,帮助开发人员在上面开发看板和完成分析。处理统一的明细数据外,Dune还开放了数据可视化能力,进一步增强了数据的可用性和直观性。
用户在上面的开发,也可以沉淀到平台,正如名字“Dune”,达到聚沙成塔的目的。用户的看板等产品可以被订阅和传播,后期可以进行空投或者组织DAO,前景不可估量。随着区块链数据的进一步丰富,Dune所承载的数据将会越来越多,满足各种数据需求。
下面介绍和记录一些常用数据,帮助大家搭建自己的数据产品。
用PostgreSQL进行数据计算,能一定程度上保证速度。后面如果区块链指数增加,性能会出现瓶颈。目前新的引擎(V2)集成了Spark,但效率仍需考验;
整体架构目前不太牵扯大数据引擎,直接用Data Pipeline触发实现传参,没有DAG图的概念,没有传统数仓的调度;
没有口径的概念,大家对数据指标各有定义,链与链之间难以直接比较,口径共识范围较小;
部分指标受限于性能可能无法实现,比如同环比还有不同的去重数据等;
存在大量长尾数据,数据治理等需要尽早介入,不然后期包袱越来越重;
下个周期,非金融数据的丰富,目前的架构一定会无法支持。
Dune开放一个函数解析接口,项目方可以根据自己的数据结构自主接入,相当于众包模式,让业务方自己准备好明细数据,接入Dune平台。同时,项目方的数据结构等发生变化,Dune没有义务和能力去监控,只能靠项目方自己来更新。
除了项目方自己接入以外,Dune还给了开发者提供了一套解码方式,方便简化一些复杂逻辑,相当于自建UDF。
目前没有统一的建模方式,基本围绕需求展开,需求全靠脑补,数据分析相对较初级。且不能和其他链下数据相配合,也无法获取用户行为数据,目前只能针对结果数据去处理。
block_time 区块时间
nonce 发送地址的交易计数:该账户为外部账户时候,表示该账户创建的交易序号,每做一次交易都会加1。该账户为合约账户时候,表示该账户创建的合约序号,每创建一次会加1。
index
success
from 发起地址
to 转入地址
value 转账金额
block_number
block_hash
gas_limit 本区块中所有交易消耗的Gas上限
gas_price 为交易付出的Gas价格
gas_used 本区块中所有交易使用的Gas之和
data 附加数据(合约调用input data)
hash
type 交易类型,表明该交易是合约创建交易还是一般的message-call 交易(NullTransaction -- 空交易;ContractCreation -- 创建合约的交易,直接忽略地址
access_list
max_fee_per_gas
max_priority_fee_per_gas
priority_fee_per_gas
block_time
sub_traces
tx_success
success
block_hash
block_number
tx_hash
from
value
gas
gas_used
tx_index
trace_address
type
address
code
call_type
input
output
to
refund_address
error
contract_address
topic1
topic2
topic3
topic4
data
tx_hash
block_hash
block_number
block_time
index
tx_index
以ethereum链为例,下图是转移token的过程产生的数据流转。假设现在要在链上转移USDT,就会调用transfer函数,指定接收者和转移的金额,对此条交易进行签名,那么此时链上就会产生calldata数据,dune将这个数据存在了ethereum.transaction表中,这张表主要包含以下字段~from(发送交易的人的地址/签名者),to(合约交互的地址,现在转移的是USDT,那么就是USDT的合约地址),success(这条交易是成功?还是失败?),value(表示的是转移的ETH数值,那现在转移的是USDT,没有转移ETH,所以在这条交易中value的值为0),gas_column(主要记录交易的gas使用情况,有gas limit,gas used,gas price),hash(在链上进行的每次行为都会产生一个唯一的transaction hash,这个值也是用来多表关联的唯一主键),blocknumber,blocktime主要记录交易发生的区块和时间~
转移USDT的合约调用过程,也称为内部交易/子交易,数据存在了ethereum.traces表中。
交易执行的日志数据,包括签名者、接收者、topic、转账金额等等存在ethereum.logs表中。
Baorui's random thoughts
Share Dialog
Share Dialog

Subscribe to baorui.eth

Subscribe to baorui.eth
<100 subscribers
<100 subscribers
No activity yet