用於加密貨幣和區塊鏈的語言Simplicity

tianxiaoxu發表於2018-05-07

又一種新的程式語言問世啦!Simplicity最初是被設計為執行智慧合約的低階語言,如今極有可能成為加密貨幣和區塊鏈應用的最佳應用。

用於加密貨幣和區塊鏈的語言Simplicity

  Blockstream的Dr. Russell O'Connor在《A New Language for Blockchains as part of a session on new languages and tools at PLAS 2017》中是如此描述Simplicity的:

  Simplicity旨在改進現有的加密貨幣語言,例如Bitcoin Script和Ethereum's EVM。Simplicity在Coq中定義了正式的指稱語義。

  同時,Simplicity還引入了一種稱為Bit Machine的抽象機器定義的操作語義,用於評估Simplicity程式所需的計算空間和時間資源。

  由於其Turing不完整性,Simplicity適用於靜態分析,可用於在執行之前匯出所需計算資源的上限。雖然Turing不完整,但Simplicity仍然可以執行任何有用的功能,並且我們相信它足以為區塊鏈應用程式構建有用的"智慧合約"。

  Simplicity的設計目標是:

  建立一個富有表現力的語言,為使用者提供構建程式和智慧合約所需的工具。

  啟用靜態分析,提供所需計算量的有用上限。

  最大限度地減少頻寬和儲存需求,並透過在redemption time刪除未使用的程式碼來增強隱私。

  保持比特幣自設交易的設計,即程式不能訪問交易以外的任何資訊。

  提供正式的語義,便於使用現有的proof-assistant software。

  需要注意的是, "Simplicity是被設計為執行智慧合約的低階語言,而不是程式設計師直接編寫的語言。"

  Simplicity是一種型別化的組合語言,這一點很重要。每種型別的Simplicity表示式都有兩種型別:輸入型別和輸出型別。每一個表示式都表示從輸入型別到輸出型別的函式。

  "Simplicity的優勢是在於它所具有的功能,而不是它所包含的功能"

  這種語言沒有狀態,也沒有命名變數,沒有函式型別(這意味著沒有更高階的函式),也沒有無限迴圈或遞迴 - 可以建立contracts狀態來實現迴圈,而不需要在Simplicity本身內無限迴圈。

  結論

  Simplicity可以部署在新的區塊鏈應用中,包括sidechain和比特幣本身,也可以用於需要在潛在對抗條件下傳輸和執行有限程式的任何應用。

  目前,Simplicity仍然是一個Blockstream研究和開發專案,未來有可能用於Blockstream產品。它的下一步是釋出Simplicity SDK。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31137683/viewspace-2153933/,如需轉載,請註明出處,否則將追究法律責任。

相關文章