【问题标题】:Mainnet deploying array of addresses as constructor parameter in Remix Solidity smart contract does not work主网在 Remix Solidity 智能合约中部署地址数组作为构造函数参数不起作用
【发布时间】:2019-04-04 15:11:16
【问题描述】:

我正在尝试通过 Remix/Metamask 将智能合约部署到主网。我有一个构造函数参数的地址数组,无法接受交易。我在每个地址周围都尝试了双引号“”和单引号。任何人都知道如何编写数组参数,以便将其解释为数组而不是字符串(见图)?

谢谢!

【问题讨论】:

  • 您可以发布您为部署合同而拨打的电话吗?根据我的经验,一个简单的字符串数组就足够了,例如:params = ["addr1","addr2"],然后将 params 作为构造函数参数传递。
  • 不幸的是,我无法缝合上传另一张图片以更好地展示它,但这只是网络应用程序中的 Remix Deploy。在 Run 部分中,您可以在 Deploy 下输入构造函数参数。我没有做任何代码来部署,只是将数组添加到部署下的参数框中。
  • 您至少可以将您传递给构造函数的参数发布。当然,如果这里发布的内容太大,只需在中间添加.....。我对其进行了测试,它会接受这样传递的地址数组:["0xca35b7d915458ef540ade6068dfe2f44e8fa733c","0x14723a09acff6d2a60dcdf7aa4aff308fddc160c"]

标签: blockchain ethereum solidity remix


【解决方案1】:

您只需要用双引号传入地址数组。例如,

pragma solidity ^0.4.25;

contract Test {
  address[] mAddrs;
  event Deployed(address indexed theaddr);

  constructor(address[] addrs) public {
    mAddrs = addrs;

    for (uint8 i = 0; i < mAddrs.length; i++)
      emit Deployed(mAddrs[i]);
  }
}

部署参数设置为["0xca35b7d915458ef540ade6068dfe2f44e8fa733c", "0x14723a09acff6d2a60dcdf7aa4aff308fddc160c", "0x4b0897b0513fdc7c541b6d9d7e929c4e5364d2db"]

结果(注意第一个地址显示在日志输出中):

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-14
    • 2022-08-05
    • 2018-11-16
    • 2022-01-04
    • 2022-08-20
    • 2021-01-21
    • 2022-01-26
    • 2018-09-16
    相关资源
    最近更新 更多