首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构建原始事务以与契约交互,并与web3.py交互

如何构建原始事务以与契约交互,并与web3.py交互
EN

Ethereum用户
提问于 2017-12-13 00:39:24
回答 1查看 12.6K关注 0票数 4

感谢这个社区的支持,我能够使用本文中提供的指导在网络上创建事务:如何使用Web3.py将事务发送到myetherapi.com

要发送事务,我需要引用http://www.myetherapi.com/中显示的允许的方法。考虑到这一点,我可以在本地签署一个事务,并使用sendRawTransaction方法将其广播到网络。

我现在的问题是如何创建一个事务来调用已经部署在网络上的契约中的函数。您将如何修改事务参数以调用特定的契约并调用该契约中的特定函数。

这是一个简单事务的例子。创建调用现有合同的原始事务需要什么?

代码语言:javascript
复制
transaction = {
        'to': '0xF0109fC8DF283027b6285cc889F5aA624EaC1F55',
        'value': 1000000000,
        'gas': 2000000,
        'gasPrice': 234567897654321,
        'nonce': 0,
        'chainId': 1
    }

我遇到了麻烦,因为web3.py中典型的contract方法无法通过MyEtherAPI获得。而且,如果这是关键的话,我也可以使用web3.py的v4。

EN

回答 1

Ethereum用户

发布于 2017-12-13 17:55:57

查看Web3.py版本4的contract中的新buildTransaction()方法。

创建契约实例之后,您可以为合同函数构建一个事务,如下所示:

代码语言:javascript
复制
>>> 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编码的参数连接起来。

票数 3
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/33231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档