【问题标题】:ERROR: invalid address (arg="", coderType="address", value=[0])错误:地址无效(arg="",coderType="address",value=[0])
【发布时间】:2021-01-06 12:08:18
【问题描述】:

我正在使用 truffle 和 ganache 构建一个代币智能合约。我正在测试传递函数。代码在下图中

在我的 token.sol 文件中,我创建了一个函数名转移

function transfer(address _to, uint _value) public {

当我使用命令“truffle test”运行测试时

它抛出了这个错误“invalid address (arg="", coderType="address", value=[0])”

请问我该如何解决这个问题。我认为它来自新的 truffle 编译器,因为我在尝试使用命令 web3.eth.accounts 获取我的 ganache 中的帐户时也遇到了错误,我了解到它已被贬低。

【问题讨论】:

  • 通常,如果您遇到此问题,您实际上并没有将值传递给函数 - 仔细检查您是否设置了地址或变量来保存地址,并且您肯定在传递它进入函数 - 你得到的错误消息基本上是说参数是空的。

标签: blockchain solidity smartcontracts truffle ganache


【解决方案1】:

几天前我遇到了同样的问题,我解决了这个

await token1.transfer(accountAddress, quantTokens1ToSend)

你的传输函数需要2个参数_to和value,你不需要像你放的那样放from,因为from地址将是tokenInstance合约地址,命名为msg.sender在solidity中,我推荐还要将 await 关键字放在 tokenInstance.transfer 之前,因为它是一个承诺,您必须在返回之前等待它的结果(这不是规则,但我推荐)

在这种情况下调用智能合约的推荐方式可能是:

await tokenInstance.transfer(accounts[0], '250000')

【讨论】:

  • 请描述一下,为什么它应该解决这个问题。纯代码答案没有用
猜你喜欢
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
  • 2019-09-06
相关资源
最近更新 更多