比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads
首頁 > Luna > Info

區塊鏈:十大DeFi安全最佳實踐方式(下)_QUO

Author:

Time:1900/1/1 0:00:00

上周CertiK發布了干貨分享 | 十大DeFi安全最佳實踐方式(上),為大家分享DeFi安全10個最佳實踐的前3個實踐方式,今天將為大家帶來剩余的7個實踐內容,進一步助力各位讀者保障自身應用程序的安全。

超長干貨,建議先收藏再看哦!

4. 避免常見問題

這一點對 Solidity 來說是一個總括性的問題——如果希望合約安全,就需要在構建它時依次核實所有的DeFi安全準則。而要編寫真正可靠的Solidity,就必須了解它的內部工作原理。否則,可能會容易受到以下攻擊:

上溢出/下溢出(Overflows/Underflows)

在Solidity 中,uint256和int256被 "包裹"了。

這意味著,如果你在uint256中擁有一個最大的數,然后將其添加到其中,它將變成可能存在的最小數字。

這一點務必需要檢查與核實,在0.8之前的Solidity版本中,可以使用類似safemath的庫來解決這一問題。

在Solidity 0.8.x中,默認情況下會檢查算術運算操作。這意味著x+y將在溢出時拋出異常。因此,請確認你正在使用的Solidity版本。

循環gas限制(Loops Gas Limit)

當編寫動態大小的循環時,需要注意它的極限規模大小。一個循環的規模可以很容易地超過最大塊限制,并使合約在回滾時失效。

避免使用'tx.origin'

`tx.origin`可能會導致類似釣魚的攻擊,因此不應該被用于智能合約的身份驗證。

代理存儲沖突(Proxy Storage Collision) 

對于采用代理實現模式的項目,可以通過更改代理合約中的實現合約地址來更新實現。

通常,代理合約中有一個特定的變量存儲實現合約地址。如果這個變量的存儲位置是固定的,而在執行合約中恰好有另一個變量具有相同的存儲位置索引/偏移量,那么就會發生存儲沖突。

元宇宙上榜《咬文嚼字》2021年十大流行語:金色財經報道,2021年12月8日下午,有“語言界啄木鳥”之稱的《咬文嚼字》雜志社編輯部對外發布“2021年度十大流行語”,“元宇宙”一詞上榜,此前“元宇宙”也當選為國家語言資源監測與研究中心發布的“2021年度十大網絡用語”之一。[2021/12/9 13:00:44]

要觸發存儲沖突,可以在Remix中執行以下步驟:

①部署實現合約;

②部署代理合約,將實現合約的部署地址作為其構造參數;

③在代理合約的部署地址上運行實現合約;

④調用myAddress()函數。它將返回一個非零地址,該地址是存儲在代理合約中 otherContractAddress 變量中的部署地址。

在上述四個步驟中發生了什么?

1. 部署實現合約并生成其部署地址;

2. 代理合約使用實現合約的部署地址進行部署,其中代理合同的構造函數被調用,并將otherContractAddress變量賦值為實現合約的部署地址;

3. 在步驟③中,實現合同與代理存儲進行交互,即部署的實現合約中的變量可以讀取部署的代理合約中相應的哈希碰撞變量的值。

4. myAddress()函數的返回值就是部署的實現合約中myAddress變量的值,它與部署的代理合約中的otherContractAddress變量產生沖突,隨即可以在那里獲得otherContractAddress變量的值。

為了避免代理存儲沖突,我們建議開發者通過為存儲變量選擇偽隨機槽來實現非結構化存儲代理。

一種常見的做法是為項目采用一種可靠的代理模式。最廣泛采用的代理模式是通用可升級代理標準(UUPS)和透明代理模式。它們都提供了具體的存儲 "偏移",以避免在代理合同和實現合同中使用相同的存儲槽。

動態 | 2019年區塊鏈十大事件盤點:1:中國擁抱區塊鏈

2019年10月24日,中央局第十八次集體學習時強調,區塊鏈技術的集成應用在新的技術革新和產業變革中起著重要作用。

2:央行數字貨幣試點

2014年中國央行開始研究法定數字貨幣(DCEP)。DCEP的完整字面意思就是數字貨幣電子支付。

3:Facebook發布Libra計劃

2019年6月,Facebook發布Libra白皮書,Libra的使命是建立一套簡單的、無國界的貨幣和為數十億人服務的金融基礎設施。

