-
bitcoin $77206.799877 USD
-0.54% -
ethereum $2480.536928 USD
-1.49% -
tether $0.999766 USD
0.02% -
bnb $717.768301 USD
-0.81% -
xrp $1.398854 USD
0.93% -
usd-coin $0.999946 USD
0.01% -
solana $100.783952 USD
-0.71% -
tron $0.337610 USD
-0.52% -
hyperliquid $79.006439 USD
-1.08% -
zcash $1143.411926 USD
0.63% -
dogecoin $0.082676 USD
-1.89% -
monero $513.505414 USD
1.54% -
chainlink $11.403390 USD
-0.09% -
unus-sed-leo $8.960483 USD
-0.02% -
cardano $0.204348 USD
-2.23%
區塊鏈中的智能合同漏洞是什麼?
Smart contracts, while powerful, are vulnerable to exploits like reentrancy, overflow, and unchecked calls, making secure coding practices essential for blockchain developers.
2025/06/13 19:35
智能合同簡介
智能合約是與直接寫入代碼的合同條款的自我執行協議。他們在區塊鏈生態系統中起著至關重要的作用,尤其是在以太坊等平台上。但是,儘管有好處,但智能合約仍可能包含攻擊者出於惡意目的而利用的漏洞。這些缺陷通常源於編碼錯誤,設計監督或對編程結構的不當使用。
了解這些漏洞對於開發人員和用戶都至關重要,因為它們可以導致重大的財務損失或系統失敗。本文深入研究了常見的智能合同漏洞類型,它們如何表現以及可以採取哪些步驟來減輕它們。
重新進入攻擊
最臭名昭著的智能合同漏洞之一是重新進入攻擊,在Dao Hack中被聞名。在更新內部狀態變量之前進行外部合同調用時,會發生這種漏洞。結果,攻擊者可以在完成執行之前遞歸地回到原始功能中。
為了說明這一點:
- 合同將Ether發送到用戶地址。
- 用戶的地址指向惡意合同。
- 在發送合同更新余額之前,惡意合同再次調用相同的功能。
- 此遞歸環路從合同中流失了資金。
緩解策略包括:
- 使用檢查效應的交互模式
- 使用靜音鎖來防止再入
- 避免直接轉移到外部地址
開發人員必須確保所有關鍵狀態變化都發生在任何外部呼叫以防止此類漏洞的情況下發生。
整數溢出和下水
智能合約中的另一個普遍問題涉及整數溢出和下水。在0.8.0之前的固定版本中,算術操作不會自動恢復在溢出或下面的上方。這使攻擊者可以操縱超出預期範圍的價值。
例如:
- 如果將令牌餘額存儲為一個無符號整數並以比保持的更大的值減去,則將其包圍至非常高的數字。
- 攻擊者可以用它來人為地膨脹其令牌餘額。
為了解決這個問題:
- 使用Solidity版本0.8.0或更高版本,其中包括內置的溢出檢查
- 為早期版本實施Safemath庫
- 在執行算術操作之前,請仔細驗證輸入值
這些預防措施有助於維持數據完整性並防止未經授權的數字狀態操縱。
未選中的外部呼叫
智能合約經常與其他合同或外部職能相互作用。當這些相互作用未正確檢查時,它們可以引入漏洞。未經檢查的外部呼叫可能會返回false或提出錯誤,而無需正確處理呼叫合同。
潛在風險包括:
- 寄給無效合同地址的資金
- 執行仍在繼續執行
- 出乎意料的行為,由於未經治療的例外
最佳實踐涉及:
- 始終檢查外部呼叫的返回值
- 僅在必要時才使用低級呼叫,例如
call,delegatecall或staticcall - 確保後備功能不會消耗過多的氣體
通過驗證外部互動,開發人員可以防止沉默失敗並增強合同可靠性。
氣限
區塊鏈交易具有氣體限制,這限制了交易可以執行的計算量。包含無界迭代的循環的合同可能會超過此限制,從而導致交易失敗或變得過於昂貴。
在以下情況時會出現常見問題
- 通過大型陣列或映射迭代
- 基於動態輸入執行計算
- 允許用戶控制的循環長度
避免與天然氣有關的問題:
- 重組邏輯以避免在可能的情況下循環
- 使用鍊鍊解決方案進行重型計算
- 限制循環中最大迭代次數
考慮到氣體效率的合同確保更順暢執行和更好的用戶體驗。
前跑和交易順序
在公共區塊鏈中,交易在開采之前可以看到。這種透明性打開了前進攻擊的大門,惡意演員觀察未決的交易,並以較高的汽油費用提交自己的汽油費,以先執行。
這種情況的示例:
- 拍賣中的競標
- 分散交流的價格敏感交易
- 改變狀態的功能調用取決於交易順序
防禦措施包括:
- 使用委員會的計劃方案隱藏敏感數據
- 在適用的情況下隨機執行訂單
- 設計對重新排序交易有彈性的系統
對交易可見性和礦工行為的認識有助於製定更安全的智能合同邏輯。
常見問題(常見問題解答)
問題1:智能合同漏洞可以完全消除嗎?儘管很難消除所有風險,但遵循最佳實踐,使用正式的驗證工具並進行審核會大大減少可利用錯誤的可能性。
問題2:較新的區塊鏈平台是否不太容易出現智能合同漏洞?一些較新的平台包含更嚴格的默認行為(例如自動溢出檢查)和改進的開發框架。但是,安全性最終取決於開發人員的勤奮,無論平台如何。
問題3:在部署前,如何測試我的智能合約以確保漏洞?使用Slither或Oyente等靜態分析工具,使用Truffle等框架進行單元測試,並考慮專業審核。模擬邊緣病例和對抗條件也至關重要。
問題4:在智能合約中使用第三方圖書館安全嗎?如果第三方圖書館經過審核和廣泛使用,則可以安全。但是,在將其集成到合同中之前,請務必查看其源代碼並了解其含義。
免責聲明:info@kdj.com
所提供的資訊並非交易建議。 kDJ.com對任何基於本文提供的資訊進行的投資不承擔任何責任。加密貨幣波動性較大,建議您充分研究後謹慎投資!
如果您認為本網站使用的內容侵犯了您的版權,請立即聯絡我們(info@kdj.com),我們將及時刪除。
- 美國檢察官在伊朗石油案進展中追蹤 6,100 萬美元 USDT
- 2026-09-16 08:45:01
- 解讀「數位資產稅收確定性法案」:解密加密稅法案、加密貨幣挖礦稅和洗售
- 2026-09-16 08:50:02
- 比特幣鏈上數據、BIS 研究、傳輸數據盲點:揭開加密指標的「嘈雜」現實
- 2026-09-16 08:55:01
- 比特幣 ETF 流入、流出和黃金:來自紐約市的流沙報告
- 2026-09-16 00:35:01
- BAE Altcoin Hamlesi:阿聯酋的數位身分雪崩
- 2026-09-15 16:35:02
- 比特幣、以太幣和加密貨幣定位:駕馭分歧和彈性的市場
- 2026-09-15 13:05:01
相關知識
什麼是 DAI?它與 USDT 有何不同?
2026-09-08 17:00:22
市場波動模式1. 自2021年以來,Bitcoin超過68%的交易日在24小時窗口內價格波動超過15%。 2. 在流動性較低的時期,尤其是在 02:00 至 06:00 UTC 期間,以太坊表現出比 Bitcoin 更高的日內波動性。 3. 穩定幣脫鉤事件(例如 2023 年 3 月的 USDC 事...
為什麼穩定幣會失去 1 美元的掛鉤?
2026-09-08 02:00:03
儲備組成和透明度差距1. 許多穩定幣聲稱完全由現金或短期美國國債支持,但儲備揭露往往缺乏即時驗證機制。 2. 第三方證明可能僅每季進行一次,從而留下較長的窗口,使不匹配的資產負債結構仍未被發現。 3. 一些發行人持有的商業票據或逆回購協議存在未反映在公共資產負債表中的交易對手風險。 4. 鏈下銀行關...
什麼是加密貨幣中的自我託管以及為什麼它很重要?
2026-09-10 04:19:32
定義和核心機制1. 自我保管是指個人保留對其私鑰的完全控制權,而不將該權力委託給任何第三方服務的做法。 2. 自我託管錢包的伺服器上不持有資產;相反,它提供了一個使用本地儲存的加密金鑰與區塊鏈網路互動的介面。 3. 使用者的裝置(無論是智慧型手機、桌上型電腦或硬體模組)託管種子短語和私鑰,並且在正常...
什麼是多重簽名錢包以及它何時有用?
2026-09-12 14:20:01
定義及核心架構1. 多重簽章錢包是一種加密結構,需要多個私鑰來授權單一區塊鏈交易。 2. 它在M-of-N 簽章方案下運行,其中M表示所需的最小簽章數量, N表示授權簽章者的總數。 3. 每個簽署者產生獨立的金鑰對;他們的公鑰被共同嵌入到透過確定性雜湊導出的唯一鏈上位址中。 4. 沒有任何一個參與者...
Bitcoin 與閃電網路:有什麼不同?
2026-09-13 15:40:16
核心架構及交易模型1. Bitcoin 在單層、無需許可的區塊鏈上運行,其中每筆交易都經過加密驗證,在數千個全節點上傳播,並大約每十分鐘永久記錄在連續區塊中。 2. 閃電網絡作為直接建構在 Bitcoin 的 UTXO 模型之上的點對點覆蓋網絡,依賴於由時間鎖定、可撤銷的承諾交易強制執行的雙向支付通...
什麼是閃電網路? Bitcoin 交易如何變得更快?
2026-09-08 07:00:16
閃電網路核心架構1. 閃電網路作為直接建構在 Bitcoin 區塊鏈之上的第二層協定運行,完全依賴 Bitcoin 的加密安全模型,無需引入新的共識規則。 2. 使用2-of-2多重簽名地址在參與者之間建立雙向支付通道,雙方必須共同簽名才能將資金移出通道。 3. 每個通道都透過鏈上融資交易進行初始化...
什麼是 DAI?它與 USDT 有何不同?
2026-09-08 17:00:22
市場波動模式1. 自2021年以來,Bitcoin超過68%的交易日在24小時窗口內價格波動超過15%。 2. 在流動性較低的時期,尤其是在 02:00 至 06:00 UTC 期間,以太坊表現出比 Bitcoin 更高的日內波動性。 3. 穩定幣脫鉤事件(例如 2023 年 3 月的 USDC 事...
為什麼穩定幣會失去 1 美元的掛鉤?
2026-09-08 02:00:03
儲備組成和透明度差距1. 許多穩定幣聲稱完全由現金或短期美國國債支持,但儲備揭露往往缺乏即時驗證機制。 2. 第三方證明可能僅每季進行一次,從而留下較長的窗口,使不匹配的資產負債結構仍未被發現。 3. 一些發行人持有的商業票據或逆回購協議存在未反映在公共資產負債表中的交易對手風險。 4. 鏈下銀行關...
什麼是加密貨幣中的自我託管以及為什麼它很重要?
2026-09-10 04:19:32
定義和核心機制1. 自我保管是指個人保留對其私鑰的完全控制權,而不將該權力委託給任何第三方服務的做法。 2. 自我託管錢包的伺服器上不持有資產;相反,它提供了一個使用本地儲存的加密金鑰與區塊鏈網路互動的介面。 3. 使用者的裝置(無論是智慧型手機、桌上型電腦或硬體模組)託管種子短語和私鑰,並且在正常...
什麼是多重簽名錢包以及它何時有用?
2026-09-12 14:20:01
定義及核心架構1. 多重簽章錢包是一種加密結構,需要多個私鑰來授權單一區塊鏈交易。 2. 它在M-of-N 簽章方案下運行,其中M表示所需的最小簽章數量, N表示授權簽章者的總數。 3. 每個簽署者產生獨立的金鑰對;他們的公鑰被共同嵌入到透過確定性雜湊導出的唯一鏈上位址中。 4. 沒有任何一個參與者...
Bitcoin 與閃電網路:有什麼不同?
2026-09-13 15:40:16
核心架構及交易模型1. Bitcoin 在單層、無需許可的區塊鏈上運行,其中每筆交易都經過加密驗證,在數千個全節點上傳播,並大約每十分鐘永久記錄在連續區塊中。 2. 閃電網絡作為直接建構在 Bitcoin 的 UTXO 模型之上的點對點覆蓋網絡,依賴於由時間鎖定、可撤銷的承諾交易強制執行的雙向支付通...
什麼是閃電網路? Bitcoin 交易如何變得更快?
2026-09-08 07:00:16
閃電網路核心架構1. 閃電網路作為直接建構在 Bitcoin 區塊鏈之上的第二層協定運行,完全依賴 Bitcoin 的加密安全模型,無需引入新的共識規則。 2. 使用2-of-2多重簽名地址在參與者之間建立雙向支付通道,雙方必須共同簽名才能將資金移出通道。 3. 每個通道都透過鏈上融資交易進行初始化...
看所有文章














