如何检索整个旧的以太坊区块链数据以进行数据处理
How can I retrieve the entire old ethereum blockchain data for data processing
我想获得“整个”以太坊区块链数据,而不仅仅是来自几套智能合约。我所说的数据是指交易详细信息,包括生成的日志。
我可以使用 Infura 获取实时数据,但要获取所有旧数据几乎是不可能的,因为我不得不做太多的网络请求,所以成本太高了。
我需要旧数据,因为我正试图从“仅附加”以太坊交易数据中创建一个索引数据库,以便我可以轻松查询它。
更准确地说,我想检索所有NFT(ERC721,ERC1155)转账交易及其日志。这样我就可以进行以下查询以及更多操作:特定钱包拥有的所有 NFT,特定 NFT 代币的转账历史。
您可以通过
- Run your own node
- 从您的节点查询数据 - 在本地它很快
- 对于某些数据,您可能需要 运行 节点 in archival mode
您可以在本地节点上使用与在 Infura 上使用的相同的 Web3/JSON-RPC API。
我发现了两个解决方案。
- 就像@Mikko 提到的,您可以运行 自己的节点。它似乎并不像我预期的那么复杂。您可以搜索“geth”,然后只需将此节点连接到您的 web3 库,就像连接到 Infura 一样。
但我还没有尝试过这个并找到了更好的解决方案。
- Google cloud Bigquery 的 public 数据集包含所有旧的以太坊数据。 Bigquery 是 Google 的数据仓库服务,您可以在其中使用简单的 SQL 来查询您的数据。它每天都会添加新数据。我已经从它的控制台测试了一些简单的查询,结果很好。
我计划从 bigquery 获取我需要的所有旧数据并将其存储在我自己的数据库中,然后从 infura 获取实时数据。现在我不必从 infura 获取所有旧数据,价格变得非常实惠。
你可以检查这个https://github.com/blockchain-etl/ethereum-etl
它是一个 Python 库,用于以太坊区块、交易、ERC20 / ERC721 代币、转账、收据、日志、合同和内部交易的 ETL(提取、转换和加载)作业。
例如,您可以 运行 cli 命令
> ethereumetl export_token_transfers --start-block 0 --end-block 500000 \
--provider-uri file://$HOME/Library/Ethereum/geth.ipc --output token_transfers.csv
您可以通过特定区块号导出ERC20和ERC721转账,方便您查询旧数据。
数据也可在 Google BigQuery 中获得。
我想获得“整个”以太坊区块链数据,而不仅仅是来自几套智能合约。我所说的数据是指交易详细信息,包括生成的日志。
我可以使用 Infura 获取实时数据,但要获取所有旧数据几乎是不可能的,因为我不得不做太多的网络请求,所以成本太高了。
我需要旧数据,因为我正试图从“仅附加”以太坊交易数据中创建一个索引数据库,以便我可以轻松查询它。
更准确地说,我想检索所有NFT(ERC721,ERC1155)转账交易及其日志。这样我就可以进行以下查询以及更多操作:特定钱包拥有的所有 NFT,特定 NFT 代币的转账历史。
您可以通过
- Run your own node
- 从您的节点查询数据 - 在本地它很快
- 对于某些数据,您可能需要 运行 节点 in archival mode
您可以在本地节点上使用与在 Infura 上使用的相同的 Web3/JSON-RPC API。
我发现了两个解决方案。
- 就像@Mikko 提到的,您可以运行 自己的节点。它似乎并不像我预期的那么复杂。您可以搜索“geth”,然后只需将此节点连接到您的 web3 库,就像连接到 Infura 一样。
但我还没有尝试过这个并找到了更好的解决方案。
- Google cloud Bigquery 的 public 数据集包含所有旧的以太坊数据。 Bigquery 是 Google 的数据仓库服务,您可以在其中使用简单的 SQL 来查询您的数据。它每天都会添加新数据。我已经从它的控制台测试了一些简单的查询,结果很好。
我计划从 bigquery 获取我需要的所有旧数据并将其存储在我自己的数据库中,然后从 infura 获取实时数据。现在我不必从 infura 获取所有旧数据,价格变得非常实惠。
你可以检查这个https://github.com/blockchain-etl/ethereum-etl 它是一个 Python 库,用于以太坊区块、交易、ERC20 / ERC721 代币、转账、收据、日志、合同和内部交易的 ETL(提取、转换和加载)作业。
例如,您可以 运行 cli 命令
> ethereumetl export_token_transfers --start-block 0 --end-block 500000 \
--provider-uri file://$HOME/Library/Ethereum/geth.ipc --output token_transfers.csv
您可以通过特定区块号导出ERC20和ERC721转账,方便您查询旧数据。
数据也可在 Google BigQuery 中获得。