Security
視圖函式會導致重入漏洞嗎?
眾所周知,在更改合約中的某些內容之前呼叫外部函式會導致稱為“重入漏洞”的安全問題。
通過介面的視圖成員呼叫外部函式會導致重入漏洞嗎?
通過介面成員的呼叫
view
是通過STATICCALL
操作碼完成的。正如我的實驗所證實的那樣,Solidity 0.6.0 確實STATICCALL
在這種情況下使用。https://github.com/ethereum/EIPs/blob/master/EIPS/eip-214.md
為了提高智能合約的安全性,該提案添加了一個新的操作碼,可用於呼叫另一個合約(或自身),同時不允許在呼叫期間對狀態進行任何修改(及其子呼叫,如果存在)。
因此,目前版本的 Solidity 中不存在此類漏洞。
但是,舊版本的 Solidity很容易受到攻擊。請參閱此乙太坊拉取請求以了解過去所做的更改。
有趣的是,我自己只是來尋找這個問題的答案。據我了解,不存在傳統意義上的重入漏洞,因為視圖成員無法修改狀態。