Solidity
運算符 >= 與類型 tuple() 和 uint256 不兼容
我試圖從外部契約中返回 msg.sender 的餘額,但是當我嘗試將 pair.balanceOf() 與 uint256 進行比較時,它告訴我它們不具有可比性。
我在 Remix 上使用 Solidity 0.8.0 和 OpenZeppelin 合約。
interface TokenInterface { function balanceOf(address account) view external; } contract Contract { address public tokenAddress = 0xc5d63121bA479BAeb666a896e84283a1a0AefAe6; TokenInterface token = TokenInterface(tokenAddress); function stake(uint256 amount) public { require(token.balanceOf(msg.sender) >= amount, "Insufficient balance."); ... } }
另一個合約是使用 OpenZeppelin 建構的 ERC20。
感謝,並有一個愉快的一天 :)
這是因為
balanceOf()
您界面中的函式沒有返回任何值,因此require
in 函式stake()
無法將餘額與金額進行比較。您需要更新介面以返回餘額:
interface TokenInterface { function balanceOf(address account) view external returns(uint256); }