使用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玩转」联系作者
土星为何会失去光环?据预料将会以最坏的情况消失?(宇宙探索)
英雄末路,美人迟暮,江郎才尽,可谓是人生中的三大悲哀,令人惋惜。但在这一现象移植到宇宙中,宇宙中的星球演化可以为之相提。据我们所知,每个恒星都会有最少一个卫星,有的甚至有多个,行星也会有但除了水星和金星是例外。有的卫星比行星的体积要大,直径超过水星,在太阳中系中属于最大的卫星。我要新鲜事2023-05-14 10:28:350001为什么中国被称为东方?东方巨龙是什么意思
导语:中国一直被其他国家称之为东方,比如中国女性被称为东方女性等等,很多人好奇所谓中国是东方的说法从哪里来的呢?探秘志带大家一起了解一下。中国之所以被称为东方国家,这主要源于辽阔的领土面积,而且从地理位置上来讲,中国属于欧洲大陆的东方,另外也位于亚洲东部,按时区来看也属于东五、六、七、八和东九区。为什么中国被称为东方我要新鲜事2023-05-08 18:03:160000人造月亮到底能不能升空?看看这几点就知道了(人造天体)
人造月亮研究成功后可以节省电费可能在前两年的时候,大家都曾经听说过人造月亮这个说法,只不过后来因为全球口罩的原因,让人造月亮这个技术暂时停滞了下来,而且也没有太多人去真的在乎人造月亮是不是可以研究的出来,只不过人造月亮也是在一直发展的过程中,比如说在前年的时候,我国就已经发射了人造月亮,后来韩国也有发射一颗,只不过现在他们都不会挂在天上,而是早就收回了。我要新鲜事2023-05-15 03:23:570000极其罕见!天文学家发现全共振行星系统,堪称“完美太阳系”
近些年天文学家一直在搜寻系外行星,以期望能够寻找到外星生命的踪迹。随着已发现的系外行星数量猛增到5000多颗,科学家发现其实很多恒星周围都存在行星,这表明恒星周围存在行星是一种普遍现象,宇宙中的行星数量应该非常多,远比恒星的数量还多。那么其中也极有可能存在与太阳系类似的行星系,那些星球上也很可能存在生命。我要新鲜事2023-12-09 19:44:200000华兴资本离得开包凡吗?
记者|李京亚2017年1月,近500人的华兴资本第三次搬家,迁至北京三里屯盈科中心。在一场暖楼性质的媒体见面会上,有人问包凡,如何看待知乎上提出的华兴资本“去包凡化”?包凡当时的回答是,“去包凡化无非就是以后我的朋友圈小一点,各位合伙人的朋友圈大一点。我希望当我和我的朋友圈退出这个舞台的时候,华兴还能继续传承下去。”类似的话后来包凡又重复提过几次。我要新鲜事2023-05-14 04:04:140000