首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在web3.py中传递构造函数参数

如何在web3.py中传递构造函数参数
EN

Ethereum用户
提问于 2019-03-26 06:08:40
回答 1查看 1.3K关注 0票数 0

我正在尝试使用web3.py部署智能合同。以下是我的简单智能合同:

代码语言:javascript
复制
pragma solidity ^0.5.0;

contract homeAutomation{
  string public greeting;

  constructor(string memory _greet) public {
    greeting=_greet;
  }

  function greet(string memory _gree) public {
    greeting =_gree;
  }
}

下面是我的web3.py代码

代码语言:javascript
复制
contract = w3.eth.contract(abi=abi, bytecode=bytecode)
K = input('write your greeting:' )
# Get transaction hash from deployed contract
tx_hash = contract.deploy(K,transaction={'from': w3.eth.accounts[0], 'gas': 410000})
# Get tx receipt to get contract address
tx_receipt = w3.eth.getTransactionReceipt(tx_hash)
contract_address = tx_receipt['contractAddress']

当我尝试这个的时候,我会犯错误。

代码语言:javascript
复制
TypeError: deploy() got multiple values for argument 'transaction'

因此,请让我知道如何传递构造函数参数来部署函数。

EN

回答 1

Ethereum用户

回答已采纳

发布于 2019-03-26 06:47:39

参数应该在数组中传递,所以只需将K更改为[K]即可。

此外,我建议您要么指定所有参数名,要么不指定任何参数名称,在这种情况下,它们的顺序非常重要:

  • contract.deploy(args=[K],transaction={...}) # order is not important
  • contract.deploy({...},[K]) # order is important

请参阅此函数这里的正式文档。

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

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

复制
相关文章

相似问题

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