首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新混合部署错误编码参数

重新混合部署错误编码参数
EN

Ethereum用户
提问于 2019-08-17 16:33:00
回答 3查看 6K关注 0票数 2

我正在建立一个简单的资金筹集,聪明的合同,并有问题,部署这个通过Remix。我希望在合同部署期间设置“目标”和“最小贡献”值(在wei中),因此有以下代码:

代码语言:javascript
复制
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),那么我得到了错误:

代码语言:javascript
复制
creation of FundRaiser errored: Error encoding arguments: Error: invalid number value (arg="", coderType="uint256", value=10000000000000000, version=4.0.32)

如果然后单击Deploy选项旁边的下拉箭头,它将显示以下内容:

奇怪的是,Remix似乎将第一个值转换为字符串(被引号包围),但没有将第二个值转换为字符串。如果我现在更新这些值,使两者都是字符串或两者都是数字,然后单击"transact“,那么它将很好地部署。

这是我使用Remix的错误还是错误??

EN

回答 3

Ethereum用户

回答已采纳

发布于 2020-02-07 16:08:21

更新2月-2020年-使用新的Remix IDE再次尝试,并且似乎正确地部署了,即使在引号中没有包含大量的数据:

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

票数 1
EN

Ethereum用户

发布于 2019-08-19 12:11:15

这似乎是个混音错误。

当您使用web3部署它时,它应该正常工作。

一切都会好起来的。正如另一个答案所说的,你可以绕过这个问题。

票数 3
EN

Ethereum用户

发布于 2019-08-17 17:10:18

我也试过了,我的代码运行得很好。也没有这样的错误。我不能说bug或其他什么,只需确保您正在正确传递值。

编辑回答:

我做的和你的一样,也犯了错误

创建错误的FundRaiser :错误编码参数:错误:无效数字值(arg="",type=" number ",value=10000000000000000)

Remix在提供数字时所做的是什么,它将其处理为字符串(在它们周围加上引号),并以数字形式给出答案。同样的事情也发生在这里。出现错误的原因是,只有第一个值被转换为字符串,而不是第二个值(正如单击下拉箭头所看到的那样)。混合不能处理第二个值,因为它周围没有双引号,因此会产生错误。

但请再次单击箭头,然后再单击。现在,具有引号的值和部署都将是成功的。

令人奇怪的是,Remix无法将这两个值转换为一个接一个地串在一起。但别担心。这不是你身边的错误或任何错误。

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

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

复制
相关文章

相似问题

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