【区块链-前端交互】第一篇:使用python交互以太测试网(奔向JS)

参考资料

以太坊官网

安装和测试环境

通过节点接入网络

参考文章:

接入以太网网络,要首先连接到以太坊网络节点,然后通过节点与公链中的应用进行交互。

提供以太网节点的第三方:https://infura.io/zh/

目前 Infura 对以太坊提供主网和两个测试网的节点服务,通过 WebSocket 或者 HTTPS 接入网络,接入URL如下:Infura教程-Choose a network

Mainnet
JSON-RPC over HTTPS
https://mainnet.infura.io/v3/YOUR-API-KEY

Mainnet
JSON-RPC over WebSocket
wss://mainnet.infura.io/ws/v3/YOUR-API-KEY

Goerli
JSON-RPC over HTTPS
https://goerli.infura.io/v3/YOUR-API-KEY

Goerli
JSON-RPC over WebSocket
wss://goerli.infura.io/ws/v3/YOUR-API-KEY

Sepolia
JSON-RPC over HTTPS
https://sepolia.infura.io/v3/YOUR-API-KEY

Sepolia
JSON-RPC over WebSocket
wss://sepolia.infura.io/ws/v3/YOUR-API-KEY

使用Python连接所选网络

交互教程:infura教程-Use Python

下载 python 需要的类库:

pip3 install web3
pip3 install python-dotenv

连接网络:

# encoding=UTF-8

import os
from dotenv import load_dotenv
from web3 import Web3

load_dotenv()

# 根据 Goerli 测试网的节点,接入网络
infura_url = "https://goerli.infura.io/v3/748faf8c484d4d90a301284e526dba36"

# 从钱包导出签名私钥,保存到 .env 文件
private_key = os.getenv('SIGNER_PRIVATE_KEY')

# 通过节点接入以太网络
web3 = Web3(Web3.HTTPProvider(infura_url))
# print("是否接入以太坊网络:" + web3.isConnected())

查询主网上钱包的余额

参考文章:Web3 库Web3-API文档

每个类evm的公链都有很多RPC,当你不知道某公链的RPC,可以去 chainlist.org 搜索。

使用 infura 提供的节点连接不上以太坊主网,根据参考文章选择以太坊主网的 RPC 进行调用连接,成功查询到个人钱包的 ETH余额

# encoding=UTF-8

import os
from dotenv import load_dotenv
from web3 import Web3

load_dotenv()

# 以太坊主网的RPC调用地址
rpc = "https://cloudflare-eth.com"

# 通过RPC调用接入以太坊主网
web3 = Web3(Web3.HTTPProvider(rpc))
print("是否接入以太坊网络:" + str(web3.isConnected()))

# 钱包地址
address = "0x281aF131Fc854Cb6756A7e2F57D895bcCf6DaFd5"

# 查询余额
balance = web3.fromWei(web3.eth.getBalance(address), "ether")
print(balance)

封装代码-以太主网查询钱包余额

# encoding=UTF-8

import os
from dotenv import load_dotenv
from web3 import Web3

load_dotenv()


def select_balance(web3, address):

    # 查询余额
    balance = web3.fromWei(web3.eth.getBalance(address), "ether")
    print(balance)


def access_eth_main():

    # 以太坊主网的RPC调用地址
    rpc = "https://cloudflare-eth.com"

    # 通过RPC调用接入以太坊主网
    web3 = Web3(Web3.HTTPProvider(rpc))
    print("是否接入以太坊网络:" + str(web3.isConnected()))

    return web3

	address = "0x281aF131Fc854Cb6756A7e2F57D895bcCf6DaFd5"
    web3 = access_eth_main()
    select_balance(web3, address)

小结

经过资料检索和尝试,发现 Python 的 Web3 类库相关的教程资料很少,但 JavaScript 的教程很多,所以计划学习 JavaScript 与区块链网络进行交互。

猜你喜欢

转载自blog.csdn.net/soldi_er/article/details/127573215
今日推荐