4:去中心化金融DeFi

去中心化金融(DeFi),解決傳統金融行業中的痛點,被稱作DeFi 是加密史上第二個突破。

5:IEO開始流行

IEO是ICO之后,幣圈誕生的一種新籌集資金方式,項目方依托交易所進行資金籌集。

6:Bakkt 推出比特幣期貨

2019年9月23日, 號稱幣圈牛市的發動機的Bakkt上線。

7:嘉楠科技上市

美國東部時間11月21日嘉楠科技正式上市納斯達克,IPO發行價最終鎖定在每股9美元,總計募資9000萬美元。

8:模式幣走紅幣圈

模式幣,使用類似模式的幣種,通過拉人頭、分紅、合伙人等等推廣營銷模式,配合資金控盤,來吸引散戶進場接盤。

9:以太坊伊斯坦布爾升級

以太坊網絡在2019年12月8日, 9,069,000區塊高度完成升級,代號:伊斯坦布爾(Istanbul)。

10:吳忌寒詹克團之爭

吳忌寒奪權:10月29日全球最大的礦機生產商之一的比特大陸創始人吳忌寒以比特大陸集團董事會主席、北京比特大陸科技有限公司法定代表人、執行董事的身份,向全體員工發送郵件,宣布解除詹克團在比特大陸的一切職務,即刻生效。[2019/12/23]

下面是一個使用透明代理模式實現隨機存儲的例子?

保證代幣轉移計算的準確性

通常情況下,對于普通的ERC20代幣,收到的代幣數量應該等于用函數調用的原始數量。

例如——參見下方函數retrieveTokens()?

動態 | Messari十大趨勢:USDT市值翻番 DCEP將于明年測試:Messari Research 近日公布了 2020 年加密貨幣行業十大穩定幣趨勢,據報告稱,Tether (USDT) 是早期加密貨幣領域的殺手級應用之一,雖然其合作交易平臺 Bitfinex 的銀行業務出現了問題,但 Tether 的市值在過去一年仍然翻了一番。

MakerDAO 的 DAI 在不久前從完全依賴于 ETH 的單一擔保模式轉向了多擔保模式,預計到 2020 年,鎖定在 Maker CDP 上的 ETH 和流通的 Dai 都將翻倍,其最終將成為拉丁美洲等新興市場中穩定幣的首選。Libra 不太可能在未來幾年內錨定一籃子國際貨幣,而更有可能僅與單一貨幣錨定(極可能是美元)。而中國的 DCEP 可能會于 2020 年初,由中國人民銀行與中國四大商業銀行共同在深圳和蘇州推出 DCEP 測試,DCEP 可能會讓中國更好地控制自己的貨幣體系,增加其貨幣的透明度和效用。Binance Venus(啟明星)在全球范圍掛鉤本地化的穩定資產,并在司法管轄區內廣泛尋求建立銀行關系和得到政府支持。[2019/12/18]

然而,如果代幣是通縮的,即每次轉移都有費用,那么實際收到的代幣數量將少于最初要求轉移的代幣數量。

在如下所示的修改后的函數retrieveTokens(uint256 amount)中,`amount'是根據轉賬操作前后的余額重新計算的。不管代幣轉移機制如何,這都將準確地計算出被轉移到`address(this)'的代幣數量。

正確刪除數據

有很多場景需要移除合約中不再需要的某個對象或值。

在像Java這樣的標準語言中,有一個垃圾收集機制可以自動和安全地處理刪除數據的問題。然而,在Solidity中,開發者必須手動處理 "垃圾"。因此,垃圾處理不當可能會給智能合約帶來安全問題。

