以太坊開發者需要知道的四項安全性原則,以及一些基本權衡。
盡管區塊鏈行業的發展日趨成熟,但是智能合約的開發仍是一個相對較新的領域。因此,為了應對新的漏洞和安全危機,以及滿足開發新的最佳實踐的需要,我們應該不斷完善安全性方面的問題。學習最佳實踐只是智能合約開發者在安全性方面踏出的第一步。
智能合約編程需要一種不同于傳統的工程思維。智能合約失敗的代價很高,更新迭代需要較大工程量,這使得它在某些方面更類似于硬件編程或金融服務編程,而不是web或者移動端開發。因此,僅僅防御已知的風險是遠遠不夠的,還需要掌握新的開發理念。
準備應急措施
任何重要的合約都會出現故障。因此,開發者必須做好充足的準備,以便及時應對漏洞。
Aave社區通過降低以太坊和Polygon上CRV LT、LTV和債務上限提案鏈上投票:8月9日消息,據治理頁面顯示,Aave社區以100%的支持率通過了降低以太坊和Polygon上CRV LT、LTV和債務上限提案的鏈上投票,可于12小時內執行,根據該提案:
以太坊Aave V3上,CRV LT由61%降為41%、LTV由55%降為35%、債務上限由2000萬美元降為500萬美元;
Polygon Aave V3上,CRV LT由75%降為65%、LTV由70%降為35%。[2023/8/9 21:33:47]
出現故障時暫停合約?(“斷路器”)。
管理風險資金的數量?(限制流量,最大化利用率)。
準備有效的升級路徑以修復和改進bug。
Ordinals域名項目BTCDomain宣布基于Bitcoin鏈上網站及域名已上線:4月26日消息,Ordinals域名項目BTCDomain宣布首個完全基于Bitcoin的鏈上網站及域名已上線,此外,近日還將對部分域名持有者開放內測。[2023/4/26 14:28:54]
防患未然
最好是在完整的產品發布之前發現bug。
全面測試合約,并在發現新的攻擊向量時添加相應測試。
alpha測試網版本發布之后,提供bug賞金。
分階段推出,每個階段更新功能并添加新測試。
保持智能合約的簡潔性
復雜性會提高出現故障的概率。
確保合約邏輯簡單。
Filecoin主網將于3月14日進行V18升級:金色財經報道,Filecoin Lotus v1.20.0已發布。Filecoin網絡將進行V18升級(Hygge Network Upgrade), 本次網絡升級為強制升級, 升級核心是引入Filecoin虛擬機(FVM)的Milestone2.1, 這將使在Filecoin網絡上部署EVM兼容的智能合約成為可能,該升級將首次為Filecoin網絡提供了用戶的可編程性。
Filecoin主網將在3月14日T15:14:00Z區塊高度(epoch)2683348升級到V18。所有節點運營商包括存儲提供者必須在該時間到來之前升級到這個版本。
本次升級還引入以下FIP,并將在FVM3(FVM v3.0.0)和builtin-actors v10(actors v10.0.0)中交付:
FIP-0048:f4 Address Class;
FIP-0049: Actor事件;
FIP-0050: 用戶可編程Actors(合約)和內置Actors之間的API;
FIP-0054: Filecoin EVM運行時間(FEVM);
FIP-0055: 支持以太坊賬戶、地址和交易;
FIP-0057: 更新FEVM的Gas charging schedule和系統限制。[2023/3/1 12:35:54]
模塊化代碼以使合約和函數保持較小。
Binance宣布將支持 TRON(TRX)新舊合約互換, 將于2月27日12:00暫停TRX充提:2月17日消息,據官方消息,Binance 將支持 TRON(TRX)新舊合約互換,將于北京時間 2 月 27 日 12:00 暫停 TRX(BEP20)充提,現貨交易、保證金交易、期貨交易、Binance Pay 和 Simple Earn 訂閱在合約互換期間不受影響。
合約互換完成后,TRX(BEP20)存提將重新上線。此外,合約互換后,原有 TRX 將更名為 TRXOLD,通過舊 TRX (BEP20) 智能合約存入 TRXOLD 的用戶將能夠使用轉換功能將舊 TRX (TRXOLD) 轉換為新 TRX。[2023/2/17 12:13:35]
請盡可能使用既有工具或代碼?(例如不要使用自己的隨機數生成器)。
在保證清晰度的前提下再考慮性能。
只在系統中需要去中心化的部分使用區塊鏈技術。
保持更新
跟進新的安全性措施。
檢查智能合約,以最快的速度定位新漏洞。
盡快升級到任何工具或庫的最新版本。
采用可能有效的保障安全性的新技術。
了解EVM的特性
盡管開發者對以太坊編程較熟悉,但仍需要注意一些陷阱。
要特別小心外部合約調用,該過程可能會執行惡意代碼并改變控制流(controlflow)。
要明白,開發者的公共函數是公開的,可能會被惡意調用,調用順序也可能是任意的。任何人都可以查看智能合同中的隱私數據。
注意gas成本和區塊gas限制。
注意,區塊鏈上的時間戳是不精確的:礦工可以在幾秒內影響交易執行的時間。
隨機性是區塊鏈上一個重要的特性,大多數產生隨機數的方法在區塊鏈上是具有博弈性的。
基本權衡因素
在評估智能合約系統的結構和安全性時,需要考慮多種基本的權衡。對于所有智能合約系統的普遍建議是,在這些權衡之間找到平衡點。
從軟件工程的角度來看,理想的智能合約系統是模塊化的,即重用代碼而不是復制代碼,以及支持可升級的組件。而從安全架構的角度來看,理想的智能合約系統可能同樣會使用這種模式,尤其是面對更為復雜的智能合約系統。
然而,當安全性和軟件工程最佳實踐出現不一致時,也會有一些例外情況發生。而在每種情況下,可通過選擇合約系統上的最佳性能組合來達到平衡,例如:
固定版本vs.可升級
整塊化vs.模塊化
復制vs.重用
固定版本vs.可升級
當多個資源?(包括此資源)?強調自身的延伸性時?(比如可中斷的、可升級的或可修改的模式),那么就需要在延伸性和安全性之間找到一個平衡點。
延伸性增加了復雜性和潛在的受攻擊性。如果智能合約系統在預先規定的有限時間內能夠完成的功能非常有限,那么這時簡潔性比復雜性要有效得多,例如,無治理的限時代幣發售合約系統。
整塊化vs.模塊化
獨立的整塊化合約允許信息在本地識別和讀取。雖然整塊化合約一般不被重視,但對于數據和流的極端本地化存在爭議,例如代碼審計的效率優化。
與本文考慮的其他因素一樣,在簡單的短期合約中,安全性最佳實踐趨向于與軟件工程最佳實踐相悖;而在更復雜的永久合約系統中,兩者趨于相一致。
復制vs.重用
從軟件工程的角度來看,智能合約系統希望能夠在需要時最大化重用功能。在Solidity語言中,有許多重用合約代碼的方法。實現代碼重用的最安全的方式通常是:使用自己之前經過驗證和部署的合約。
如果之前部署的合約無法使用,開發者通常就需要依靠復制功能了。OpenZeppelin的Solidity庫嘗試提供一些模式,使得安全代碼可以在無需復制的情況下被重用。任何合約安全分析都必須將目標智能合約系統中還沒有與風險資金建立相當信任級別的重用代碼包含在內。
現如今,在以太坊上創建應用軟件無疑是最令軟件工程師激動的前沿領域,但這需要持續不斷的威脅建模?(threatmodeling)、安全審計,還需要做好周全計劃以應對故障發生。
原文鏈接:https://media.consensys.net/the-smart-contract-security-mindset-a09f5f8f5f4f
來源|?ConsenSysMedia
Tags:TRXCOICOINOINSynth iTRXToobcoinLooksCoinBitcoin Dex on Heco
Filecoin主網上線在即,想要抓住機會的投資人摩拳擦掌躍躍欲試。礦機太復雜搞不懂,云算力坑太多怕被騙,期貨無支撐怕崩盤,“財富列車”呼嘯而來,想上車,但卻不知道正確的姿勢是什么?話不多說,直.
1900/1/1 0:00:00注意!幣圈老虎機已開啟。不用注冊、不需要KYC、隨進隨出……只需要一個ETH錢包,Uniswap大轉盤即刻開始.
1900/1/1 0:00:002020年8月3日,工業和信息化部辦公廳發布關于開展2020年網絡安全技術應用試點示范工作的通知.
1900/1/1 0:00:00大家好,我是比特幣礦哥,今天是8月3號,星期一,新的一個月開始了,繼續帶大家看行情,首先我們回顧一下周末的行情,在周六的時候,礦哥在文章中寫到,閉著眼睛做多,不給空單建議,行情也是比較給力.
1900/1/1 0:00:00公告編號2020080301各位關心ZBG的項目方和投資者們:按照ZBG平臺規則,2020年7月2日—2020年8月3日已銷毀ZT:138.
1900/1/1 0:00:00“牛市,是普通投資者虧損的主要原因。”牛市屬于大家均會賺錢的行情,為何會成為普通投資者虧損的主要原因,而且還出自享譽全球的著名投資人之口?一方面是市場原因造就的,上漲的收益在回調時只需要一半的殺.
1900/1/1 0:00:00