Python 钱包的 Web3 RPC 客户端
项目描述
pyweb3
Python 中兼容以太坊钱包的 Web3 RPC 客户端
一个 Python3 库,用于从 Python 钱包查询对以太坊兼容节点的 Web3 调用。该库使用JSON-RPC 节点 API 标准将 Python 钱包连接到区块链节点。
软件应用程序可以使用以太坊节点与以太坊区块链交互。为此,每个以太坊客户端都实现了 JSON-RPC 规范,因此应用程序可以依赖一组统一的方法。JSON-RPC 是一种无状态的轻量级远程过程调用 (RPC) 协议。该规范主要定义了几种数据结构和围绕它们的处理规则。它与传输无关,因为这些概念可以在同一进程中、通过 WebSocket 或通过 HTTP 使用。它使用 JSON (RFC 4627) 作为数据格式。
pyWeb3 兼容以太坊节点区块链,以及所有兼容的衍生产品,如 Polygon、BSC、Arbitrum。
pyWeb3 不处理来自函数的“十六进制”调用的计算,也不处理数据格式打包,也不处理响应数据的解码。除了解码为整数的get_balance、get_tx_num和get_tx_num 。这些部分必须由使用 pyWeb3 的应用程序完成。
pyWeb3 自动管理所有 Web3 RPC 堆栈:
Web3 client
|
JSON-RPC
|
WebSocket or HTTP
|
TLS
|
Socket
安装和要求
适用于 Python >= 3.6。
这个库的安装
最简单的方法:
python3 -m pip install pyweb3
从源代码下载并在此目录中运行:
python3 -m pip install .
唯一的依赖是wsproto v1.0.0 库。
利用
实例化pyweb3.Web3Client,然后使用该对象的方法发送 RPC 查询。
基本示例:
from pyweb3 import Web3Client
# Get Token0 address of the ETH/USDT SushiSwap AMM pair on Polygon
amm_pair_contract = "0xc2755915a85c6f6c1c0f3a86ac8c058f11caa9c9"
token0Call = "0dfe1681" # Keccak256( "token0()" )
rpc_api = Web3Client("https://matic-mainnet.chainstacklabs.com")
# Get token0 address of the pair : WETH
res_hex = rpc_api.call(amm_pair_contract, token0Call)
print(f"Token 0 Address : 0x{res_hex[-40:]}")
请参阅演示文件夹中的 web3_demo 脚本。
Web3Client的接口方法
pyweb3.Web3Client( node_url, [user_agent], [retries] )
从 URL 创建 Web3 客户端。
node_url :RPC 区块链节点的访问 URL(https 或 wss)。
user_agent:要使用的可选用户代理标头,使用默认的 Web 浏览器值。
retries:发生错误后重试 RPC 的次数。2 默认。
节点 URL 可以是 HTTPS (https://...) 或安全 WebSocket (wss://...)
如果连接是 WebSocket,则连接隧道将保持打开状态,直到 Web3Client 对象被删除。使用 HTTPS 时,连接是针对每个方法调用的一次性查询 (POST)。
.get_balance( 0xAddress, [state] )
给出一个 0x 地址字符串的本机余额。余额以 Wei 单位 (10^-18 ETH) 的整数形式给出。
获取数据时出现问题可以返回 0 Wei。
以下状态选项是可能的:
- HEX String - 一个整数块号
- 最早/创世区块的字符串“earliest”
- 最新开采区块的字符串“latest”
- 待处理状态/交易的字符串“待处理”
默认值为“最新”
.call( contractAddr, command_code, [data], [state] )
调用 eth_call 并返回响应,作为“原始”0x 十六进制字符串。
有关状态选项,请参阅 get_balance。
.pushtx( TxHexStr )
在区块链网络上广播交易。
TxHexStr 是“原始”十六进制的 tx 数据,没有“0x”。
.get_tx_num( 0xAddress, [state] )
以整数形式给出从给定地址发送的交易数量。
有关状态选项,请参阅 get_balance。
.get_gasprice()
阅读当前节点对链上 gas 价格的估计。天然气价格以 Wei 单位的整数形式给出。
.get_logs( param )
使用给定参数调用“eth_getLogs”。
.set_filter( param )
使用给定参数调用“eth_newFilter”。
.get_filter( filter_id )
使用给定的 filter_id 参数调用“eth_getFilterLogs”。
执照
版权所有 (C) 2021-2022 BitLogiK SAS
该程序是免费软件:您可以根据自由软件基金会
发布的 GNU 通用公共许可证(许可证第 3 版)的条款重新分发和/或修改它。
分发此程序的目的是希望它有用,
但不提供任何保证;
甚至没有对适销性或特定用途适用性的默示保证。
有关详细信息,请参阅 GNU 通用公共许可证。
支持
在 Github 存储库中打开一个问题以获取有关其使用的帮助。
项目详情
pyweb3-0.1.7 -py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 6444dca5279147937b9174a83b8e89d0d0d5d578ab7fb845a738f5cc75f9868c |
|
| MD5 | d981e1003eacbd1027a61a2de0688389 |
|
| 布莱克2-256 | 33c4214b94542f24fa8521e58b229e9845c7afa3f4da8ddfcd27f520c8ebe9e3 |