Solidity
請解決此錯誤
為什麼我在修飾函式中收到錯誤,它在 _amount 變數名稱下顯示紅色下劃線。
我還想問一下 require 函式是否在修飾符中工作,因為當我寫我的語句**“require(_checkOwner() ||$$ msg.sender $$>_amount,“You are not allowed!”);"在修飾符中顯示錯誤。所以現在我嘗試在函式中定義上述 require 語句,然後在修飾符中呼叫它。這是正確的方法嗎??還有請回答為什麼我在修飾函式“requiredCondition(uint _amount);”中呼叫的語句中出現 _amount 錯誤。**
pragma solidity ^0.8.16; import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol"; contract SharedWallet is Ownable{ mapping(address => uint) public allowance; fallback () external payable{ } receive () external payable { } modifier ownerOrAllowed(uint _amount) { requiredCondition(uint _amount); _; } function requiredCondition(uint _amount) public { require(_checkOwner() || allowance[msg.sender] >_amount,"You are not allowed!"); } function addAllowance(address _who, uint _amount) public onlyOwner{ allowance[_who] = _amount; } function withdrawMoney(address payable _to, uint _amount) public ownerOrAllowed(_amount){ _to.transfer(_amount); } }
您正在(重新)聲明一個已被使用/聲明為參數的變數名。取出第二個 uint
modifier ownerOrAllowed(uint _amount) { requiredCondition(_amount); _; }
此外,_checkOwner() 不返回布爾值。你不能這樣使用它。如果 msg.sender 不是所有者,它只會恢復
您在修飾函式中遇到錯誤,它在 _amount 變數名稱下顯示紅色下劃線,因為您在“_amount”之前編寫了數據類型“uint”。此外,您的語句“require(_checkOwner() ||
$$ msg.sender $$>_amount,“You are not allowed!”);" 因為運算符 || 與類型 tuple() 和 bool 不兼容。