LazyDevMiner

vip
幣齡 7.3 年
最高等級 1
白天搬磚的後端工程師,晚上做鏈上數據分析的副業玩家。癡迷於尋找gas優化技巧,常用技術角度吐槽各公鏈設計缺陷和過度營銷。
深入了解重入攻擊及其有效防禦方法

重入攻擊是什麼?

重入攻擊是一種常見的智能合約安全漏洞,攻擊者通過反覆調用目標合約的函數,在目標合約完成狀態更新之前,多次提取資金或觸發惡意操作。

重入攻擊的工作原理

1. 調用階段:攻擊者通過惡意合約調用目標合約的提取函數
2. 回調階段:目標合約在更新餘額前向攻擊者轉帳
3. 再次調用:攻擊者的回退函數被執行,立即再次調用目標合約
4. 循環重複:直到目標合約資金耗盡

經典案例:The DAO 攻擊

2016年,攻擊者利用重入漏洞從The DAO合約中竊取了360萬個以太幣,導致以太坊硬分叉。

有效的防禦方法

1. 檢查-效果-交互模式(CEI)

```solidity
function withdraw(uint amount) public {
require(balances[msg.sender] >= amount);
balances[msg.sender] -= amount;
(bool success,) = msg.sender.call{value: amount}("");
require(success);
}
```

執行順序:
- 檢查:驗證條件
- 效果:更新狀態變數
- 交互:進行外部調用

2. 互斥鎖(Mutex/Guard)

```solidity
bool locked = false;

modifier noReentrant() {
require(!locked);
locked = true;
_;
locked = false;
}

function withdraw(uint amount) public noReentrant {
require(balances[msg.sender] >= amount);
balances[msg.sender] -= amount;
(bool success,) = msg.sender.call{value: amount}("");
require(success);
}
```

3. 使用 OpenZeppelin 的 ReentrancyGuard

```solidity
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";

contract SecureWithdrawal is ReentrancyGuard {
function withdraw(uint amount) public nonReentrant {
require(balances[msg.sender] >= amount);
balances[msg.sender] -= amount;
(bool success,) = msg.sender.call{value: amount}("");
require(success);
}
}
```

4. 拉取而非推送模式

```solidity
// 不推薦:推送模式
function sendReward(address recipient, uint amount) public {
recipient.call{value: amount}("");
}

// 推薦:拉取模式
mapping(address => uint) public rewards;

function claimReward() public {
uint amount = rewards[msg.sender];
rewards[msg.sender] = 0;
(bool success,) = msg.sender.call{value: amount}("");
require(success);
}
```

預防最佳實踐

1. 用狀態變數標記交互狀態
2. 在執行外部調用前完成所有狀態更新
3. 使用經過審計的安全庫
4. 進行全面的安全審計
5. 編寫重入測試用例
6. 使用靜態分析工具檢測

重入攻擊的變種

- 跨函數重入:攻擊不同的公共函數
- 跨合約重入:攻擊其他合約
- 讀取-修改-寫入競賽條件

結論

重入攻擊仍然是智能合約開發中最危險的威脅之一。採用檢查-效果-交互模式、互斥鎖和安全庫是防禦的關鍵。開發者應始終保持警覺,並遵循安全編碼最佳實踐。
重入攻擊是對智能合約最嚴重的安全威脅之一。本文將指導你不僅了解重入攻擊的運作方式,還能全面保護你的項目。
為了獲得完整的視角,我們將從基本概念開始
查看原文
展開全文
  • 讚賞
  • 留言
  • 轉發
  • 分享
Julia Leung的加密貨幣牌照戰略:香港加快交易所審批速度
香港證券及期貨事務監察委員會行政總裁Julia Leung宣布了批准新加密貨幣交易平台的相關舉措,強調該市對建立健全加密貨幣生態系統的承諾。最近批准HKVAX標誌著將加密貨幣交易所正常化的重要里程碑。隨著還有11個候選平台等待批准,香港旨在促進行業增長,同時確保投資者保護。
ai-icon本文摘要由 AI 總結生成
查看原文
展開全文
  • 讚賞
  • 留言
  • 轉發
  • 分享
看跌和看漲:兩個主宰交易世界的動物術語
"看漲"和"看跌"這兩個術語源自18世紀金融市場,象徵市場趨勢:看漲表示價格上升,而看跌意味著價格下降。這些動物比喻增強了當今波動性加密貨幣市場中的溝通和理解。
ai-icon本文摘要由 AI 總結生成
BTC-4.24%
ETH-4.41%
BNB-2.69%
查看原文
展開全文
  • 讚賞
  • 留言
  • 轉發
  • 分享
Snapshot 是什麼?深入理解區塊鏈狀態記錄機制
當參與像Uniswap或Cardano這樣的區塊鏈項目時,你是否曾想過為什麼空投只分配給特定的人?或者系統是如何確切知道你在特定時間點持有多少代幣的?答案在於一個重要但鮮少被提及的技術機制
UNI-6.38%
ADA-3.48%
W-6.7%
PYTH-5.28%
查看原文
展開全文
  • 讚賞
  • 留言
  • 轉發
  • 分享
