Solidity
什麼是地址(this)?
根據我的理解,合約自己的地址是我們使用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