假如把智能合約看成文章: 探討自然語言處理辨識合約漏洞的可行性

更新於 發佈於 閱讀時間約 6 分鐘
raw-image

以太坊因為有了智能合約而獲得很大的便利性與彈性,智能合約的出現讓原本單純的金流交易功能延伸出可以發行代幣、鑄造NFT或是利用DApp撰寫一些去中心化遊戲等許多有趣的創意發想。但畢竟EVM的語言還沒完全成熟,若是智能合約的編寫過程出現沒有預期到的漏洞,再加上區塊鏈本身不可修改的性質,這對已經放上鏈的合約而言,就等於整份合約是「報廢」的狀態,連帶著可能影響的一個優秀的作品發想。

假如將智能合約看作是一篇文章

對於合約潛在的漏洞風險,我們不經開始思考,有沒有甚麼辦法可以在合約上鏈之前先檢查一遍,來降低合約出錯的機會。而現有許多合約分析的工具,像是SlitherSecurify等,這些工具是基於已知很固定的編碼方法來很制式的做出判定,例如檢查加減乘除的順序、轉帳時扣款的順序。但是一份合約可能因為功能的需求做出比較複雜的編寫方式,例如在函式中呼叫其他函式、將變數編寫成較複雜的資料格式、甚至呼叫其他合約。這一系列的動作最終會導致超出分析工具的能力範圍。因此將合約視為文章,利用現有的自然語言處理工具來進行機器學習似乎會是一個可行的解決辦法。

甚麼是自然語言處理?

常見的機器學習方法如類神經網路(ANN)、多層感知機(MLP)、卷積神經網路(CNN),藉由輸入資料來進行訓練,經過隱藏層之後,直接在輸出層給出二分類的輸出或是多分類的輸出。對於上述的機器學習方法,自然語言處理不一樣的地方在於更重視輸入資料「上下文」之間的關係,實現方法是將經過訓練的資料,也就是隱藏層或輸出層的結果放回輸入層。也就是將這次輸出的結果作為下一次輸入時額外的參考。這種神經網路架構將前後的資訊連結起來成為一個迴圈狀的結構。他有一個專有的名稱,叫做遞迴神經網路(Recurrent Neural Networks, RNN)。

Recurrent Neural Networks model schematic diagram

Recurrent Neural Networks model schematic diagram

上圖是一個簡單的RNN範例。如上圖所示,遞迴神經網路將時間(t)等於0的時候輸入的資料經過隱藏層後,除了輸出t=0的輸出值之外,同時也輸出給下一個時間t=1的隱藏層當作輸入資料的一部分來一併運算。只要不斷的有資料輸入神經網路,這樣的運算模式就會持續進行,而之前的資料都可能會影響到後續的輸出。這就像我們理解一句話時,不聽到最後的話,就有可能誤解整段句子一樣。不過這個簡單的RNN模型還有一些問題存在,那就是當下這個模型只能接收前一次模型的輸出當作參考,這樣一來,相鄰比較遠的文字的影響就比較難看出來;另外在數學上遞迴模型的輸出每經過一次向後連結,在求解過程中就越容易引發梯度消失,所以後來研究人員有做了一些改進。


為了將長距離(long-distance)或長期(long-term)語句產生的影響,也納入模型的理解範圍,科學家在RNN基礎上進行修改,成為長短記憶網路(long short term memory, LSTM)。機率性的決定這次的要不要加入輸入、輸出的資料。也就是新輸入的資料要不要加入這次運算過程、而運算的結果要不要提供給之後的運算使用。另外再加上能夠儲存資料或遺忘資料的演算法,來加強模型對長距離或長期語句的理解。本篇的重點不在說明LSTM,如果有興趣研究LSTM的讀者可以參考Jimmy Lin翻寫的遞歸神經網路(RNN)和長短期記憶模型(LSTM)的運作原理。最後經過自然語言處理,資料受到時序的影響能夠在模型訓練的結果被看見。

自然語言處理應用到智能合約漏洞的檢查

