Remix
重新混合部署錯誤編碼參數
我正在建構一個簡單的籌款智能合約,但在通過 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 左右部署它時,它應該可以正常工作。
一切都應該沒問題。正如另一個答案所述,您可以繞過此問題。