傳統的計算機程序一般運行在某個節點或集群上,為某個機構或個人擁有和控制。這樣的計算機程序可以隨時施加人工干預,可以隨時控制。然而,
區塊鏈上的智能合約則是一種全新的計算范式。智能合約一經部署就難以修改,其執行也是自動執行,不受人為干預。因此,如果智能合約有安全漏洞,就很難防范黑客的攻擊。當下,專業技術人員都在努力尋找合適的方式,提高智能合約的安全性和可靠性,幫助保障大家的資金安全。根據一份針對
以太坊智能合約的最新調查研究顯示,在安全問題研究人員看來,智能合約屬于新興事物,所以缺陷和漏洞還是非常多的。
所謂“智能合約”,其基本內涵就是指可以將一些帶有合約性質的條款嵌于我們日常使用的硬件和軟件當中,目的是讓那些違約者在違反合同時付出一定代價。Szabo將實體售貨機稱為“智能合約的原型”,因為實體售貨機就是根據屏幕上所顯示的價格,收取用戶投進來的硬幣,掉出用戶所選中的商品并且正確找零。
以以太坊為例。以太坊是一個開源的有智能合約功能的公共區塊鏈平臺。區塊鏈上的所有用戶都可以看到基于區塊鏈的智能合約。但是,這會導致包括安全漏洞在內的所有漏洞都可見。如果智能合約開發者疏忽或者測試不充分,而造成智能合約的代碼有漏洞的話,就非常容易被黑客利用并攻擊。并且越是功能強大的智能合約,邏輯就越復雜,也越容易出現邏輯上的漏洞。同時,智能合約語言Solidity自身與合約設計都可能存在漏洞。
以太坊開源軟件主要是由社區的極客共同編寫的,目前已知存在Solidity漏洞、短地址漏洞、交易順序依賴、時間戳依賴、可重入攻擊等漏洞。在調用合約時漏洞可能被利用,而智能合約部署后難以更新的特性也讓漏洞的影響更加廣泛持久。
另外,以太坊虛擬機(EVM)對于智能合約能夠做的事情存在很多硬性限制。這些都牽扯到平臺級的安全,甚至可能會威脅到用戶特定合約的安全。
倫敦大學學院(University College London)的計算機科學家Ilya Sergey表示,目前專業技術人士還沒有完全搞清楚智能合約中存在的安全漏洞和潛在風險。他曾經參與過一項針對智能合約的調查研究。Sergey及其同事借助一款創新工具,對將近100萬份的以太坊智能合約樣本進行了分析。結果發現,其中約有3.4萬份都是存在安全隱患的,包括導致Parity事件的那一份。Sergey介紹說,自己和團隊其他成員的分析工作,就好比是與自動售貨機互動。研究人員隨機按下某個按鈕,接著記錄機器在運行過程中出現意外事故時的相關狀況。用他的話說:“我認為,目前我們沒有發現的安全漏洞還有很多,需要繼續分析并且進行分類。”
在實踐中如何提高智能合約的安全性?給出以下建議,在實際編程中盡量遵守,你的合約將更具安全因素。
更完善的編寫測試。
建議提供容錯和自動錯誤賞金。
為最糟糕的情況做準備。智能合同中的漏洞,應該盡可能讓它安全地恢復。
添加額外的安全機制。合同的管理者可應急性地凍結合約。
限制合約資金存放金額,提高攻擊者成功的門檻。
不要從零開始編寫你所有的代碼,盡可能參考成功者的合約。
注意開發平臺的限制。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。