Solidity
嘗試將地址作為參數傳遞給合約時操作碼無效
當我嘗試將地址作為參數傳遞給這個 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 將新值附加到數組中。有用的閱讀: