主页 > imtoken钱包官方下载最新地址 > python通过web3py链接以太坊区块链节点的几种方式

python通过web3py链接以太坊区块链节点的几种方式

通信服务提供的接口是 web3 如何与区块链交互的关键。 该接口接受 JSON-RPC 请求并返回响应。 这通常是通过将请求提交到基于 HTTP 或 IPC 套接字的服务器来完成的。

如果您已经愉快地连接到您的以太坊节点,那么您可以跳过这一部分。

选择如何连接到您的节点

大多数节点都有多个连接。如果您还没有决定使用哪个节点,请转到

最常见的节点连接方式有:

如果您不确定如何决定,请选择以下选项之一:

大多数节点都有一种方法来“关闭”连接选项。 我们建议您关闭所有未使用的连接选项。 这提供了一个更安全的设置:它减少了恶意黑客试图窃取你的以太币的方式的数量。

确认连接后,可以使用通信服务提供的接口Provider来指定细节。 Communication Service Provider接口Provider程序是为需要的连接类型配置的Web3.py类。

看看这些:

配置通信服务商接口程序后,如:

from web3 import Web3
my_provider = Web3.IPCProvider('/my/node/ipc/path')

然后你可以像这样初始化 Web3 实例:

w3 = Web3(my_provider)

这样,您就可以开始使用 Web3.py 了。

自动和手动通信服务提供接口

如果没有指定通信服务提供商以太坊节点减少,Web3 对象将在几个标准位置寻找以太坊节点。 自动检测发生在初始化时:

from web3.auto import w3
# which is equivalent to:
from web3 import Web3
w3 = Web3()

有时,web3 无法自动检测节点的位置。

要深入了解自动检测的工作原理,请继续阅读:

自动检测如何工作

Web3 尝试按以下顺序连接到节点,使用它可以建立的第一个成功连接:

使用自动检测的示例

一些节点提供了超出标准的API。 有时,相同的信息会在节点之间以不同的方式提供。 如果您正在编写跨多个节点工作的代码,您可能需要找出您连接到的节点类型。

例如以太坊节点减少,以下检索 geth 和奇偶校验的客户端 enode 端点:

from web3.auto import w3
connected = w3.isConnected()
if connected and w3.version.node.startswith('Parity'):
    enode = w3.parity.enode
elif connected and w3.version.node.startswith('Geth'):
    enode = w3.admin.nodeInfo['enode']
else:
    enode = None

通过环境变量

或者,您可以在启动脚本之前设置环境变量 WEB3_PROVIDER_URI,web3 将首先寻找这种方式。

此环境变量的有效格式为:

自动初始化的快捷方式

常用方法中有几个自动初始化的快捷方式。

Infura 主网

要轻松连接到 Infura 主网远程节点,如果您没有免费的 API 密钥,请先注册一个。

然后使用您的 API 密钥设置环境变量 INFURA_API_KEY:

$ export INFURA_API_KEY=YourApiKey

>>> from web3.auto.infura import w3
# confirm that the connection succeeded
>>> w3.isConnected()
True

Geth开发PoA

使用默认连接到 geth --dev PoA(权威证明)实例:

>>> from web3.auto.gethdev import w3
# confirm that the connection succeeded
>>> w3.isConnected()
True

内置通信服务提供接口

Web3 附带以下适用于连接到本地和远程 JSON-RPC 服务器的通信服务提供程序。