12.24 一個用JavaScript開發智能合約的以太坊分叉主鏈

核心摘要:1 EthereumJS 是一個基於 Ethereum 原理開發的使用 Javascript 語言快速開發智能合約的區塊鏈主鏈項目。2 EthereumJS 將通過其區塊鏈基本特性和智能合約功能為傳統行業提供區塊鏈升 級,我們將這種升級稱呼為“區塊鏈+”。

一個用JavaScript開發智能合約的以太坊分叉主鏈


研發初衷:以太坊 Solidity 語言的特點和劣勢

Solidity 是一種合約導向式語言,可被應用於各種不同的區塊鏈 平臺上,其主要開發者為加文·伍德,Christian Reitwiessner,Alex

Beregszaszi,Liana Husikyan,Yoichi Hirai 和其他幾位早期以太坊核心 貢獻者。Solidity 可使程序開發人員能在區塊鏈上(例如以太坊)編 寫智能合約。

Solidity 是一款非常非常小眾的編程語言,非區塊鏈行業的軟件 開發者往往需要花費時間在學習才能進行以太坊智能合約的開發。同 時,因為 Solidity 的小眾化特性,其代碼中的安全漏洞亦不容易被髮 現和修復。

智能合約是“執行合約條款的計算機交易協議”。區塊鏈上的所 有用戶都可以看到基於區塊鏈的智能合約。但是,這會導致包括安全 漏洞在內的所有漏洞都可見,並且可能無法迅速修復。

這樣的攻擊難以迅速解決,例如,2016 年 6 月 The DAOEther 的 漏洞造成損失 5000 萬美元,而開發者試圖達成共識的解決方案。[6] DAO 的程序在黑客刪除資金之前有一段時間的延遲。以太坊軟件的 一個硬分叉在時限到期之前完成了攻擊者的資金回收工作。

以太坊智能合約中的問題包括合約編程 Solidity、編譯器錯誤、 以太坊虛擬機錯誤、對區塊鏈網絡的攻擊、程序錯誤的不變性以及其 他尚無文檔記錄的攻擊。

2018 年 4 月 22 日, BeautyChain 智能合約出現重大漏洞,黑客 通過此漏洞無限生成代幣,導致 BitEclipse (BEC)的價值接近歸零。 同月 25 日,SmartMesh 出現疑似重大安全漏洞,宣佈暫停所有 SMT 交易和轉賬直至另行通知,導致損失約 1.4 億美金。28 日,EOS 被指 可能存在 BEC 代幣合約類似的整數溢出漏洞,但沒消息詳細說明。5

月 24 日, BAI 交易存在大量異常問題, 損失金額未知。 8 月 22 日, GODGAME 合約被黑客入侵,GOD 智能合約上的以太坊總數歸 零。

EthereumJS 的定義?

為了解決上面提到的“Solidity 是一款非常非常小眾的編程語言, 非區塊鏈行業的軟件開發者往往需要花費時間在學習才能進行以太 坊智能合約的開發。同時,因為 Solidity 的小眾化特性,其代碼中的 安全漏洞亦不容易被發現和修復。”我們發起了 EthereumJS(簡稱: ETJS)項目,EthereumJS 是一個基於 Ethereum 原理開發的使用 Javascript 語言快速開發智能合約的區塊鏈主鏈項目。

我們致力於通過開發和不斷優化 EthereumJS,讓智能合約和去中 心化應用的開發更加容易,更多非區塊鏈開發者可以快速投入到區塊 鏈開發事業中來,從而實現更多互聯網行業和傳統行業的區塊鏈升 級。

Javascript 語言的特性
JavaScript(通常縮寫為 JS)是一種高級的、解釋型的編程語言。

JavaScript 是一門基於原型、函數先行的語言,是一門多範式的語言, 它支持面向對象編程,命令式編程,以及函數式編程。它提供語法來 操控文本、數組、日期以及正則表達式等,不支持 I/O,比如網絡、 存儲和圖形等,但這些都可以由它的宿主環境提供支持。它已經由

ECMA(歐洲電腦製造商協會)通過 ECMAScript 實現語言的標準化。 它被世界上的絕大多數網站所使用,也被世界主流瀏覽器(Chrome、 IE、Firefox、Safari、Opera)支持。

