先决条件
访问以太坊链上数据
使用架构设置QuestDB
该数据将在QuestDB中建立索引,以利用其高性能的时间序列数据。
$ docker run -p 9000:9000 -p 8812:8812 questdb/questdb
导航至Web控制台,localhost:9000然后为块创建表: create table blocks
(
timestamp string,
number bigint,
hash string,
parent_hash string,
nonce string,
sha3_uncles string,
logs_bloom string,
transactions_root string,
state_root string,
receipts_root string,
miner symbol,
difficulty long,
total_difficulty long,
size long,
extra_data string,
gas_limit long,
gas_used long,
transaction_count long
);
以及用于token_transfers;
create table token_transfers
(
token_address symbol,
from_address symbol,
to_address symbol,
value float,
transaction_hash string,
log_index long,
block_timestamp string,
block_number long,
block_hash string
);
刷新表格列表后,您应该看到两个都已填充: 现在我们准备将以太坊数据流式传输到我们的数据库。 流以太坊链上数据 区块链ETL提供了一个Python脚本,可从Infura中提取数据并将其流式传输到Google Pub / Sub或Postgres。现在,我们需要先安装ethereumetl[streaming]:
$ pip3 install "ethereum-etl[streaming]"
现在,我们需要指定我们的QuestDB凭据以及Infura API详细信息。
Postgres输出采用以下形式,postgresql+pg8000://<user>:<password>@<host>:<port>/<database>并且API URL通过进行指定–provider-uri。我们还可以指定start-block数字(或者从一开始就省略下载所有以太坊数据),以及我们感兴趣的模式: $ ethereumetl stream --start-block 600000 -e block,token_transfer --output postgresql+pg8000://admin:quest@localhost:8812/qdb --provider-uri https://mainnet.infura.io/v3/<my-project-id>
当数据开始传输时,您可以在QuestDB中看到它的索引: 该脚本会自动将最后处理的块存储在中last_synced_block.txt。如果要稍后运行脚本,则可以删除–start-block脚本中的标志。 探索数据和改进
QuestDB提供了一些内置的可视化功能。例如,如果您想gas_used由矿工看,则可以进入下面Chart并将其设置为以下内容: 以太坊ETL脚本当前以RFC3339格式存储时间戳数据,而QuestDB期望从Unix Epoch开始有符号偏移。这就是为什么我们的表架构为时间序列字段使用字符串而不是日期或时间戳的原因。
为了获得更高的性能,我们可以先修改ETL脚本,或者先将其流式传输到Cloud Pub / Sub,然后转换数据,然后再流式传输到QuestDB。
另外,我们可以to_timestamp()在提取数据后使用QuestDB上的功能来修改表。例如,要转换blocks表以使用QuestDB理解的正确时间戳,我们可以执行以下操作:
SELECT to_timestamp(timestamp, 'yyyy-MM-dd HH:mm:ss')
AS time, number, miner, difficulty, size, gas_limit, gas_used
FROM (blocks
ORDER BY timestamp);、
最后,如果您要流式传输合同或令牌数据,则需要先将function_sighashes字段展平,因为QuestDB本身还不支持Array类型。
有了这些数据,现在您就可以计算出流行的信号,例如“网络价值与交易比率”,或者在Coin Metrics或Glassnode上提供的重复分析。 作者:链三丰,来源:区块链研究实验室
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。