from web3 import Web3, HTTPProvider
import json, os
rpc = "HTTP合约通讯地址(http url)"
address = "智能合约地址"
连接钱包地址
web3 = Web3(HTTPProvider(rpc))
结果为true表示连接成功
connect = web3.isConnected()
print(connect)
获取ABI存放地址
filePath = os.path.dirname(__file__) + '/abi.json'
这里是读取咱们的abi合约接口规范,方便后面使用
with open(filePath, 'r') as f:
abi = json.load(f)
官方文档:创建一个新的契约实例及其在json接口对象中定义的所有方法和事件
官方文档:该web3.eth.Contract对象可以轻松地与以太坊区块链上的智能合约进行交互。
个人理解:创建与合约交互的对象,连接完通讯地址后,我们对这地址签订合同,合同里面有合约地址和接口规范(ABI)
web3.eth.contract(接口文档的合约地址, ABI接口规范)
contract = web3.eth.contract(address=address, abi=abi)
通过合约.功能.调用接口方法(传参数).获取返回值
contract.functions.接口方法名(参数1,参数2,参数3).call()
res = contract.functions.getLastMintInfo(10).call()
print("getLastMintInfo:", res)
智能合约python基础
1、连接环境
web3对象与已部署的用户合约进行通信
rpc = "HTTP合约通讯地址(http url)"
web3 = Web3(HTTPProvider(rpc))
1
2
3
2、区块相关
当前区块高度
blockNumber = web3.eth.blockNumber
print(blockNumber)
1
2
3
获取最新的区块
block = web3.eth.getBlock('latest')
print(block)
1
2
3
输出默认区块
print(web3.eth.defaultBlock)
1
2
3、账户相关
将第一个测试账户设置为默认账户
web3.eth.defaultAccount = web3.eth.accounts[0:1]
1
2
输出默认账户
print(web3.eth.defaultAccount)
1
2
获取账号信息
accounts = web3.eth.accounts
print("账户列表:", accounts)
1
2
3
获取当前gas的价格
print(web3.eth.gasPrice)
1
2
address1 = "你的钱包地址"
获取eth余额
balance1 = web3.fromWei(web3.eth.getBalance(address1), "ether")
print(balance1)