与web3.py库交互的共同入口是web3
对象。web3对象提供API,用于python开发的应用与以太坊区块链进行交互,通常是通过连接JSON-RPC服务器进行。
Providers提供者
Providers
使web3连接到区块链上。Web3.py库带有以下内置的providers
,它们能够适用于大多数用例。
web3.HTTPProvider
:用于连接基于http和https的JSON-RPC服务器。web3.IPCProvider
:用于连接基于ipc套接字的JSON-RPC服务器。web3.WebsocketProvider
:用于连接基于ws和wss的websocket的JSON-RPC服务器。
HTTPProvider
:用于获取可以找到服务器的完整URI。对于本地开发,这类似http://localhost:8545
。
IPCProvider
:用于获取可以找到IPC套接字的文件系统路径。如果不提供任何参数,它将使用操作系统的默认路径。
WebsocketProvider
:用于获取可以找到服务器的完整URI。对于本地开发,这类似ws://127.0.0.1:8546
。
示例代码如下:
>>> from web3 import Web3, HTTPProvider, IPCProvider, WebsocketProvider
# Note that you should create only one RPCProvider per
# process, as it recycles underlying TCP/IP network connections between
# your process and Ethereum node
>>> web3 = Web3(HTTPProvider('http://localhost:8545'))
# or for an IPC based connection
>>> web3 = Web3(IPCProvider())
# or for Websocket based connection
>>> web3 = Web3(WebsocketProvider('ws://127.0.0.1:8546'))
基本API
web3类提供了以下十分便利的基本API:
类型转换
web3.toHex
Web3.toHex(primitive=None, hexstr=None, text=None)
获取各种输入并以十六进制表示形式返回它。它遵循在JSON-RPC规范中转换为十六进制的规则。
>>> Web3.toHex(0)
'0x0'
>>> Web3.toHex(1)
'0x1'
>>> Web3.toHex(0x0)
'0x0'
>>> Web3.toHex(0x000F)
'0xf'
>>> Web3.toHex(b'')
'0x'
>>> Web3.toHex(b'\x00\x0F'