• <option id="cacee"><noscript id="cacee"></noscript></option>
  • <table id="cacee"><noscript id="cacee"></noscript></table>
  • <td id="cacee"></td>
  • <option id="cacee"></option>
  • <table id="cacee"></table>
  • <option id="cacee"><option id="cacee"></option></option>
  • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
    <option id="cacee"><option id="cacee"></option></option>
     找回密碼
     立即注冊

    掃一掃,登錄網站

    首頁 區塊鏈生態 查看內容
    • 9167
    • 0
    • 分享到

    區塊鏈程序開發者看智能合約和形式驗證

    2018-5-18 11:44

    來源: 架構文摘 作者: 當然我在扯淡

    Hoare Logic


    我好像已經把你搞糊涂了…… 我們先來科普一下 Hoare Logic。

    Hoare Logic(https://en.wikipedia.org/wiki/Hoare_logic) 是一種形式驗證的方法,用于驗證程序的正確性。它的做法是,先給代碼標注一些“前條件”和“后條件”(pre-condition 和 post-condition),然后就可以進行邏輯推理,驗證代碼的某些基本屬性,比如轉賬之后余額是正確的。

    舉一個很簡單的 Hoare Logic 例子:

    {x=0}   x:=x+1   {x>0}

    它的意思是,如果開頭 x 等于 0,那么 x:=x+1 執行之后,x 應該大于 0。這里的前條件(pre-condition)是 x=0,后條件(post-condition)是 x > 0。如果 x 開頭是零,執行 x:=x+1 之后,x 就會大于 0,所以這句代碼就驗證通過了。

    Hoare Logic 的系統把所有這些前后條件和代碼串接起來,經過邏輯推導驗證,就可以作出這樣的保證:在前條件滿足的情況下,執行代碼之后,后條件一定是成立的。如果所有這些條件都滿足,系統就認為這是“正確的程序”。注意這里的所謂“正確”,完全是由人來決定的,系統并不知道“正確”是什么意思。

    Hoare Logic 對于程序的安全性,確實可以起到一定的效果,它已經被應用到了一些實際的項目。比如微軟 Windows 的驅動程序代碼里面,有一種“安全標注語言”,叫做 SAL,其實就是 Hoare Logic 的一個實現。然而前條件和后條件是什么,你必須自己給代碼加上標注,否則系統就不能工作。

    比如上面的例子,系統如何知道我想要“x>0”這個性質呢?只有我自己把它寫出來。所以要使用 Hoare Logic,必須在代碼上標注很多的 pre-condtion 和 post-condition。這些條件要如何寫,必須要深入理解程序語言和形式邏輯的原理。這個工作需要經過嚴格訓練的專家來完成,而且需要很多的時間。

    版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。
    相關新聞
    發表評論

    請先 注冊/登錄 后參與評論

      回頂部
    • <option id="cacee"><noscript id="cacee"></noscript></option>
    • <table id="cacee"><noscript id="cacee"></noscript></table>
    • <td id="cacee"></td>
    • <option id="cacee"></option>
    • <table id="cacee"></table>
    • <option id="cacee"><option id="cacee"></option></option>
    • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
      <option id="cacee"><option id="cacee"></option></option>
      妖精视频