Solidity

委託呼叫時“address(this)”的值是多少?

  • November 16, 2020

假設您有一個可升級的代理“Foo”,它通過 DELEGATECALL 呼叫實現合約“Bar”。

在“Bar”中,有一個函式使用 Solidity 語法address(this)來檢索目前合約的地址。

當通過可升級代理“Foo”進行呼叫時,“目前”合約是什麼?

記住 DELEGATECALL 是如何工作的

DELEGATECALL 基本上說我是一個契約,我允許(委派)你對我的儲存做任何你想做的事情。DELEGATECALL 是發送合約的安全風險,需要相信接收合約會很好地處理儲存。

所以答案是address(this)返回“Foo”代理的地址,而不是“Bar”實現的地址。如果答案不是這樣,這將不是“代表團”,不是嗎?

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