開發者智能合約安全審計指南


入門

我們將首先對批量上傳的NFT 進行智能合約審計。在將代碼部署到以太坊主網之前發現代碼中的缺陷、漏洞和危險是智能合約審計的關鍵步驟。

去中心化應用審計服務不能100% 保證合約沒有錯誤或漏洞。但它確實確保智能合約是安全的並且已經過徹底檢查。

智能合約審計的通用格式

以下智能合約審計報告的預期組件列表包括有關發現的漏洞、免責聲明和建議補救措施的信息。

免責聲明:本節重要說明審計不是具有法律約束力的文件,不提供任何保證

審計概述:簡要了解合約及其創建過程中觀察到的最佳實踐

對合約進行的攻擊:概述對合約進行的攻擊,確保其安全

關鍵級別的漏洞:概述在合約中發現的關鍵漏洞,例如允許攻擊者竊取貨幣的錯誤

中級漏洞:可以破壞合約但有一定限制的漏洞

低級漏洞:不影響合約的問題

逐行檢查代碼:分析具有潛在改進的代碼行

免責聲明

在以太坊區塊鏈上,智能合約被實施並付諸行動。由於以太坊平台更新可能會引入新的攻擊向量,因此審計不能明確保證智能合約始終安全。本文僅供討論之用,不作為對本智能合約所含代碼的可用性或安全性的保證。

概述

該項目只有一個文件NftUpload.sol,由114行Solidity代碼組成。根據natspec 文檔,相關函數和狀態變量已添加註釋。

該智能合約的目標是使NFT 硬幣能夠在Opensea 網絡上廣泛分佈。

審計概要

代碼寫得很好並且易於理解。 deploy 和mint 機制非常簡單,不會造成任何重大問題。

我的最後一條建議是更多地關注功能可見性,並考慮採用ERC-721 擴展進行批量鑄造。

檢查典型的攻擊路線

喬治·桑塔亞那(George Santayana) 曾說過:“要了解自己的未來,就必須了解自己的歷史。” 我引用這句話是為了強調了解當前的攻擊是防止智能合約受到攻擊的最佳策略之一。 SWC 註冊表提供了許多類別,列出了撰寫本文時所有已知的攻擊。 SWC 註冊表提供標題、代碼相關示例列表和SWC 標識(ID)。

智能合約審計員必須考慮典型的攻擊要素,例如訪問控制問題、整數溢出和下溢以及重入缺陷(對於用Solidity 編寫的DApp)。

去中心化金融對智能合約的使用使它們特別容易受到搶先交易的影響。機器人搶占交易,因為它被打包在前端運行攻擊中。在執行被攻擊的交易之前,機器人會設置更高的gas 成本以以首選速率完成交易。由於區塊鏈dapp 審計公司基於交易的架構,這種攻擊是可行的。三明治攻擊是最常見的搶先攻擊類型。

來自LogRocket 的其他精彩文章:

不要錯過The Replay 的精彩瞬間,這是一份來自LogRocket 的精心策劃的時事通訊了解LogRocket 的Galileo 如何消除乾擾以主動解決應用程序中的問題使用React 的useEffect 來優化應用程序的性能在多個版本的Node 之間切換了解如何使用AnimXYZ 為你的React 應用程序製作動畫探索Tauri,一個用於構建二進製文件的新框架比較NestJS 與Express.js

什麼是三明治攻擊?

使用自動做市商機制的去中心化交易所的搶先交易策略和頻繁攻擊向量是三明治攻擊。當掠奪者在區塊鏈P2P 網絡上發現待處理交易時,他們會嘗試通過在它之前(前端運行)和它之後(跟隨它)(反向運行)下訂單來包圍它。這種方法的目的是通過買賣來影響資產的價格。

三明治攻擊是可行的,因為內存礦池允許所有區塊鏈交易的完全可見性。一旦攻擊機器人發現受害者即將用資產X 交易所資產Y,受害者就會搶先購買資產Y。

機器人在交易被確認後開始交易,設置更高的gas費,通過gas競爭機制有效超越用戶的典型交易。在受害者的典型交易之後,機器人會立即發起第二筆賣出交易。

作為一名在DeFi 領域從事智能合約開發的開發人員,我可以看到如何通過加密貨幣數據來處理區塊鏈的交易開放性,使機器人無法處理它可能是保護用戶免受三明治攻擊的一種方式。

現在有計劃使用zk-SNARKs 實現加密貨幣,這是一種零知識證明方法。雖然這種策略還不夠成熟,但社區對此進行了積極的討論。

結論

Dapp 驗證服務尤其需要智能合約審計。雖然擁有智能合約並不是價值的標誌,但它非常重要。我敦促開發人員繼續學習並擴展他們對合約安全和最佳實踐的最新發展的理解。

聲明:以上內容採集自VOCAL,作品版權歸原創作者所有內容均以傳遞信息為目的,不代表本站同意其觀點,不作為任何投資指導。幣圈有風險,投資需謹慎

Total
0
Shares
Related Posts