我正在建立一个简单的资金筹集,聪明的合同,并有问题,部署这个通过Remix。我希望在合同部署期间设置“目标”和“最小贡献”值(在wei中),因此有以下代码:
pragma solidity ^0.5.0;
contract FundRaiser {
// Initial storage variables
uint256 public goal;
uint256 public minimumContribution;
address public owner;
constructor(uint256 _goal, uint256 _minimumContribution) public {
goal = _goal;
minimumContribution = _minimumContribution;
owner = msg.sender;
}
}这在Remix中编译得很好,然后我尝试部署并具有以下提示符:

但是,如果我在这里输入两个大值(1000000000000000000,10000000000000000 -等于1 1ETH的目标,最小贡献为0.01ETH),那么我得到了错误:
creation of FundRaiser errored: Error encoding arguments: Error: invalid number value (arg="", coderType="uint256", value=10000000000000000, version=4.0.32)如果然后单击Deploy选项旁边的下拉箭头,它将显示以下内容:

奇怪的是,Remix似乎将第一个值转换为字符串(被引号包围),但没有将第二个值转换为字符串。如果我现在更新这些值,使两者都是字符串或两者都是数字,然后单击"transact“,那么它将很好地部署。
这是我使用Remix的错误还是错误??
发布于 2020-02-07 16:08:21
更新2月-2020年-使用新的Remix IDE再次尝试,并且似乎正确地部署了,即使在引号中没有包含大量的数据:

似乎是以十六进制而不是字符串的形式发送构造函数参数:

发布于 2019-08-19 12:11:15
这似乎是个混音错误。
当您使用web3部署它时,它应该正常工作。
一切都会好起来的。正如另一个答案所说的,你可以绕过这个问题。
发布于 2019-08-17 17:10:18
我也试过了,我的代码运行得很好。也没有这样的错误。我不能说bug或其他什么,只需确保您正在正确传递值。


我做的和你的一样,也犯了错误
创建错误的FundRaiser :错误编码参数:错误:无效数字值(arg="",type=" number ",value=10000000000000000)
Remix在提供数字时所做的是什么,它将其处理为字符串(在它们周围加上引号),并以数字形式给出答案。同样的事情也发生在这里。出现错误的原因是,只有第一个值被转换为字符串,而不是第二个值(正如单击下拉箭头所看到的那样)。混合不能处理第二个值,因为它周围没有双引号,因此会产生错误。
但请再次单击箭头,然后再单击。现在,具有引号的值和部署都将是成功的。
令人奇怪的是,Remix无法将这两个值转换为一个接一个地串在一起。但别担心。这不是你身边的错误或任何错误。
https://ethereum.stackexchange.com/questions/73995
复制相似问题