Solidity

有人請解釋一下“支付和非支付地址的概念只存在於編譯時,而不是在合約編譯後”

  • June 8, 2020

實際上我正在閱讀這個答案https://ethereum.stackexchange.com/a/64109/55286。而這個人說,應付地址和不應付地址的概念只存在於 Solidity 類型系統中編譯時。應付地址和非應付地址之間的差異在編譯的合約程式碼中消失了。

這句話是否意味著地址和應付地址僅在編譯時定義,但在部署合約後,所有到達合約的地址也都是應付的?我不知道我很困惑

我試過但不明白請幫忙

正如您連結的答案底部(在“基本原理”下)中所解釋的那樣,這種差異使程序員能夠知道哪些地址是用來接收乙太幣的,哪些不是。它是語言提供的靜態安全措施(如靜態類型檢查)。address payable有成員transfer,沒有(Solidity >= 0.5)sendaddress所以:

address a = "0xsda";
address payable b = "0xsad";
a.transfer(1); // compilation error
b.transfer(1); // good

更多資訊的文件連結:https ://solidity.readthedocs.io/en/v0.5.3/types.html#address 。

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