跳转至

快速启动

原文:https://web3py.readthedocs.io/en/stable/quickstart.html

注意

所有以$开头的代码都应该在你的终端上运行。所有以>>>开头的代码都应该在 python 解释器中运行,比如 ipython

安装

Web3.py 可以使用pip安装(最好在 虚拟 )如下:

$ pip install web3 

注意

如果您在安装过程中遇到问题,您可能有一个损坏的环境。参见 设置清洁环境 的故障排除指南。

使用 Web3

该库依赖于与以太坊节点的连接。我们将这些连接称为供应商,有几种方法可以配置它们。完整的细节可以在 供应商 文档中找到。该快速入门指南将重点介绍几个最常见的使用案例。

测试供应商

如果你只是在学习诀窍或者做一些快速原型制作,你可以使用一个测试供应商, eth-tester 。该提供程序包括一些预先填充了测试以太网的帐户,并将每个交易自动生成一个块。Web3.py 通过EthereumTesterProvider使这个测试提供程序可用:

>>> from web3 import Web3, EthereumTesterProvider
>>> w3 = Web3(EthereumTesterProvider())
>>> w3.isConnected()
True 

本地供应商

硬件要求很高,但是与以太坊互动最安全的方式是在你自己的硬件上运行一个以太坊客户端。对于本地运行的节点,IPC 连接是最安全的选择,但是 HTTP 和 websocket 配置也是可用的。默认情况下,流行的 Geth 客户端公开端口8545来服务 HTTP 请求,公开端口8546来服务 websocket 请求。可以按如下方式连接到该本地节点:

>>> from web3 import Web3

# IPCProvider:
>>> w3 = Web3(Web3.IPCProvider('./path/to/geth.ipc'))

# HTTPProvider:
>>> w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545'))

# WebsocketProvider:
>>> w3 = Web3(Web3.WebsocketProvider('wss://127.0.0.1:8546'))

>>> w3.isConnected()
True 

如果您坚持使用默认的端口或 IPC 文件位置,您可以利用一个 便利方法 来自动检测供应商并节省一些击键次数:

>>> from web3.auto import w3
>>> w3.isConnected()
True 

远程供应商

与以太坊区块链互动的最快方式是使用远程节点供应商,如 InfuraAlchemyQuickNode 。您可以通过指定端点来连接到远程节点,就像前面的本地节点示例一样:

>>> from web3 import Web3

>>> w3 = Web3(Web3.HTTPProvider('https://<your-provider-url>'))

>>> w3 = Web3(Web3.WebsocketProvider('wss://<your-provider-url>')) 

此端点由远程节点服务在您创建帐户后提供。

## 获取区块链信息

是时候开始使用 Web3.py 了!一旦正确配置,w3实例将允许您与以太坊区块链进行交互。尝试获取有关最新块的所有信息:

>>> w3.eth.get_block('latest')
{'difficulty': 1,
 'gasLimit': 6283185,
 'gasUsed': 0,
 'hash': HexBytes('0x53b983fe73e16f6ed8178f6c0e0b91f23dc9dad4cb30d0831f178291ffeb8750'),
 'logsBloom': HexBytes('0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'),
 'miner': '0x0000000000000000000000000000000000000000',
 'mixHash': HexBytes('0x0000000000000000000000000000000000000000000000000000000000000000'),
 'nonce': HexBytes('0x0000000000000000'),
 'number': 0,
 'parentHash': HexBytes('0x0000000000000000000000000000000000000000000000000000000000000000'),
 'proofOfAuthorityData': HexBytes('0x0000000000000000000000000000000000000000000000000000000000000000dddc391ab2bf6701c74d0c8698c2e13355b2e4150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'),
 'receiptsRoot': HexBytes('0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'),
 'sha3Uncles': HexBytes('0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'),
 'size': 622,
 'stateRoot': HexBytes('0x1f5e460eb84dc0606ab74189dbcfe617300549f8f4778c3c9081c119b5b5d1c1'),
 'timestamp': 0,
 'totalDifficulty': 1,
 'transactions': [],
 'transactionsRoot': HexBytes('0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'),
 'uncles': []} 

Web3.py 可以帮助您读取块数据、签署和发送事务、部署合约并与之交互,以及许多其他功能。

你想做的许多典型的事情都在 w3.eth API 中,所以这是一个很好的起点。

如果您想直接进入合约,请查看关于 合约 的部分,包括一个 合约部署示例 ,以及如何使用 w3.eth.contract() 创建一个合约实例。

注意

建议您的开发环境设置PYTHONWARNINGS=default环境变量。如果没有设置此变量,一些不推荐使用的警告将不会显示。



回到顶部