用python从以太坊区块链中提取信息

2024-09-29 23:23:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望对以太坊区块链做一些分析,特别是寻找可用哈希能力和交易确认时间之间的数据相关性。然而,我无法理解如何下载区块链或从中提取交易和工作者信息。在

理想情况下,我会下载区块链,然后使用python脚本将区块链中的相关信息提取到CSV文件或类似的文件中?在

关于如何实现这一点有什么建议吗?在


Tags: 文件csv数据脚本信息时间情况能力
3条回答

以下是如何将以太坊数据导出到csvhttps://medium.com/@medvedev1088/exporting-and-analyzing-ethereum-blockchain-f5353414a94e的指南

{{{cd2>输出到^{cd2}中。在

blocks.csv

Column                  | Type               |
            |          -
block_number            | bigint             |
block_hash              | hex_string         |
block_parent_hash       | hex_string         |
block_nonce             | hex_string         |
block_sha3_uncles       | hex_string         |
block_logs_bloom        | hex_string         |
block_transactions_root | hex_string         |
block_state_root        | hex_string         |
block_miner             | hex_string         |
block_difficulty        | bigint             |
block_total_difficulty  | bigint             |
block_size              | bigint             |
block_extra_data        | hex_string         |
block_gas_limit         | bigint             |
block_gas_used          | bigint             |
block_timestamp         | bigint             |
block_transaction_count | bigint             |

transactions.csv

^{pr2}$

erc20_transfers.csv

Column              |    Type     |
          |       
erc20_token         | hex_string  |
erc20_from          | hex_string  |
erc20_to            | hex_string  |
erc20_value         | bigint      |
erc20_tx_hash       | hex_string  |
erc20_block_number  | bigint      |

启动进程时提供RPC(RPC)选项。确保你拥有整个区块链。rpc在上启动服务器进程本地主机:8545。您可以根据需要通过rpcport选项更改端口。在

只需将httpget请求(通过CURL或一些HTTP模块)发送到本地主机:8545和获取JSON格式的必要信息。您还可以使用web3.js或web3.py api,它们与区块链接口,基本上在流程打开的控制台上执行。在

https://github.com/ethereum/wiki/wiki/JSON-RPC

标准接口

标准以太坊节点可以公开^{} interface。它通常可以通过本地套接字(aka IPC)或HTTP进行访问,这取决于您拥有的节点以及如何启动它。在

从命令行中,要从geth获取5000000块的统计信息:

$ curl -X POST  data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x4c4b40", false],"id":1}' -H "Content-Type: application/json" http://localhost:8545/
{'id': 1,
 'jsonrpc': '2.0',
 'result': {'difficulty': '0x90c21c56929b2',
  'extraData': '0x743132',
  'gasLimit': '0x7a121d',
  'gasUsed': '0x79fac5',
  'hash': '0x7d5a4369273c723454ac137f48a4f142b097aa2779464e6505f1b1c5e37b5382',
  'logsBloom': '0x8584009c4dd8101162295d8604b1850200788d4c81f39044821155049d2c036a8a00d07f2a10383180984400b0290ba00293400c1d414a5018104a010220101909b918c601251215109755b90003c6a2c23490829e319a506281d9641ac39a840d3aa03e4a287900e0c09641594409a2010543016e966382c02040754030430e2d708316ec64008f0c0100c713b51f8004005bd48980143e08b22bf2262365b8b2658804a560f1028207666d10288144a5a14609a5bcb221280b13da2f4c8800d8422cc27126a46a04f08c00ca9004081d65cc75d10c62862256118481d2e881a993780808e0a00086e321a4602cb214c0044215281c2ccbca824aca00824a80',
  'miner': '0xb2930b35844a230f00e51431acae96fe543a0347',
  'mixHash': '0x94cd4e844619ee20989578276a0a9046877d569d37ba076bf2e8e34f76189dea',
  'nonce': '0x4617a20003ba3f25',
  'number': '0x4c4b40',
  'parentHash': '0xcae4df80f5862e4321690857eded0d8a40136dafb8155453920bade5bd0c46c0',
  'receiptsRoot': '0x6db67db55d5d972c59646a3bda26a39422e71fe400e4cdf9eb7f5c09b0efa7d0',
  'sha3Uncles': '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347',
  'size': '0x5dd1',
  'stateRoot': '0x6092dfd6bcdd375764d8718c365ce0e8323034da3d3b0c6d72cf7304996b86ad',
  'timestamp': '0x5a70760d',
  'totalDifficulty': '0x7be181d83d2d77d052',
  'transactions': ['0x569c5b35f203ca6db6e2cec44bceba756fad513384e2bd79c06a8c0181273379',
   ...
   '0xaa2703c3ae5d0024b2c3ab77e5200bb2a8eb39a140fad01e89a495d73760297c'],
  'transactionsRoot': '0x91dfce7cc2174482b5ebcf6f4beedce854641982eadb1a8cf538e3206abf7836',
  'uncles': []}}

Python API

有几个“web3”库可用于不同的语言,每个库都在json-rpc上提供一个抽象层。Web3.py是以太坊基金会资助的python接口。在

使用Web3.pyv4 beta(与pip install pre web3一起安装),您可以通过以下方式获得相同的信息:

^{pr2}$

注意:我是Web3.py的维护者

相关问题 更多 >

    热门问题