MicroStrategy (MSTR) 是什麼?投資者的智慧比特幣投資工具
如果您正在考慮如何獲得比特幣 (BTC),那麼 MicroStrategy (MSTR) 是一個值得注意的替代方案。MSTR 是什麼?簡單來說,這是一種間接接觸加密貨幣市場的方式,無需直接持有數字資產。在最近幾週,
BTC-4.24%
查看原文
展開全文
  • 讚賞
  • 留言
  • 轉發
  • 分享
加密貨幣新聞:Solana 大幅突破,是否能突破 100 美元?
在加密貨幣市場正在復甦的背景下,近期加密貨幣新聞聚焦於 Solana 的發展動態,目前 SOL 價格在 94.95 美元附近交易。在機構投資者的強力支持和來自 ETF 產品的資金流入下,問題是 Solana 是否能夠繼續上升
SOL-2.62%
BTC-4.24%
ETH-4.41%
XRP-1.95%
查看原文
展開全文
  • 讚賞
  • 留言
  • 轉發
  • 分享
Pi Network (PI) 從 0.18 美元:在強烈賣壓中持久的支撐區
Pi Network (PI) 正在以 0.18 美元的價格交易,過去 24 小時內下跌 8.89%,與之前的交易時段相比顯示出顯著差異。在越南市場,這一價格約相當於 4,500 越南盾,反映了當前的匯率。儘管出現短期調整,PI 仍然保持其地位
PI-1.09%
查看原文
展開全文
  • 讚賞
  • 留言
  • 轉發
  • 分享
JVA:根據 Zacks 評估的特色咖啡細分市場投資機會
Coffee Holding Co., Inc. (JVA) 剛剛由全球領先的投資研究機構之一發布了詳細分析,評級為「超越市場」。此評價反映出對該公司股票在未來一段時間內將展現出優於大盤的表現的預期。
查看原文
展開全文
  • 讚賞
  • 留言
  • 轉發
  • 分享
任命Mike Selig为CFTC主席:加密货币市场将发生什么变化
今天的管理事件链标志著一個重大轉變。美國參議院剛剛通過了Mike Selig被任命為商品期貨交易委員會(CFTC)主席的決定 - 這一決定可能會重塑美國對數位資產的整體方法。這不是...
BTC-4.24%
查看原文
展開全文
  • 讚賞
  • 留言
  • 轉發
  • 分享
埃隆·馬斯克:從童年程序員到科技億萬富翁的非凡人生
埃隆·馬斯克是當今世界上最具影響力的企業家之一。1971年6月28日出生於南非比勒陀利亞的他,建立了一個涵蓋電動車、火箭、人工智能以及加密貨幣等多個領域的科技帝國。埃隆·馬斯克的人生是這些成就的最佳見證。
查看原文
展開全文
  • 讚賞
  • 留言
  • 轉發
  • 分享
Dragonfly 高管預測 BTC 將在市場份額下降前觸及 150,000 美元
Haseeb Qureshi 預測比特幣可能在 2026 年底達到 150,000 美元,但將因來自替代幣日益增加的競爭而失去市場份額。絕對價值的增長並不等同於市場主導地位,反映了加密貨幣市場的成熟。
ai-icon本文摘要由 AI 總結生成
BTC-4.24%
查看原文
展開全文
  • 讚賞
  • 留言
  • 轉發
  • 分享
M2 貨幣供應量:理解金融市場的關鍵
M2 貨幣供應量不僅僅是一個乾燥的經濟數字——它正是衡量整個經濟體健康狀況的指標,反映了系統中實際流通的貨幣數量。當你追蹤 M2 貨幣供應量的趨勢時,你正在解讀股票價格、數位貨幣價格、利率和機會的未來
查看原文
展開全文
  • 讚賞
  • 留言
  • 轉發
  • 分享
設置期貨訂單:從基礎到有效風險管理
永续期货 (futures) 如今已成为大多数加密货币交易所的常见功能。然而,并非每个人都清楚理解如何安全地下达期货订单。这是一种复杂的杠杆交易形式,其中一个错误的决定可能导致您损失全部资金。
BTC-4.24%
ETH-4.41%
查看原文
展開全文
  • 讚賞
  • 留言
  • 轉發
  • 分享
流動性池如何運作?您需要了解的關於流動性池的重要事項
如果你曾經使用過Uniswap或PancakeSwap等去中心化交易所,你肯定已經與流動性池進行了互動,但卻沒有意識到這一點。當你執行一筆交換交易時,你正在使用一個與傳統交易所完全不同的獨特系統。但流動性池實際上是這個系統的核心。
UNI-6.38%
CAKE-3.4%
ETH-4.41%
DEFI-2.87%
查看原文
展開全文
  • 讚賞
  • 留言
  • 轉發
  • 分享
Long 指令是什麼 - 新手交易者實用指南
當您進入加密貨幣交易世界時,您會很快意識到什麼是多頭單將是需要回答的第一個問題。這不僅是一個簡單的概念,而是您理解如何從市場獲利的基礎。本文將詳細介紹多頭單、空頭單以及背後的心態。
查看原文
展開全文
  • 讚賞
  • 留言
  • 轉發
  • 分享