用 Go 建立一個新的智慧合約語言 - 新專案動機,概念
這篇文章講述了 為什麼 我們開始為智慧合約建立新的程式語言(使用 Go)。
動機
目前有兩個眾所周知的區塊鏈,比特幣和以太坊。比特幣有 bitcoin script 和以太坊有 solidity 為它們自己的智慧合約程式設計。兩者都有利有弊。
對於 比特幣 而言,它沒有狀態概念,並且 bitcoin script 是基於低階語言和很少的操作,因此它所能做的是有限的。另一方面,因為它的工作方式簡單並且比特幣是沒有狀態的,這樣我們能輕鬆地進行靜態分析,如這個指令碼執行速度有多快。
對於 以太坊 而言,它有狀態的概念,並且 solidity 被設計為高階語言,solidity 開發者能夠更直觀的程式設計,並且以太坊智慧合約可以做很多事情(是的,這是因為以太坊是有狀態的)。另一方面,因為它被設計為高階語言,開發者可以錯誤地將無限迴圈放在永遠不會結束的智慧合約上面,這會在網路上造成不良影響。加上以太坊已經表明它很難做靜態分析。
我們的靈感來自於 2017 年由 Russell O'Connor 撰寫的話“ Simplicity: A New Language for Blockchains ”和 ivy_bitcoin 專案。
所以這就是“ koa ”生存的地方。 “ koa ”是高階加密貨幣語言。並且沒有狀態,靜態分析很容易,比 bitcoin scripts 更多的操作。
架構
koa 專案正在製作新的程式語言,所以我們需要編譯器,由於要將原始碼編譯為位元組碼,所以我們需要進行詞法分析和語法分析。最後位元組碼在 VM 上執行。我們團隊成員首先去編寫編譯器,因此我們閱讀了大量的書籍、部落格文章和研究了流行的開源專案原始碼,像 Go-ethereum。
這就是它。這是我們 koa 專案的理念:製作新的高階智慧合約語言,可以輕鬆實現靜態分析。在下一篇文章中,我們將深入到每一個元件中。你可以從 此處 檢視 WIP 開源專案。