Solidity

運算符 >= 與類型 tuple() 和 uint256 不兼容

  • March 12, 2021

我試圖從外部契約中返回 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()您界面中的函式沒有返回任何值,因此requirein 函式stake()無法將餘額與金額進行比較。

您需要更新介面以返回餘額:

interface TokenInterface {
   function balanceOf(address account) view external returns(uint256);
}

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