每个 web3 实例都会有以下这些 APIs:
Providers
Attributes
Encoding and Decoding Helpers
Currency Conversions
Addresses
Providers provider 是 web3 与区块链对话的方式,通过接受 JSON-RPC 请求并返回响应。
Providers 用于配置你想要的连接方式,然后用于初始化 Web3 实例。
from web3 import Web3
my_provider = Web3.HTTPProvider(url)
w3 = Web3(my_provider)
大多数节点都有多种连接方式,以下连接到节点的最常见方法,选择如何连接到你的以太坊节点。
class web3.providers.rpc.HTTPProvider(endpoint_uri[, request_kwargs])
endpoint_uri 是 RPC 端点的完整 URI,例如“ https:// localhost:8545”。
对于运行在端口 80 上的HTTP连接和运行在端口 443 上的 HTTPS 连接的 RPC 服务器,可以从 URI 中省略该端口。
request_kwargs 这应该是关键字参数的字典,该参数将传递到http / https请求。
底层调用 python requests 库发送请求,可使用 request_kwargs 对请求就行修改。如下例中,设置超时时间
from web3 import Web3
http_provider=Web3.HTTPProvider(endpoint_uri=url, request_kwargs={'timeout': 60})
print(http_provider) # RPC connection https://xxxxx.org:12345
w3 = Web3(http_provider)
print(w3) # <web3.main.Web3 object at 0x7f8749910950>
class web3.providers.ipc.IPCProvider(ipc_path=None, testnet=False, timeout=10)
ipc_path 是 IPC 套接字的文件系统路径,如果没有输入参数,则会默认从以下路径中寻找:
- On Linux and FreeBSD:
~/.ethereum/geth.ipc
~/.local/share/io.parity.ethereum/jsonrpc.ipc
~/.local/share/trinity/mainnet/ipcs-eth1/jsonrpc.ipc- On Mac OS:
~/Library/Ethereum/geth.ipc
~/Library/Application Support/io.parity.ethereum/jsonrpc.ipc
~/.local/share/trinity/mainnet/ipcs-eth1/jsonrpc.ipc- On Windows:
\.\pipe\geth.ipc
\.\pipe\jsonrpc.ipc
from web3 import Web3
w3 = Web3(Web3.IPCProvider("~/Library/Ethereum/geth.ipc"))
class web3.providers.websocket.WebsocketProvider(endpoint_uri[, websocket_kwargs])
from web3 import Web3
w3 = Web3(Web3.WebsocketProvider("http://127.0.0.1:8546", websocket_kwargs={'timeout': 60}))
Web3.setProviders(provider) 更新
使用新的 provider list 更新当前的 web3 实例。也可接受单个 provider。
如果不确定如何决定,可按照以下原则: