Web3py简单使用方法(二)

1.通过合约工厂使用合约
···

实例化合约,可以通过ContractFactory指定类型

contract = web3.eth.contract(mycontractAdress, ContractFactoryClass=ConciseContract)

调用合约方法,通过transact添加参数

contract.withdraw(amount, transact={'from': eth.accounts[1], 'gas': 100000, ...})
···

合约有一些属性:
contract.address:合约的地址,如果工厂创建时没有提供可能为None
contract.abi:合约的abi
contract.bytecode:合约的bytecode
contract.bytecode_runtime:合约的bytecode的runtime部分

合约的一些方法:

部署合约
contract.deploy(transaction=None,args=None)
transaction为此次合约的详细属性的字典,args为合约构造函数的参数list。返回此次交易的hash值

执行指定的含有交易(消耗gas)的方法
contract.transact(transaction).myMethod(args,*kwargs)

执行不产生公共交易的方法
contract.call(transaction).myMethod(args,*kwargs)

执行指定的消耗gas的方法且返回消耗的gas
contract.estimateGas(transaction).myMethod(*args, **kwargs)

创建一个事件的日志
classmethod Contract.on(event_name, filter_params=None, *callbacks)
filter_params是一个字典支持以下一个key:filter: dictionary(事件的参数名),fromBlock: integer/tag(区块的number,默认是‘latest’),toBlock: integer/tag,address: string or list of strings(合约的地址或日志的来源),topics: list of 32 byte strings or null(过滤的信息)

获取一个历史日志
Contract.pastEvents(event_name, filter_params=None, *callbacks)

你可能感兴趣的:(Web3py简单使用方法(二))