Remix

重新混合部署錯誤編碼參數

  • February 7, 2020

我正在建構一個簡單的籌款智能合約,但在通過 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 - 這相當於目標為 1ETH,最小貢獻為 0.01ETH),則會出現錯誤:

creation of FundRaiser errored: Error encoding arguments: Error: invalid number value (arg="", coderType="uint256", value=10000000000000000, version=4.0.32)

如果我然後點擊“部署”選項旁邊的下拉箭頭,則會顯示以下內容: 在此處輸入圖像描述

奇怪的是,Remix 似乎已將第一個值轉換為字元串(用引號括起來),而不是第二個值。如果我現在更新值,以便兩者都是字元串或都是數字並點擊“事務”,那麼它部署得很好。

這是我在使用 Remix 時的錯誤還是錯誤?

2020 年 2 月更新 - 使用新的 Remix IDE 再次嘗試此操作,即使大量未包含在引號中,似乎也可以正確部署:

在此處輸入圖像描述

似乎以十六進製而不是字元串發送建構子參數: 在此處輸入圖像描述

這似乎是一個混音錯誤。

當您使用 web3 左右部署它時,它應該可以正常工作。

一切都應該沒問題。正如另一個答案所述,您可以繞過此問題。

引用自:https://ethereum.stackexchange.com/questions/73995