感谢这个社区的支持,我能够使用本文中提供的指导在网络上创建事务:如何使用Web3.py将事务发送到myetherapi.com
要发送事务,我需要引用http://www.myetherapi.com/中显示的允许的方法。考虑到这一点,我可以在本地签署一个事务,并使用sendRawTransaction方法将其广播到网络。
我现在的问题是如何创建一个事务来调用已经部署在网络上的契约中的函数。您将如何修改事务参数以调用特定的契约并调用该契约中的特定函数。
这是一个简单事务的例子。创建调用现有合同的原始事务需要什么?
transaction = {
'to': '0xF0109fC8DF283027b6285cc889F5aA624EaC1F55',
'value': 1000000000,
'gas': 2000000,
'gasPrice': 234567897654321,
'nonce': 0,
'chainId': 1
}我遇到了麻烦,因为web3.py中典型的contract方法无法通过MyEtherAPI获得。而且,如果这是关键的话,我也可以使用web3.py的v4。
发布于 2017-12-13 17:55:57
查看Web3.py版本4的contract中的新buildTransaction()方法。
在创建契约实例之后,您可以为合同函数构建一个事务,如下所示:
>>> gas_price = w3.toWei(21, 'gwei')
>>> a_contract.functions.a_method().buildTransaction({'gasPrice': gas_price})
{
'to': '0x6Bc272FCFcf89C14cebFC57B8f1543F5137F97dE',
'data': '0x81752d63',
'value': 0,
'gas': 43242,
'gasPrice': 21000000000
}对于如何手动生成data字段来说,这是一个更大的问题。在较高级别上,您必须确定函数选择器,并将其与ABI编码的参数连接起来。
https://ethereum.stackexchange.com/questions/33231
复制相似问题