智能合約目前面臨許多種類的漏洞,前些日子在本專題《區塊鏈生存守則》中,另一位作家Alice也列舉並簡介了一些常見的智能合約漏洞。自然語言處理能有效的處理時序性資料,但是否能辨識如Reentrancy這類可能是金流轉移過程順序上出問題的漏洞,或是其他可能因為呼叫函數的順序不當等造成的錯誤,都是研究人員可以好好探討的地方,而發展這些漏洞辨識工具,能有助區塊鏈穩定的發展下去。

----------------------------------------------------------------------------

作者阿原目前從事區塊鏈資料分析工作,對區塊鏈的經濟架構、事件發展有很大的興趣,並希望能將相關的區塊鏈知識分析並且統整給大家。如果喜歡我的文章,或是想獲得更多區塊鏈大小事,歡迎關注我的vocus帳號

另外,我已經加入由趨勢科技防詐達人所成立的方格子專題-《區塊鏈生存守則》,在那裡我會跟其他優質的創作者一起帶大家深入瞭解區塊鏈,並隨時向大家更新區塊鏈資安事件。

> 追蹤《區塊鏈生存守則》學習如何在區塊鏈的世界保護自己

> 關注防詐達人獲得其他最新詐騙情報


參考資料

  1. Day 25 遞迴神經網路 RNN 、梯度下降與梯度消失: https://ithelp.ithome.com.tw/m/articles/10280019
  2. [Day-16] RNN - LSTM介紹: https://ithelp.ithome.com.tw/articles/10223055
  3. 遞歸神經網路(RNN)和長短期記憶模型(LSTM)的運作原理: https://brohrer.mcknote.com/zh-Hant/how_machine_learning_works/how_rnns_lstm_work.html



