主页 > imtoken最新版app > 教程:如何从以太坊节点提取链上数据

教程:如何从以太坊节点提取链上数据

imtoken最新版app 2023-03-11 07:03:32

作为最著名的区块链索引协议并在 Web3 中带来了事实上的开放 API 标准,The Graph 是一个完整的 ETLQ(Q for Query)流程的开箱即用解决方案,具有一组预定义的数据规则。被提取,如何转换,加载到哪里,以什么格式设计查询。 它在大多数情况下为开发人员提供了便利,因为它只需要开发人员设计他们想要存储的丰富数据的实际模式并对处理函数进行编码,但这种方法限制了可访问数据的范围,限制了选择观察工具的灵活性以太坊全节点,记录和监控数据。

1.jpg

来源:

在决定使用平台即服务并自行构建或启动许多不同的组件时,这是一个典型的权衡。 好消息是一些底层的组件开发似乎不再需要了,但仍然给了我们上面提到的所有必要的灵活性!

按照惯例,如果不将这些构建块付诸实践,我们就无法进行太多分析。 如果不正确设置我们尝试过的开发工具,就不可能进行大量练习。 有时(大部分时间)我们会遇到很多问题以太坊全节点,无论您的记录和研究多么充分。 特别是在像 Web3 这样快节奏的领域。 尤其是在合并之后。

2.jpg

现在转到这篇文章中更枯燥和实用的部分:关于如何使用 Firehose 与共识客户端一起启动块数据提取的指南,在新的 PoS 世界中,共识客户端需要由执行客户端运行。

提取教程

在以太坊过渡到权益证明共识之前,只需按照文档中的步骤设置 Firehose 实例即可开始提取数据。 然而,现在在最新版本的 Geth 中,“似乎需要一个共识客户端来正确同步链,即使对于合并之前发生的块也是如此”。

先决条件

在我们开始实际步骤之前,您可能需要检查以下内容:

垃圾填埋气

让我们为指南创建一个新目录。

sitecsdn.net 以太坊和以太币的关系_以太坊全节点_以太坊全节点钱包

$ mkdir firetorch; cd firetorch

1.建立共识客户端-Lighthouse。

我们建议使用最新的标记版本,指南中使用的版本显示在命令中。

$ wget -O lghths.tar.gz https://github.com/sigp/lighthouse/releases/download/v3.2.1/lighthouse-v3.2.1-x86_64-unknown-linux-gnu.tar.gz
$ tar -xf lghths.tar.gz
$ rm -rf lghths.tar.gz

通过系统范围的调用使灯塔可访问,即“安装”它。

$ sudo mv lighthouse /usr/local/bin/

以太坊全节点_以太坊全节点钱包_sitecsdn.net 以太坊和以太币的关系

2.设置执行客户端Geth,使用Firehose reader进行检测。

发布(对于以太坊主网,我们使用这种格式的最新标记版本:geth-v1.xx.xx-fh2.1)。

$ wget -O geth_linux https://github.com/streamingfast/go-ethereum/releases/download/geth-v1.10.26-fh2.1/geth_linux
$ chmod +x geth_linux
$ sudo mv geth_linux /usr/local/bin

3.克隆示例配置

我们将使用 StreamingFast 团队提供的准备好的脚本。 除了这些脚本之外,Firehose 本身还有一些(几乎)现成的配置。

因此,我们克隆他们的 repo,然后转到那里的特定目录,并清除所有不需要的文件(为了节省存储空间,我们将需要它来存储块文件)。

$ git clone --depth 1 --branch v1.2.0 https://github.com/streamingfast/firehose-ethereum.git
$ mv firehose-ethereum/devel/sync-mainnet/* .
$ rm -rf firehose-ethereum/

以太坊全节点_以太坊全节点钱包_sitecsdn.net 以太坊和以太币的关系

此存储库还包含一个 fireeth 二进制文件,但我们建议用户自行跟踪并单独下载所需版本。

4.设置流水线

发布

$ wget -O fireeth.tar.gz https://github.com/streamingfast/firehose-ethereum/releases/download/v1.2.0/fireeth_1.2.0_linux_x86_64.tar.gz
$ tar -xf fireeth.tar.gz
$ rm -rf fireeth.tar.gz
$ sudo mv fireeth /usr/local/bin/

5.调整示例配置

我们克隆的 sync-mainnet.yaml 配置文件已准备好进行首次启动,现在还剩下一个小细节:我们需要指定我们的检测执行节点可通过系统范围的调用使用,就像在第 2 步中所做的那样. 只需运行以下命令:

$ echo $'\n    # Update the reader-node-path to reference the geth binary for the chain and OS being targeted (if custom node client is needed)\n    reader-node-path: geth_linux' >> sync-mainnet.yaml

6.启动共识客户端

以太坊全节点_sitecsdn.net 以太坊和以太币的关系_以太坊全节点钱包

为了更快地同步信标标头,我们从公共检查点引导共识客户端数据库(我们可以从我们信任的任何节点运营商那里获得一个)。

$ CHECKPOINT_SYNC_URL=https://sync-mainnet.beaconcha.in/ ./consensus.sh

出于某种原因,README 指南建议我们“等待共识客户端正确同步,然后再开始执行客户端同步”。 考虑到这一点,我们试图修复 Lighthouse 无法通过连接拒绝状态进行引擎检查的错误。

出现这种情况是因为 Lighthouse 实际尝试通过 Engine API 端口访问 Geth,发现 Geth 没有响应,因此返回错误。

因此,我们建议将 lighthouse 置于后台或打开另一个终端选项卡并立即进行下一步。

此外,由于我们正在运行一个不参与质押的非验证信标节点,并且只是在试验数据摄取,我们正在使用社区贡献的标志来消除不相关的错误消息。 编辑 consensus.sh 脚本以在灯塔启动命令的末尾添加这两个标志:

exec "$lighthouse"\
    beacon\
    --datadir="$ROOT/cs-data"\
    --debug-level=info\
    ...

以太坊全节点钱包_sitecsdn.net 以太坊和以太币的关系_以太坊全节点

--execution-jwt="$ROOT/jwt.txt" "$@"\ --disable-deposit-contract-sync\ --execution-timeout-multiplier 5

我们可以在CLI中输入lighthouse bn --help ;) 来阅读。

7. 启动 Firehose(并通过扩展检测到 Geth 节点)

$ fireeth -c sync-mainnet.yaml start

(我们没有使用提供的 start.sh 脚本从目录启动 fireeth 实例,因为我们在第 4 步中自己设置了二进制文件)

我们应该能够看到信标头的同步过程,并开始提取块并将它们合并到文件中。

我们刚刚开始使用我们自己的 Firehose 实例提取块数据,支持最新版本的共识和执行客户端,并准备开始使用 Eth Panda 观察 PoS 网络。

3.jpg

来源:@blocktorch/how-to-extract-on-chain-data-from-an-ethereum-node-6b710399e8b3

关于

ChinaDeFi - ChinaDeFi.com 是一个研究驱动的 DeFi 创新机构,我们也是一个区块链开发团队。 每天从全球500多个优质信息源的近900条内容中,寻找更深入、更系统的内容,以最快的速度同步到中国市场,提供决策支持辅助材料。

本文首发于: