Solidity

嘗試將地址作為參數傳遞給合約時操作碼無效

  • September 30, 2019

當我嘗試將地址作為參數傳遞給這個 addEmployee 函式時,它給了我這個錯誤

invalid opcode
   The execution might have thrown.
   Debug to get more information.
modifier onlyOwner()
{
   require(msg.sender==owner,"msg.sender is not the Owner");
   _;
}

function addEmployee(address payable employeeWallet) onlyOwner external
{
   emp[emp.length-1] = employeeWallet;
}

(這只是一個有根據的猜測,100% 確定我需要查看您的整個契約以及導致錯誤的一系列呼叫)

當您嘗試INVALID訪問尚未初始化的儲存位置時會引發操作碼。在這種情況下,您試圖將數據儲存emp在 location的動態數組中emp.length-1。因為 的長度emp為零,所以計算emp.length-1下溢並且 EVM 在無法訪問時恢復emp[2^256-1]

作為替代方案,我建議使用emp.push(employeeWallet)for 將新值附加到數組中。

有用的閱讀:

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