一個用JavaScript開發智能合約的以太坊分叉主鏈


雖然 JavaScript 與 Java 這門語言不管是在名字上,或是在語法上 都有很多相似性,但這兩門編程語言從設計之初就有很大的不同, JavaScript 的語言設計主要受到了 Self(一種基於原型的編程語言)和 Scheme(一門函數式編程語言)的影響。在語法結構上它又與 C 語言 有很多相似(例如 if 條件語句、switch 語句、while 循環、do-while 循 環等)。

在客戶端,JavaScript 在傳統意義上被實現為一種解釋語言,但 在最近,它已經可以被即時編譯(JIT)執行。隨著最新的 HTML5 和 CSS3 語言標準的推行它還可用於遊戲、桌面和移動應用程序的開發 和在服務器端網絡環境運行,如 Node.js。

JavaScript 語言在開發者中有著相當大的普及率和使用度,且 Node.js 已經被區塊鏈行業廣泛使用於接口開發。

EthereumJS 的實現方式
EthereumJS 的主鏈源代碼,將以以太坊 GETH 客戶端為基礎,使

用 Go 語言進行開發。
預計將在未來 1 年內基本實現通過轉換接口實現將 Javascript 代

碼開發的智能合約轉化為 Solidity 代碼。該轉化接口我們將其命名為 Js2So Interface。

Js2So Interface 開發完成後,EthereumJS 的主鏈的開發將進入第二 階段,實現直接部署並運行 Javascript 開發的智能合約,該階段預計 將在 Js2So Interface 開發完成後的 1 年內上線。

EthereumJS 最終使用的 Javascript 語言版本將在符合 ECMA 標準 的前提下,推出一系列更適合智能合約開發的新特性,所以我們同時 還會發布 Javascript for EthereumJS smart contract 的全新 Javascript 標 準。

以太坊智能合約轉化 EthereumJS 智能合約
EthereumJS 是基於以太坊 GETH 客戶端源代碼進行二次開發的全

新主鏈項目。我們不會在開發工程中刪除 GETH 本身對 Solidity 代碼 的支持,所以現在運行於以太坊網絡上的所有智能合約和去中心化應 用都可以無縫移植到 EthereumJS 主鏈上進行運行。

EthereumJS 和區塊鏈+
EthereumJS 智能合約的應用價值

因為 EthereumJS 支持 JavaScript 語言開發智能合約和去中心化應 用,非區塊鏈從業人員無需花費大量的學習時間也可以快速從事區塊 鏈智能合約相關開發。非區塊鏈領域的互聯網公司可以簡單的安排一 部分擅於使用 JavaScript 語言的員工就可以投入區塊鏈這一全新領 域。

由此可見,因為 EthereumJS 的問世將讓更多的互聯網公司和開 發者有能力為傳統行業提供區塊鏈智能合約開發服務。EthereumJS 將 通過其區塊鏈基本特性和智能合約功能為傳統行業提供區塊鏈升級, 我們將這種升級稱呼為“區塊鏈+”。

EthereumJS 智能合約應用場景案例——抵押 智能合約可以通過自動連接各方來完成抵押合同的執行,從而提

供流暢且不易出錯的體驗。智能合約可以在貸款支付時自動處理付款 並從土地記錄中釋放留置權。

它們還可以提高所有參與方的記錄可見性,並有效促進付款的跟 蹤和驗證。它們減少了人工操作過程中的錯誤和成本。為了實現這一 點,數字身份的核驗非常關鍵。

EthereumJS 智能合約應用場景案例——金融貿易
EthereumJS 智能合約可以通過快速信用證和貿易支付開啟來簡

化國際貨物轉移,同時獲得更大的金融資產的流動性。它們還可以提 高買家,供應商和機構的融資效率。

考慮到貿易融資。智能合約程序的行業標準需要更廣的接受度。 此外,政府必須確定在執行失敗的情況下,特別是在糾紛和違約的情 況下,法律應當如何界定責任。

對於貿易金融而言,結算系統、技術要求和離散生態系統的整合 是重要的三元素。


分享到:


相關文章: