Solidity

代理合約到底是什麼,為什麼它涉及安全漏洞?

  • December 2, 2021

我正在查看最近的 FE badger DAO 漏洞利用和其中的這個 Twitter 執行緒https://twitter.com/CryptoCatVC/status/1466380960648380419?s=20

作者在簽署元遮罩交易之前給出的一條建議是檢查合約的 etherscan 地址,看看它是否是代理合約。

代理契約到底是什麼?如何檢查契約是否為代理契約?與代理合約互動有哪些風險?

代理合約是將呼叫委託給另一個合約的合約。要與實際合約進行互動,您必須通過代理,並且代理知道將呼叫委託給(目標)哪個合約。

當您希望合約可升級時,使用代理模式。這樣代理合約保持不可變,但您可以在代理合約後面部署一個新合約 - 只需更改代理合約內的目標地址。

因此,使用代理合約有點危險,因為不能保證底層(目標)合約沒有被更改為惡意合約。關於如何檢測代理合約沒有嚴格的定義,但基本上是將功能委託給另一個合約的任何東西。您必須分析原始碼才能做出決定。

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