-X POST
-H "Content-Type: Application/json"
--data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["'"${SEPOLIA_ACCOUNT}"'","latest"],"id":1}'
https://sepolia.infura.io/v3/${INFURA_API_KEY}
a{"jsonrpc":"2.0","id":1,"result":"0x1d7e6e62f1523600"}
正如人们所见,这有一个巨大的余额0x1d7e6e62f1523600!!!!但不必太兴奋,其平衡单位是Wei 。1个ETH等于1018Wei 。如果计算一下数字,可以看到账户里有2个多一点的ETH 。当然,这都是测试网络的钱 。
需要注意的是,在这里不需要使用帐户私钥来检查余额 。任何人都可以查看区块链中任何账户的余额,而帐户余额并不是敏感信息 。但是,帐户和持有私钥的人的身份是敏感和机密的 。
在直接访问Infura API时有着很好的体验,接下来需要编写一些代码 。
采用Python开发Web3Web3生态系统支持多种编程语言 。可以从JAVAScript(web3.js和ethers.js)、Golang和Python(web3.py)中的流行库访问Infura API 。
选择工具:web3.py虽然现在大多数代码都是用JavaScript/Node.js和Ruby编写的,但在学习新主题时,Python是很好的选择 。web3.py库看起来功能强大、成熟且文档齐全 。所以Alvin Lee决定选择web3.py 。
选择目标:加密钱包管理器
Web3的世界可能是压倒性的:交易、智能合约、IPFS、DAO(去中心化自治组织)、DeFi(去中心化金融)和NFT 。Alvin Lee决定为这个Web3测试项目选择一个简单的加密钱包管理器概念 。加密钱包管理器是一种“hello web3 world”项目,因为它所做的就是获取余额并将一些钱发送到目标账户 。自从Alvin Lee采用Sepolia faucet赚钱以来,他决定发送一些资金来回馈它 。先检查一下代码 。
web3-test dApp(去中心化应用)这些代码可以在Github上找到 。
使用Poetry来构建应用程序 。自述文件提供了一步一步的设置说明 。
在深入研究代码之前,先运行一下程序,看看会发生什么:
复制
$ poetry run python main.py
balance before transaction: 2.1252574454
send 20,000 gwei to 0xea4d57b2dd421c5bfc893d126ec15bc42b3d0bcd (Sepolia faucet account)
balance after transaction: 2.125184945399832
正如人们所看到的那样,Alvin Lee的余额最初是略高于2个testnet ETH 。然后,将20,000 Gwei(即200亿Wei)发送到最初获得资金的Sepolia faucet账户 。它几乎没有影响资金平衡 。这正好说明Wei是一个多么小的单位 。
这个代码非常简单 。只有一个名为main.py的文件 。该文件包含一个main()函数和一个WalletManager类 。先从main()函数开始,它是程序的入口点 。
main()函数不接受命令行参数或配置文件 。一切都是为了简单而硬编码的 。首先,该函数实例化WalletManager类,然后定义Sepolia faucet帐户的公钥 。现在开始行动 。该函数通过调用WalletManager的get_balance()方法获得加密钱包的余额,然后传递所请求的单位(以太币),并将其显示在屏幕上 。接下来,该函数调用send_eth()方法将20,000 Gwei发送到目标帐户 。最后,它在汇款后再次获取并显示余额 。
复制
def main():
wm = WalletManager()
sepolia_faucet_account = wm.w3.toChecksumAddress('0xea4d57b2dd421c5bfc893d126ec15bc42b3d0bcd')
balance = str(wm.get_balance('ether'))
print(f'balance before transaction: {balance}')
【使用Infura和Python学习开发Web3】print(f'send 20,000 gwei to {sepolia_faucet_account} (Sepolia faucet account)')
wm.send_eth(sepolia_faucet_account, 20000, 'gwei')
balance = str(wm.get_balance('ether'))
print(f'balance after transaction: {balance}')
if __name__ == '__main__':
main()
然后看一下WalletManager类 。它有四种方法:
复制
·__init__(),
·__create_web3_instance()
·get_balance()
·sent_eth()
方法1:__init__()
以下逐一进行了解 。__init__()方法作为构造函数,它首先调用__create_web3_instance()方法,并将结果存储在一个名为w3的变量中 。然后__init__()提取几个环境变量并存储它们 。它继续计算一些Gas费用(Gas是区块链运行的燃料)和给验证交易的人员的奖励 。
它还存储链ID,用于标识Sepolia测试网(在本例中) 。稍后在向Sepolia测试网发送交易时,将需要这个ID 。
复制
Import
import os
import web3
class WalletManager:
def __init__(self):
self.w3 = self.__create_web3_instance()
self.account = os.environ[‘SEPOLIA_ACCOUNT’]
推荐阅读
- 懂八门语言、能理解上下文的AI内容审核来了!微软推出新产品:能检测文本和图片
- 酥油茶是什么做的 酥油茶的做法和配方最新介绍
- 安溪铁观音怎么样 安溪铁观音好处和功效一览
- 玫瑰花和什么搭配泡水好 玫瑰花泡水的最佳搭档
- 吃海带有什么好处和坏处 吃海带的利弊
- 小叶紫檀|价值百万的紫檀红木家具和你有缘分吗?
- 玛瑙|民间藏家(和田玉)
- |华表奖男星怼脸生图:全部是普男,苏有朋和韩庚发福,王一博脸肿
- 黄秋生|黄秋生金像奖上拥抱刘青云,刘先生满脸的敷衍和抗拒太明显了
- 张译|30岁杨紫美回颜值巅峰,生图变瘦变美,鞋子和体态成槽点!