留言
avatar-img
留言分享你的想法!
avatar-img
防詐達人的沙龍
35會員
176內容數
我們整理了web3相關的熱門資安問題,包含加密貨幣投資詐騙、盜版NFT、空投釣魚和區塊鏈重大資安事件懶人包等等,並提供最完整的辨識方法教學,讓大家從0到1學習如何保護自己
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
相信到了這邊大家或多或少都有聽過智能合約吧! 這篇來介紹智能合約是什麼以及應用場景,最重要的是我們平常要怎麼看合約的內容! 一次教你怎麼看什麼是智能合約和一般的NFT合約怎麼看!
Thumbnail
相信到了這邊大家或多或少都有聽過智能合約吧! 這篇來介紹智能合約是什麼以及應用場景,最重要的是我們平常要怎麼看合約的內容! 一次教你怎麼看什麼是智能合約和一般的NFT合約怎麼看!
Thumbnail
牽涉到區塊鏈,一定會提到智能合約這個詞,那這個合約有什麼功能呢? 人類都是善變的 舉例來說,如果有A,B兩個人,雙方打賭,本週六會不會下雨,A賭不會下雨,B賭會下雨。賭輸的一方要給賭贏的一方1000元。 如果到了週六,沒有下雨,正常情況下,是A賭贏了。 但是如果雙方在打賭之前沒有簽合約,或者是有簽合
Thumbnail
牽涉到區塊鏈,一定會提到智能合約這個詞,那這個合約有什麼功能呢? 人類都是善變的 舉例來說,如果有A,B兩個人,雙方打賭,本週六會不會下雨,A賭不會下雨,B賭會下雨。賭輸的一方要給賭贏的一方1000元。 如果到了週六,沒有下雨,正常情況下,是A賭贏了。 但是如果雙方在打賭之前沒有簽合約,或者是有簽合
Thumbnail
智能合約和 NFT 是非常硬的主題,基本上是一種技術和商業的混用,不過有趣的是:市場卻又透過積極的參與給出了肯定,哪怕是在熊市。 區塊鏈 2.0:智能合約 智能合約,有人又稱區塊鏈 2.0,原本區塊鏈僅被用於去中心化交易,後來以太坊推出智能合約後,許多的去中心化應用(dApp)誕生,你可以將智能合約
Thumbnail
智能合約和 NFT 是非常硬的主題,基本上是一種技術和商業的混用,不過有趣的是:市場卻又透過積極的參與給出了肯定,哪怕是在熊市。 區塊鏈 2.0:智能合約 智能合約,有人又稱區塊鏈 2.0,原本區塊鏈僅被用於去中心化交易,後來以太坊推出智能合約後,許多的去中心化應用(dApp)誕生,你可以將智能合約
Thumbnail
前言 區塊鏈的應用從以太坊出現後開始蓬勃發展,以太坊導入智能合約,使得許多應用在沒有中間機構的情況下依然能正常運作。 智能合約就是在區塊鏈上執行的程式,給程式輸入值,它就會按照寫好的規則給你輸出值,Ex: 一個NBA運彩的智能合約,你壓的錢和球隊就是智能合約的輸入值,等到比賽結束,智能合約會判定你壓
Thumbnail
前言 區塊鏈的應用從以太坊出現後開始蓬勃發展,以太坊導入智能合約,使得許多應用在沒有中間機構的情況下依然能正常運作。 智能合約就是在區塊鏈上執行的程式,給程式輸入值,它就會按照寫好的規則給你輸出值,Ex: 一個NBA運彩的智能合約,你壓的錢和球隊就是智能合約的輸入值,等到比賽結束,智能合約會判定你壓
Thumbnail
你知道「李嘉圖合約」是什麼嗎?雖然我不是科學家,但這聽起來很不錯,對吧?什麼是「李嘉圖合約」(Ricardian Contract)?它是在2004年由金融密碼學家Ian Grigg提出的概念:一種機器和人類均可讀的合約。說穿了就是如同法律契約的智慧合約,嗣後於2012年再由科羅拉多大學法學教
Thumbnail
你知道「李嘉圖合約」是什麼嗎?雖然我不是科學家,但這聽起來很不錯,對吧?什麼是「李嘉圖合約」(Ricardian Contract)?它是在2004年由金融密碼學家Ian Grigg提出的概念:一種機器和人類均可讀的合約。說穿了就是如同法律契約的智慧合約,嗣後於2012年再由科羅拉多大學法學教
Thumbnail
區塊鏈(Blockchain)是公鏈底層技術,透過共識協定(開源原始碼作業系統),以及預設的程序編寫程式而成的智能型合約。把計算中最吸引人的人工智慧(AI)的這一塊放到區塊鏈上,將智能型合約的演算能力不但提升,而且更有智慧。
Thumbnail
區塊鏈(Blockchain)是公鏈底層技術,透過共識協定(開源原始碼作業系統),以及預設的程序編寫程式而成的智能型合約。把計算中最吸引人的人工智慧(AI)的這一塊放到區塊鏈上,將智能型合約的演算能力不但提升,而且更有智慧。
Thumbnail
智能合約(英語:Smart contract)是一種特殊協定,在區塊鏈內製定合約時使用,當中內含了程式碼函式 (Function),亦能與其他合約進行互動、做決策、儲存資料及傳送以太幣等功能(出處:維基百科),簡單的說就是在區塊鏈上做以太幣的交易或互動的一種程式(合約)。
Thumbnail
智能合約(英語:Smart contract)是一種特殊協定,在區塊鏈內製定合約時使用,當中內含了程式碼函式 (Function),亦能與其他合約進行互動、做決策、儲存資料及傳送以太幣等功能(出處:維基百科),簡單的說就是在區塊鏈上做以太幣的交易或互動的一種程式(合約)。
Thumbnail
   區塊鏈在這幾年引領風潮,  從2008年比特幣創立後,改變了世人原先的交易方式,被世人稱之為「區塊鏈1.0」。而在2015年以太坊研發DeFi和智能合約等金融相關程式,寫入區塊鏈中,再一次被世人稱之「區塊鏈2.0」。但什麼是DeFi,甚麼是智能合約呢?接下來就帶各位一起淺談一下DeFi和智能合
Thumbnail
   區塊鏈在這幾年引領風潮,  從2008年比特幣創立後,改變了世人原先的交易方式,被世人稱之為「區塊鏈1.0」。而在2015年以太坊研發DeFi和智能合約等金融相關程式,寫入區塊鏈中,再一次被世人稱之「區塊鏈2.0」。但什麼是DeFi,甚麼是智能合約呢?接下來就帶各位一起淺談一下DeFi和智能合
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News