Solidity

如何正確呼叫<address>.balance(uint256)獲取特定地址的餘額

  • January 8, 2022

我是 Solidity 的新手。我通過閱讀官方文件來學習,即Solidity我正在嘗試使用簡單的balance方法來獲得地址的平衡。下面是我的程式碼:

pragma solidity ^0.5.1;


contract Firstry {
   address abc = 0xCBD6832Ebc203e49E2B771897067fce3c58575ac ;
   abc.balance(unit 256) ; 
}

在嘗試編譯它時,我收到以下錯誤:

ParseError : Expected Identifier but got '('.

誰能幫我解決我做錯了什麼?

你做錯了什麼是你試圖獲得平衡。

.balance是地址的簡單可讀屬性而不是函式,因此您只能通過使用來呼叫它

address.balance;代替address.balance();

這是主要問題。

現在您必須將值分配給變數,然後使用函式獲取該值。

這是完整的程式碼

contract test {
       address myAddress = 0xCBD6832Ebc203e49E2B771897067fce3c58575ac; 
       uint256 balance = myAddress.balance;

       function getBalance() public view returns (uint256) {
           return balance;
       }
}

這是solidity 5.17版文件的連結

如果您剛剛開始,我建議您學習使用最新的文件而不是更舊的版本

您正在嘗試在變數上呼叫 balance。這相當於做類似的事情:

let address = "0xCBD6832Ebc203e49E2B771897067fce3c58575ac";
console.log(address.balance(uint256 1);

要獲得契約餘額,您可以這樣做:

address(this).balance

這個問題在這裡解釋了這意味著什麼

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