例如,當用delete(即`delete array[member]')從數組中刪除單個成員時,`array[member]'仍將存在,但根據`array[member]'的類型重置為一個默認值。開發者應該要么跳過這個成員,要么重新組織數組并減少其長度。

動態 | 信通院盤點2018金融科技十大熱詞 區塊鏈在多個領域均有應用:據中國信通院官網消息,3月21日,中國信通院盤點2018金融科技十大熱詞。區塊鏈在保險科技、供應鏈金融、監管科技、數字金融反欺詐和支付科技等金融科技熱點均有應用。比如供應鏈金融方面,區塊鏈通過加密數據的交易確權、基于存證的交易真實證明、基于共享賬本的信用拆解和基于智能合約的執行等,能有效解決上述痛點,助力供應鏈金融的落地;支付科技方面,區塊鏈技術帶來支付變革,港版支付寶AlipayHK用戶通過區塊鏈技術向菲律賓錢包Gcash匯款也能像境內轉賬一樣實時到賬,7×24小時不間斷、省錢省事、安全透明,可謂重新定義了“跨境匯款”。[2019/3/21]

比如?

這些只是需要注意的一些漏洞,查看審計師Sigma Prime關于Solidity常見漏洞的文章可以幫助你深入了解Solidity以及避免這些 "陷阱"。

5. 函數的可見性和修飾符

在Solidity語言的設計中,有四種類型的函數可見性:

private:該函數只在當前合約中可見。

internal:該函數在當前合約和派生合約中是可見的。

external:該函數只對外部調用可見。

public:該函數對內部和外部的調用都是可見的。

可見性是指針對特定功能的上述四種可見性中的一種用于限制某一組用戶的訪問。 

修飾符則指的是專門為訪問限制目的而編寫的自定義代碼段。

可見性和修飾符結合起來,可以為特定功能設置適當的訪問權限。例如,在ERC20實現的函數`_mint()`中:

函數_mint()的可見性被設置為internal,這正確地保護了它不被外部調用。為了給mint功能設置一個適當的訪問權限,可以使用下方的代碼段:

函數mint()只允許合約的所有者鑄造,require()語句則可以防止所有者鑄造過多的代幣。

動態 | 數字票據、數字資產證券化入選金融科技發展趨勢十大關鍵詞:信通院發布《未來金融科技發展趨勢十大關鍵詞預測》,“數字票據”、“數字資產證券化”、“不良資產處置的科技運用”入選其中。文中提到,數字票據是一種將區塊鏈技術與電子票據進行融合,實現自動安全交易的新型票據;數字資產證券化是區塊鏈的最佳實踐場景。此外,區塊鏈技術的發展應用,出現了以互聯網為基礎的創新處置模式,如不良資產綜合處置平臺,眾籌投資、撮合催收等。區塊鏈分布式記賬解決信用機制、信息不對稱等問題,優化不良資產證券化流程,縮短處置周期,保證信息的真實有效性。[2019/3/11]

正確使用可見性和修飾符有利于合約管理。而未正確使用的設置可能會讓惡意攻擊者調用管理配置函數來操縱項目,過度的修飾符設置也可能會給合約帶來中心化的問題,并引起社區的不安。

6. 部署到主網前必須獲得外部審計

代碼審計就像是接受一個以安全為重心的同行評審。審計員會逐行查看整個代碼庫,并使用形式化驗證技術來檢查智能合約是否存在任何漏洞。

如果不想讓自己的項目赤裸裸的暴露于漏洞的威脅之下,切忌在沒有審計的情況下部署代碼,或者在審計后改變代碼并重新部署。

這里有一些幫助確保審計全面的建議:

a. 記錄一切,以便審計員更容易跟蹤所發生的事情b. 保持與審計團隊的溝通渠道暢通,以防他們有任何疑問可以得到及時解決c. 在你的代碼中添加注釋,確保其可以更快被理解

然而,安全是你自己需要切身關注的重中之重,一股腦的將身家全部寄予審計機構對你的安全保障是不該存在的心態。

如果你的協議遭到攻擊,最大的受害者是你自己以及你的團隊。

盡管安全審計非常有用,提供了額外的一輪審查,并可以幫助你查找未曾發現的漏洞,但它也不能確保100%的安全。

Tincho在推特上開啟了一個關于如何最高效率地進行安全審計的話題,感興趣的小伙伴可以去看看。當然,如果你有任何審計需求,或是相關的疑問,隨時可在公眾號底部留言進行咨詢。

7. 進行測試并使用靜態分析工具

你需要對應用程序進行適當的測試。

如果你正苦惱于無處下手,Chainlink starter kit repos提供了一些測試套件樣本供你參考。

像Aave和Synthetix這樣的協議也有很好的測試套件,建議也可以通過查看他們的代碼以了解一些測試的最佳實踐(也包括更普遍的編碼)。

靜態分析工具也會幫助你更早地發現代碼的錯漏之處。它們可以自動運行監測你的合約并尋找潛在的漏洞。

目前最流行的靜態分析工具之一是Slither。CertiK目前還在根據其在審計、驗證和監控智能合約方面的豐富經驗,建立下一代靜態分析、語法分析、漏洞分析和形式驗證工具。

8.將安全視為重中之重

毫無疑問,在生產部署之前,您應該盡最大努力創建一個安全可靠的智能合約,但區塊鏈和DeFi協議快速發展的現實以及新型攻擊方式的不斷出現意味著這遠遠不足以保障安全。

開發者們應當積極獲取并跟蹤最新的監測和警報數據,并盡可能嘗試在智能合約本身中引入面向未來的功能以訪問快速增長的動態安全洞察數據,這一行為除了安全外更有其他益處。

CertiK Skynet天網動態掃描系統作為一個24*7全天候運行的安全情報引擎,可為智能合約的鏈上部署提供多維度和實時的透明安全監控。

它包括社會情緒、治理、市場波動、安全評估等安全基元,為區塊鏈用戶、社區和代幣投資者提供全面的安全見解。

而CertiK安全排行榜提供公開透明的、易于理解的安全見解和最新的項目狀態,所有人都可以通過這個平臺查詢所有需要的安全數據信息,并向平臺提供他們所認可的在安全領域表現優異的DeFi項目,這將激勵形成社區問責制。

9. 制定一個“翻身”計劃

對于一個協議來說,如果在受到攻擊后有一個準備許久的“翻身”計劃無疑是很好的一步落子。

購買相關保險產品

設置一個緊急 "暫停 "功能

有一個升級計劃

隨著加密技術的不斷發展,保險平臺及計劃作為一種從損失中被解救出來的保障越來越受到廣大項目和用戶的歡迎,保證了去中心化的同時更增加了一定程度的安全性。比如CertiK開發的去中心化鏈上資金保險平臺CertiKShield,可保證項目及其投資者的資產安全,避免其受到安全漏洞或黑客攻擊導致的資產丟失、被盜或無法訪問等情況的影響。

設置緊急 "暫停 "功能是一個有利有弊的策略。

如果發現漏洞,此功能將停止與智能合約的所有交互。如果你設置了這個功能,你需要確保你的用戶知道誰能夠操作它。

如果只有一個用戶,你就不是在運行一個去中心化的協議,那么用戶就可以通過代碼發現這些。因此要注意該功能實現方式,因為你實際上可能最終在一個去中心化的平臺上得到了一個中心化的協議。

進行升級也有同樣的問題。轉移到一個沒有bug的智能合約可能很好,但升級仍要十分慎重,以免中心化問題的出現。

因此有相當一部分安全機構幾乎極力反對可升級的智能合約模式。

更多關于智能合約升級的內容你可以在YouTube上觀看帕特里克-柯林斯關于這個話題的視頻或是查看《智能合約升級現狀》的演講。

想要了解更多保險方面的建議?歡迎加入Chainlink Discord:

https://discord.gg/2YHSAey

10. 防止搶先交易Front-running

在區塊鏈中,所有的交易在mempool中都是可見的,這意味著每個人都有機會看到你的交易,并有可能在你的交易進行之前進行交易,以便從你的交易中獲利。

例如,假設你使用DEX以當前市場價格將5個ETH兌換成DAI。一旦你把你的交易發送到mempool進行處理,一個先行者可以在你之前進行交易,購買大量的ETH,導致價格上漲。然后他們可以以更高的價格向你出售他們購買的ETH,并以差價獲利。

目前,搶先交易機器人在區塊鏈世界中肆意妄為,以犧牲普通用戶的利益為代價獲利。

這個術語來自于傳統金融,交易員會使用同樣的操作來獲利,涉及到了股票、商品、衍生品等等金融資產和工具。

作為另一個例子,下方列出的函數就具備被搶先的風險。

根據修飾符'initializer',該函數只能被調用一次。

如果攻擊者在mempool中監控調用`initialize()`函數的交易,那么攻擊者就可以用一組定制的代幣、分發服務器(distributor), 和工廠(factory)的值來`復制`該交易,并最終控制整個合約。由于函數 "initialize() "只能被調用一次,合約所有者無法對這種攻擊進行防御。

這通常也與礦工可提取值或MEV有關。MEV是指礦工或機器人對交易進行重新排序,以便他們能以某種方式從排序中獲利。

就像搶先者支付更多的gas以使他們的交易領先于你的交易一樣,礦工可以直接重新排序交易,使他們的交易領先于你的交易。在整個區塊鏈生態系統中,MEV每天從普通用戶那里竊取的資產高達數百萬美元。

幸運的是,一群世界級的智能合約和密碼學研究人員,包括Chainlink實驗室的首席科學家Ari Juels,正致力于用一種稱為“公平排序服務”的解決方案解決這一問題。

正在開發的解決方案——Chainlink公平排序服務(FSS)

Chainlink 2.0白皮書概述了公平排序服務的主要特點,這是一個由Chainlink去中心化預言機網絡(DONs)提供動力的安全鏈外服務,將用于根據DApp概述的公平時間概念來排序交易。

FSS旨在極大地緩解搶先交易以及MEV的負面影響,并為整個區塊鏈生態系統的用戶減少費用消耗。

關于這方面的更多內容可以通過一篇介紹性的博文或是Chainlink 2.0白皮書的第五節中進行了解。

除了FSS之外,緩解搶先交易問題的最好方法之一是盡可能降低交易排序的重要性,從而抑制協議中交易的重新排序及MEV。

寫在最后

加密世界是一個公正透明且需要我們每一個人協作互助的地方,這一點在開發者們身上體現尤甚。

在保護自己的這一點上,回顧已發生的攻擊事件有助于了解惡意攻擊者是如何實施攻擊的。除此之外,你還可以通過7*24全天候安全洞察系統(如CertiK Skynet天網)實時接收最新的鏈上安全漏洞相關信息及其更新狀況。 

如果你想深入了解安全又怕過程太枯燥,建議一定要看看Ethernaut游戲。你可以通過它了解DeFi中的安全問題,它包含了大量DeFi的安全實例,以及Solidity的許多內涵和外延。

還有Damn Vulnerable DeFi也可以娛樂的方式學習相關安全知識。

如果想要了解更多閃電貸攻擊的信息,你可以登錄Prevent Flash Loan Attacks website進行查看。

對加密世界的每個人來說,從錯誤中學習并吸取教訓是最基本的,這可以確保我們的智能合約被安全地構建并盡可能廣泛地采用。

如果這篇文章里的解決方案中還有更多你想要了解的信息,請參閱Chainlink文檔和CertiK文檔。

Tags:區塊鏈QUOLIDDEFI區塊鏈專業好找工作嗎QUO幣BLIDDeFi Pulse Index

Luna
比特幣:揮別2021:加密圈黃金年代的開端 這些大事件值得記住_加密貨幣

2021年已至尾聲,有哪些重大事件重要節點在加密史上被記下一筆?對于區塊鏈和加密圈而言,2021年是充滿戲劇性的一年,也是豐收的一年.

1900/1/1 0:00:00
區塊鏈:一文解析區塊鏈如何改變商業生活_3X Long Ethereum Classic Token

協作是商業生活的核心。為了建立一個成功的產品,經理們需要與工程師、設計師、客戶和供應商緊密合作。想想在過去幾個月里,你在視頻會議上花了多少時間與同事見面,與客戶交談,或與供應商談判.

1900/1/1 0:00:00
NFT:利用NFT犯罪 web3.0時代的達芬奇密碼?_OIN

NFT到底是何物?這可能是一個在未來很長時間內,都無法給出準確答案的問題。一個很重要的原因就在于,作為一項用途極其廣泛,卻尚待進一步發掘的新技術,NFT自身正處于高速發展和自我變革的歷史時期.

1900/1/1 0:00:00
NFT:金色Web3.0日報 | Uniswap v3 合約部署在 Polygon 上以 99.3% 的共識獲得批準_DEFI

1.DeFi代幣總市值:1358億美元DeFi總市值 數據來源:Coingecko2.過去24小時去中心化交易所的交易量:62億美元過去24小時去中心化交易所的交易量 數據來源:Coingeck.

1900/1/1 0:00:00
EFI:現有GameFi有哪些“新”的傳遞_kava幣價格預測

逐漸被勾勒出外形的GameFi,正在以井噴的速度涌現出更多的新興勢力,與他們的前輩相比,他們在畫質、游戲性、場景方面不斷的進行升級迭代,這其中或多或少的還在延續P2E的玩法.

1900/1/1 0:00:00
REA:Ready Player Me:一次“捏臉” 跨元宇宙平臺使用_MPLAY價格

隨著元宇宙概念的興起,大量新項目誕生。每一個項目都是一個獨立的虛擬世界,不同世界間如何實現聯通?統一的頭像(身份系統)或許會是一個不錯的思路.

1900/1/1 0:00:00
ads