Solidity

什麼是地址(this)?

  • January 18, 2022

根據我的理解,合約自己的地址是我們使用msg.sender分配給合約所有者的地址。但是我在 SE 上看到了這個問題,其中描述了合約可以使用**address(this)**訪問自己的地址,但是當我編譯以下腳本時

address owner; 
function test (string _name)public view returns(bool){
 
   owner = msg.sender; 
   return owner == address(this);
}

我得到布爾結果為假。

那麼 msg.sender 和 address(this) 有什麼區別。

this指進行呼叫的合約實例(您可以擁有同一個合約的多個實例)。

address(this)指進行呼叫的合約實例的地址。

msg.sender指呼叫合約的地址。

因此,address(this)msg.sender是兩個唯一的地址,第一個是指合約實例的地址,第二個是指合約呼叫的地址。

this是指合約地址。合約是不可管理的賬戶,沒有任何私鑰。這意味著如果您創建了合約,則您沒有合約 A 的私鑰。 msg.sender = 合約呼叫者(誰在呼叫您的合約) tx.origin = 交易發起者

更多詳情請參考以下連結:

http://solidity.readthedocs.io/en/develop/units-and-global-variables.html

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