首先安装 web3 API
pip install web3
正文开始
导入module
from web3 import Web3, HTTPProvider
首先获取web3实例,这里使用HTTP方式连接自己的私链
node_url = 'http://127.0.0.1:8545'
web3_client = Web3(HTTPProvider(node_url))
准备工作完成,接下来进行具体操作
1.getTransaction()
trade_hash = '0x........' #你的txid
web3_client.eth.getTransaction(trade_hash)
2.getBlock()
blockNumber = 10 #你的blockNumber
web3_client.eth.getBlock(blockNumber)
3.查看账户余额 getBalance()
注意:和下一步一样,这个方法中要用到地址。而web3.py 中所有用到地址的地方,不能直接传入地址,需要用toChecksumAddress()转一下
address = '0x....................' #你的eth地址
checksum_address = Web3.toChecksumAddress(address)
balance = web3_client.eth.getBalance(checksum_address)
4.在两个地址之间发起转账 sendTransaction()
转账是需要用到from_address的私钥的,在转账以前,需要unlockAccount(), 我们这里用 personal.sendTransaction(),理由是,在sendTransaction方法调用时,from账户并未在节点中全局解锁 (仅在该调用内解锁),更加安全,也因为这个原因,from账户不能用于其他RPC调用。
同样的,这个方法里的from_address 和 to_address 也要用上面的 toChecksumAddress() 转一下
from_address = '0x................' #你的 from_address
to_address='0x.................' #你的 to_address
private_secret = '0x............' # from_address 的私钥,在 python 脚本中使用 web3 转账时,这里有泄露密钥的危险,在生产环境中注意配置抽离
import math
value = 0.123 * math.pow(10,18) #单位是 wei, 1 ETH = 10^18 wei
web3_client.geth.personal.sendTransaction({
"from":Web3.toChecksumAddress(from_address),
"to":Web3.toChecksumAddress(to_address),
"value":int(value)
},private_secret)