主网在 Remix Solidity 智能合约中部署地址数组作为构造函数参数不起作用
Posted
技术标签:
【中文标题】主网在 Remix Solidity 智能合约中部署地址数组作为构造函数参数不起作用【英文标题】:Mainnet deploying array of addresses as constructor parameter in Remix Solidity smart contract does not work 【发布时间】:2019-04-04 15:11:16 【问题描述】:我正在尝试通过 Remix/Metamask 将智能合约部署到主网。我有一个构造函数参数的地址数组,无法接受交易。我在每个地址周围都尝试了双引号“”和单引号。任何人都知道如何编写数组参数,以便将其解释为数组而不是字符串(见图)?
谢谢!
【问题讨论】:
您可以发布您为部署合同而拨打的电话吗?根据我的经验,一个简单的字符串数组就足够了,例如:params = ["addr1","addr2"]
,然后将 params 作为构造函数参数传递。
不幸的是,我无法缝合上传另一张图片以更好地展示它,但这只是网络应用程序中的 Remix Deploy。在 Run 部分中,您可以在 Deploy 下输入构造函数参数。我没有做任何代码来部署,只是将数组添加到部署下的参数框中。
您至少可以将您传递给构造函数的参数发布。当然,如果这里发布的内容太大,只需在中间添加.....
。我对其进行了测试,它会接受这样传递的地址数组:["0xca35b7d915458ef540ade6068dfe2f44e8fa733c","0x14723a09acff6d2a60dcdf7aa4aff308fddc160c"]
【参考方案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"]
结果(注意第一个地址显示在日志输出中):
【讨论】:
以上是关于主网在 Remix Solidity 智能合约中部署地址数组作为构造函数参数不起作用的主要内容,如果未能解决你的问题,请参考以下文章
智能合约实战 solidity 调试环境设置 Debugger/remix
智能合约实战 solidity 调试环境设置 Debugger/remix
智能合约实战 solidity 语法学习 02 [ SPDX remix控制台介绍 ]