使用Python完成EVM链余额查询和交易发送
前面我们讲过了通过web3库创建钱包,其实web3库还有很多功能,今天就给大家讲一下使用web3库查询账号余额,以及发送交易。

准备工作
查询目前主要是主网的token,比如polygon上面的matic,bsc的bnb钱包需要有余额,可以使用测试链和测试币(比如,goerli测试网和goerliETH,本教程使用的是gitshock测试链和代币GTFX)
代码实现
1.导入依赖库
from web3 import Web3, HTTPProvider
from web3.gas_strategies.rpc import rpc_gas_price_strategy
2.创建web3连接
# 创建web3连接
def creatWeb3(rpc):
web3 = Web3(HTTPProvider(rpc))
# 查看区块高度
blockNumber = web3.eth.blockNumber
print("当前区块高度:", blockNumber)
return web3
3.查询余额
# 查看余额
def checkBlance(web3, addr, type):
blance = web3.fromWei(web3.eth.get_balance(addr), "ether")
print(f"账户 {addr} 的{type}余额是: {blance} ")
return blance
4.发送交易
def transerTo(web3, addrFrom, key, addrTo, num, type, chainId):
account_from = {
"private_key": key,
"address": addrFrom,
}
print(
f'准备从账户 {addrFrom} 转账{num}个{type} 到账户{addrTo}'
)
# 查询当前价格
print("查询当前gas是:", web3.eth.generate_gas_price())
# 设置gas价格
web3.eth.set_gas_price_strategy(rpc_gas_price_strategy)
# 创建交易签名
tx_create = web3.eth.account.sign_transaction(
{
"nonce": web3.eth.get_transaction_count(addrFrom),
"gasPrice": web3.eth.generate_gas_price(),
"gas": 21000,
"to": addrTo,
"chainId": chainId,
"value": web3.toWei(num, "ether"), # 转账数量
},
key,
)
# 发送和等待
tx_hash = web3.eth.send_raw_transaction(tx_create.rawTransaction)
tx_receipt = web3.eth.wait_for_transaction_receipt(tx_hash)
print(f"交易成功!hash: {tx_receipt.transactionHash.hex()}")
5.调用
if __name__ == '__main__':
address_from = "0xf0f9c45fd3b733d274448a161A2942B12F606420" #发款地址
address_to = "0xe0252BC89C76Bdc4c9d09f96F10901DED7E542ef" #收款地址
rpc = "https://rpc-testnet.gitshock.com/cartenz" #RPC
key = 'xxx' #钱包私钥
num = '1' #转账数量
type = 'GTFX' #代币符号
chainId = 212 #链ID
web3 = creatWeb3(rpc)
# 查看转账前余额
print('转账前余额~~~~')
checkBlance(web3,address_from,type)
checkBlance(web3, address_to,type)
# #发送交易
transerTo(web3, address_from, key, address_to, num,type,chainId)
# 查看转账后余额
print('转账后余额~~~~')
checkBlance(web3, address_from, type)
checkBlance(web3, address_to, type)
执行结果:

交易查看:
0xe4eb6a32e5bfd7f1589e222558a07188f007768be107642b30d0f7b1baf3ad92
非常不凑巧,gitshock项目的测试网浏览器(https://scan.gitshock.com/)挂掉了,没有上截图。
以上就是使用web3库,完成了余额查询和发送交易操作,还有其他功能比如签名等等,后面还将给大家带来合约交互的教程
如果有其他问题可以通过公众号「python玩转」联系作者
古代的锁和现代的锁有什么不一样吗(现代的锁更安全)
现代的锁更安全,更便利。在探讨古代锁与现代锁之间的差异前,我们首先需要理解锁在人类历史中的演变过程。几千年来,锁的发展不仅见证了技术进步的足迹,也体现了人类对安全和隐私需求的不断提升。一、古代锁的演变我要新鲜事2024-02-04 21:46:010004八大行星卫星大盘点,八大行星中卫星最多的是木星(68颗)
在整个太阳系中,拥有卫星的星球不在少数,地球就是其中之一,虽然只有一颗,但是能够俘获像月球这么大的卫星是极为不可思议的。而八大行星中卫星最多的是木星,仅目前观测到的就有68颗之多,而人类天文学家更是预计木星的卫星高达一百多颗!八大行星中卫星最多的是木星我要新鲜事2023-05-07 19:35:570001吃饭睡觉打豆豆是什么意思 吃饭睡觉打豆豆具体含义是什么
吃饭睡觉打豆豆算是一句有名的网络话语,但是它到底是什么意思呢。其实这句话没有具体的含义,主要代表着一种状态,是一种无所事事无聊至极的状态,无聊的时候就可以说出这句话了。吃饭睡觉打豆豆是什么意思我要新鲜事2023-05-13 07:51:440000从大气成分到恒星活动,为了寻找外星人,我们都用过什么办法?
外星生命是个很宽泛的话题,虽然我们现在还没找到它们,但天文学家认为外星生命并不遥远,在太阳系其他星球上可能就有。最典型的就是火星因为目前的种种迹象都表明火星在遥远的过去是一颗拥有海洋和大气层的星球,甚至以现在的眼光来看火星都是一颗位于太阳系宜居带边缘的星球,在可以预见的未来随着太阳光度的增强,火星受到的太阳热量还会越来越多,两极地区的冰盖有可能再次融化变成全球性的海洋。我要新鲜事2023-10-02 18:13:260002睡觉时进入四维空间怎么回事 睡觉时候会进入其他空间吗
人类在睡觉时会进入四维空间,其实这是一种梦境。四维空间会给人以幻想,有一种不真实感。在这里能够看到自己的亲人以及路边行走的人,但是唯独不能够看到自己,也无法听到自己的发声,就像自己是一个不存在的人一样。一、如何进入四维空间我要新鲜事2023-05-12 16:50:500003