Move語言:我眼中的Libra 最大亮點
安比(SECBIT)实验室
2019-06-20 03:12
本文约4333字,阅读全文需要约17分钟
Facebook 將帶來智能合約的新曙光。

編者按:本文來自 編者按:本文來自編者按:本文來自

編者按:本文來自

(ID:SECBIT),作者:安比(SECBIT)實驗室創始人郭宇,經授權發布。

——郭宇

在區塊鏈領域裡面,凡是套用傳統方法的方案,無一勝出,唯有創新才有未來。

——郭宇

相信各位和我一樣,今天被Facebook 刷爆朋友圈。

Their design goals seem to overlap, or even aim to replace Ethereum?
Facebook 發起的加密數字貨幣項目Libra 今天(6月18日)正式公開亮相。 Libra 同步發布了多語言官網和白皮書,定位為面向數十億人的全球貨幣和金融服務基礎設施。 Libra 還發布了多個技術白皮書,詳細介紹了其新開發的編程語言Move 和共識協議LibraBFT。 Libra 源碼已在GitHub 開源,測試網絡也已上線。目前設計為許可鏈(聯盟鏈),其聲稱當前非許可鏈(公鏈)不存在成熟的解決方案能夠支撐數十億人的使用需求,並表明將在發布五年內開始轉向非許可鏈的過渡工作。
Libra 的一系列發布中,新的編程語言Move 尤為吸人眼球。第一時間看了Move 的白皮書,嗯,這也許才是未來智能合約語言該有的樣子。
I think "move" programming language released by $FB could be more interesting than libra.
一位來自柏林的開發者Lefteris Karapetsas 在社交平台上提出了自己的觀點:
他們的設計目標似乎有些重疊,或者甚至旨在代替以太坊?
I'm usually pretty skeptical of anything related to cryptocurrency, but here's one piece of Libra that looks potentially interesting: a bytecode programming language called Move with semantics inspired by linear logic.
PuzzleToLife.com 的創始人CryptoPuzzleDream 認為:
我認為FB發布的“move” 語言比libra 更有趣。

Move 是為「數字資產」而生的智能合約平台型語言。

二級標題

二級標題

  • 發行數字貨幣,Token,和數字資產

  • 二級標題

二級標題

二級標題

Well-typed programs never get stuck.

自底向上的靜態類型系統

二級標題

二級標題

First-class Resources 理念

First-class Resources 理念

First-class Resources 理念

First-class Resources 理念

First-class Resources 這個詞相當的學術,中文翻譯過來叫資源是一等公民,這究竟什麼意思呢?

所謂的編程語言的一等公民就是編程語言在編程的時候首要考慮的被編程對象。

  • 那麼資源,Resources又是什麼呢?這也是一個很學術的名字。 Resources是和Value相對應的概念。 Value 是可以隨意拷貝的,而Resources 只能被消耗,不能被拷貝。 Resources就像可樂,你喝了一瓶就少了一瓶,而Value,就好比寫在本子上的英文單詞,每天早上都可以念一遍,念完他不會消失,如果你記住了,那就在腦子裡拷貝了一份。不僅你可以念,我也可以念,你可以背,我也可以背。

  • 傳統的編程語言,包括以太坊智能合約語言中,對於數字資產的記賬是採用的Value 方式,這會導致一個問題:記賬是有可能記錯的。事實上記錯賬的智能合約相當得多,比如張三向李四轉賬,李四的賬戶多了10塊錢,但是張三的賬戶餘額卻沒改。過去兩年裡的各種記賬漏洞甚至一度搞得大家已經對智能合約的未來喪失了信心。

  • Move 合約採用了一種吸收了傳統理論「線性邏輯」的類型,叫做資源類型。數字資產可以用「資源類型」來定義,這樣一來,數字資產就像資源一樣,滿足線性邏輯中的一些特性:

數字資產不能被複製

First-class resources are a very general concept that programmers can use not only to implement safe digital assets but also to write correct business logic for wrapping assets and enforcing access control policies.作為一等公民的資源是一種非常普遍的概念,程序員不僅可以用它實現安全的數字資產,同時也可以編寫正確的業務邏輯,實現正確的訪問控制策略。

二級標題

二級標題

二級標題

合約安全性設計

Move 合約在設計時,充分考慮了安全性。首先Move 完全不支持動態指派(Dynamic Dispatch)。好,我這裡解釋下什麼是Dynamic Dispatch,通俗地說,這是一種非常靈活的語言機制。在程序裡面是可以寫很多的函數,或者過程,或者子程序。然後一個主程序可以來調用這些函數/過程/子程序,來分別完成不同的功能。如果程序在運行之前,我們就能知道它到底都調用了哪個函數,或者以某種順序調用很多函數,那麼這些函數調用是「靜態」的,如果在運行之前,我們不清楚某一步的函數調用究竟是調用了哪一個函數,直到程序運行的時候,通過觀察,我們才能知道的話,那麼這個函數調用被稱為是「動態」的。 「動態」顯然要比「靜態」靈活的多。

與以太坊EVM平台相比,Move 模塊系統不支持循環遞歸依賴,完美解決合約重入漏洞(Re-entrancy)。

二級標題

二級標題

Move modules are similar to smart contracts in other blockchain languages. …, However, modules enforce strong data abstraction — a type is transparent inside its declaring module and opaque outside of it.

二級標題

Move 的模塊系統為智能合約的形式化驗證提供了非常好的基礎,在模塊內部可以定義「不變式」。所謂的不變式是指對數字資產內部狀態的一個嚴格約束,這個約束可以為形式化驗證的自動化提供非常有價值的信息。而且,模塊系統的「不透明抽象」可以使形式化驗證工作變得模塊化,成本更低。在Move 模塊系統上編寫程序分析器,符號執行器也會簡單很多,因為經過抽象,可以把合約邏輯變得非常簡單,易推理。

正文

正文

正文

  • 面向未來的Move 智能合約

  • Move 雖然看起來還略顯粗糙和稚嫩,但是這個方向仍然讓人激動人心,從Move 語言層面可以看到Facebook 的野心,是想做一個龐大的數字資產平台。這個角色本來是應該屬於以太坊。

  • 我為什麼有點喜歡上了Move,想了想,大概下面三個原因:

安比(SECBIT)实验室
作者文库