Dao
為什麼沒有人利用 DAO 合約?
DAO 合約 (at
0xbb9bc244d798123fde783fcc1c72d3bb8c189413
) 在 2016 年被黑客入侵,但仍在執行,目前持有超過 43 個乙太幣:https://etherscan.io/address/0xbb9bc244d798123fde783fcc1c72d3bb8c189413
此外,它仍然經常進行交易,平均每週幾次。為什麼 DAO 不再被利用?在硬分叉期間進行了更改,以便
splitDAO
無法再呼叫合約中的易受攻擊的功能?
我研究了一點 DAO hack 的細節。鑑於這篇論文(DOI:10.1109/ICSAI.2017.8248566),黑客利用該
splitDao
功能(第 945 行)通過重入技巧來提取所有資金。拆分 DAO 時,newDao 合約得到
fundsToBeMoved
(第 986 行),它使用actualBalance()
- 在 Etherscan 上呼叫時似乎下溢,現在等於一個非常大的數字。因此,由於合約中沒有足夠的資金可以發送,交易就會拋出,從而阻止任何重入。