Solidity
錯誤編碼參數:部署到 Remix 後 BigNumber 字元串無效
我想創建一個系統,允許公司在契約中保存多個數據,同時許多公司可以在這個系統中保存數據。
所以我創建了struct的映射,並且有一個數組可以讓多個數據對應它們的索引儲存在一個struct中。
但是當我將它部署在 Remix 上,並想用函式saveStandard儲存時,出現以下錯誤:
transact to Storage.saveStandard errored: Error encoding arguments: Error: invalid BigNumber string (argument="value", value="0.2", code=INVALID_ARGUMENT, version=bignumber/5.4.1)
我的以下程式碼發生了什麼?
pragma solidity >=0.7.0 <0.9.0; contract Storage{ struct UserInfo { uint index; string[] time; string[] source; uint[] emission; } mapping (string => UserInfo) public users; function saveStandard(uint input_material, uint weight, string memory input_time, string memory input_source) public returns (string memory, uint, uint, string memory){ uint id = users[input_source].index + 1; users[input_source].index = id; users[input_source].time[id] = input_time; uint Combustion = weight * input_material; uint Process = weight * input_material;//input_material is the emission factor users[input_source].emission[id] = Combustion + Process; return (input_source, Combustion, Process, input_time); } function search(string memory input_source) public view returns (uint, string memory) { uint id = 0; while (id <= users[input_source].index) { id += 1; return (users[input_source].emission[id], users[input_source].time[id]); } } }
我已經找出問題所在了。
當我輸入
input_material
ABI 時。我以十進制形式輸入它,但似乎不支持小數。當我以整數形式輸入它時,它起作用了。