
Python调用Google Bard API 完整指南
Etherscan API 是一种通过代码以编程方式与 Etherscan 功能交互的方式。
Etherescan 是以太坊区块链浏览器,用于获取以太坊区块链上所有交易的数据。
Etherscan API 主要用于通过代码获取交易、区块、钱包地址、智能合约和其他链上数据。
Etherscan API 完全免费,但它也提供高级订阅计划,提供扩展的速率限制、升级的客户支持以及对一些“特殊”端点的访问。
有三种可能的高级订阅计划,您可以在下图中推断出它们之间的主要区别:
Etherscan API 可以被一些替代方案替代,它们如下:
要开始使用 Etherscan API,您需要在 Etherscan 上创建一个帐户并获取 API 密钥。要创建帐户,请转到此链接并点击屏幕右上角的“登录”按钮。
之后,点击登录框下方的蓝色“注册”按钮。要注册新账户,您需要提供电子邮件地址并创建唯一的用户名和密码。
完成后,点击蓝色的“创建帐户”按钮。之后,转到您提供的电子邮件地址并打开确认电子邮件。确认后,登录您新创建的帐户。
登录后,导航到“API-KEY”下拉菜单,然后单击蓝色的“+添加”按钮来创建一个新的API密钥,如下图所示:
命名您的 API 密钥,然后您就可以开始使用和探索它了,这将在以下文章标题中展示。
要使用 Etherscan API 获取单个地址的以太币余额,您需要使用提供的地址和 API 密钥向帐户模块和余额操作端点发出请求。
为此,我们将使用 Python 请求库,并且为了增加趣味性,我们将使用可在网上找到的已知鲸鱼地址:
requests.get('https://api.etherscan.io/api?module=account&action=balance&address=0x4976a4a02f38326660d17bf34b431dc6e2eb2327&tag=latest&apikey=A1C15S3AXQHQ7PVVDX63VVK2IBAECS448Z').json()
{'status': '1', 'message': 'OK', 'result':'29724721687169089009293'}
要使用 Etherscan API 获取正常交易列表,您需要向帐户模块和 txlist 操作端点发送请求,每次调用将返回最多 10k 条记录。
此端点将与 pandas 库一起使用来创建数据框。由于端点有点混乱,我将以更清晰的方式展示它们,调用它们的方式与我们之前的示例相同。
https://api.etherscan.io/api
?module=account
&action=txlist
&address=0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a
&startblock=0
&endblock=99999999
&page=1
&offset=10
&sort=asc
&apikey=YourApiKeyToken
这将存储在数据变量内部,我们将响应转换为 pandas 数据框并以转置的方式打印出最后 5 个点以查看所有返回参数。
data = pd.DataFrame(data['result'])
data.tail().T
要使用 Etherscan API 按地址获取 ERC20 代币转移事件列表,您需要向帐户模块和 tokentx 操作端点发送请求。此端点需要合约的地址和地址端点。
https://api.etherscan.io/api
?module=account
&action=tokentx
&contractaddress=0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2
&address=0x4e83362442b8d1bec281594cea3050c8eb01311c
&page=1
&offset=100
&startblock=0
&endblock=27025780
&sort=asc
&apikey=YourApiKeyToken
我们将响应放入数据框中,就像我们在前面的例子中所做的那样。
当合约模块和 getabi 操作端点被请求时,Etherscan API 可以获取合约数据。此端点还需要 API 密钥和地址参数。
https://api.etherscan.io/api
?module=contract
&action=getabi
&address=0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413
&apikey=YourApiKeyToken
要使用 Etherscan API 检查交易状态,用户需要向交易模块和gettxreceiptstatus
操作发出请求。交易哈希码也需要作为参数发送。
https://api.etherscan.io/api
?module=transaction
&action=gettxreceiptstatus
&txhash=0x513c1ba0bebf66436b5fed86ab668452b7805593c05073eb2d51d3a52f480a76
&apikey=YourApiKeyToken
{'status': '1', 'message': 'OK', 'result': {'status': '1'}}
要使用 Etherscan API 获取块数据,您需要getblockreward
使用提供的块号作为请求参数来访问块模块和操作端点。
https://api.etherscan.io/api
?module=block
&action=getblockreward
&blockno=2165403
&apikey=YourApiKeyToken
要使用 Etherscan API 获取日志,您需要向日志模块和getLogs
操作端点发出 API 请求。所需的参数是发件人/收件人区块、地址、主题和 API 密钥。以下是示例请求:
https://api.etherscan.io/api
?module=logs
&action=getLogs
&fromBlock=379224
&toBlock=latest
&address=0x33990122638b9132ca29c723bdf037f1a891a70c
&topic0=0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545
&apikey=YourApiKeyToken
要使用带有 Etherscan API 的 Geth/Parity 代理,您需要访问代理模块端点。此模块下有多个端点,例如eth_blockNumber
、、等等eth_getBlockByNumber
。eth_call
例如,我们将获取eth_getStorageAt
从指定地址的存储位置返回值的端点:
https://api.etherscan.io/api
?module=proxy
&action=eth_getStorageAt
&address=0x6e03d9cce9d60f3e9f2597e13cd4c54c55330cfd
&position=0x0
&tag=latest
&apikey=YourApiKeyToken
{'jsonrpc': '2.0',
'id': 1,
'result': '0x0000000000000000000000003d0768da09ce77d25e2d998e6a7b6ed4b9116c2d'}
要使用 Etherscan API 获取代币数据,您将可以访问多个端点,这些端点可以返回 ERC20 代币供应、账户余额、历史数据等内容。
为了获得代币供应,我们执行以下操作:
https://api.etherscan.io/api
?module=stats
&action=tokensupply
&contractaddress=0x57d90b64a1a57749b0f932f1a3395792e12e7055
&apikey=YourApiKeyToken
{'status': '1', 'message': 'OK', 'result': '21265524714464'}
要将 gas 跟踪器与 Etherscan API 结合使用,您必须查看可用 gas 端点列表。Etherscan API 提供的端点包括 gas 估算、gas 预言机、每日 gas 限额、总 gas 使用量、gas 价格等。
例如,让我们获得气体确认时间的估计:
https://api.etherscan.io/api
?module=gastracker
&action=gasestimate
&gasprice=2000000000
&apikey=YourApiKeyToken
{'status': '1', 'message': 'OK', 'result': '3615'}
Etherscan API 可以获得各种统计数据,例如以太币的总供应量、最新价格、节点总数、节点大小、平均网络哈希率、历史市值、交易数量、新地址数量、交易费用等。
例如,我们来看看 Ether 2.0 的总供应量:
https://api.etherscan.io/api
?module=stats
&action=ethsupply2
&apikey=YourApiKeyToken
{'status': '1',
'message': 'OK',
'result': {'EthSupply': '118194367499000000000000000',
'Eth2Staking': '309618220365297000000000',
'BurntFees': '738514872810670998934509'}}