主页 > 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 服务器的通信服务提供程序。