被 Libra 刷屏的你絕對不知道, 也許這才是它最大的”核武器”… - 冷萃財經

被 Libra 刷屏的你絕對不知道, 也許這才是它最大的”核武器”…

被 Libra 刷屏的你絕對不知道, 也許這才是它最大的”核武器”…
文章摘要:作者 | Second State責編 | 喬治出品 | 區塊鏈大本營(blockchain_camp)Libra 火了,火得一塌糊塗。

被 Libra 刷屏的你絕對不知道, 也許這才是它最大的”核武器”…

作者 | Second State

責編 | 喬治

出品 | 區塊鏈大本營(blockchain_camp)

Libra 火了,火得一塌糊塗。

一個原因是其被爭相討論的「建立一套簡單的、無國界的貨幣和為數十億人服務的金融基礎設施」光榮使命。朋友圈刷屏、社群刷屏,線上線下專家 PK、xx 論劍,支持、質疑、反對,「Libra 太牛了」、「Libra 被吹得太牛了」。

另一個原因,伴隨其出生的 Move 語言也是一大亮點。不管 Libra 的「光榮使命」是否可以實現,但在另一陣地,在 GitHub Trending 榜單上,基於 Rust 語言搭建卻又發布 Move 語言的 Libra 確實是實實在在地火了,不知不覺就衝上了 GitHub 日活第2名……

被 Libra 刷屏的你絕對不知道, 也許這才是它最大的”核武器”…

圖片來源:https://github.com/trending?since=daily

那麼問題來了,你認為 Libra最大的亮點是什麼?

可以說,Libra 也許是目前為止本年度區塊鏈領域最受期待、最多討論的新聞了。

根據 Libra 白皮書描述的「建立去中心化的全球貨幣」的目標,該項目有著非常野心勃勃的加密經濟學設計管理規則,同時其聯盟中的合作夥伴也非常重磅

被 Libra 刷屏的你絕對不知道, 也許這才是它最大的”核武器”…

包括 VISA、ebay 和 Coinbase 在內的29個首批合作夥伴

Libra 區塊鏈是一個去中心化的可編程的資料庫,其被設計成用於支持一個波動性低的加密貨幣,它能作為有效的交換媒介服務世界上幾十億人。

— — Libra 白皮書

但作為技術人員,我們對於其運用區塊鏈技術的方式最感興趣。

為什麼 Libra 項目要求有自己的一條區塊鏈呢?對於應用程序開發者來說機會在哪裡?對於企業以及傳統的 IT 公司而言,從中可以得到哪些推斷?我們將分三篇文章來討論這幾個問題。

1、Libra 應用程序開發方法;

2、深度解析 Libra 項目的核心應用;

3、如何基於 Libra 開發一款應用程序?

本文為系列文章第一部分,一起來看吧。

智能合約先行

Libra 項目中最引人矚目的設計功能之一,就是其智能合約先行的策略。就算是像以太坊這樣的智能合約平台,智能合約的執行僅僅是一種交易的類型。以太坊原生操作仍然是幣(coin)的交易。而 Libra 不同。智能合約是 Libra 上的一等公民。

被 Libra 刷屏的你絕對不知道, 也許這才是它最大的”核武器”…

通過 Libra Core 內部組件寫智能合約的流程

Libra 區塊鏈本身是用 Rust 編寫的,但是 Libra 上的應用程序是使用新的編程語言 Move 來編寫。所有來自外部的區塊鏈互動都由 Move 程序來處理,在 Libra 上,即便是一個幣的轉賬,也是由 Move 程序來處理的。每一個 Libra 節點都會運行一個虛擬機。虛擬機執行程序,並且記錄共識達成後的結果。筆者認為智能合約先行的方式能夠讓 Libra 項目建立起一個功能多樣的基礎設施,這也能適用於未來的需要。

為什麼使用 Move 編程語言


那麼,為什麼我們需要一種新的編程語言?是因為安全和性能的要求。Libra 要建造一條新的鏈,因為目前市場上的區塊鏈解決方案沒有辦法滿足其對性能和安全的要求。

Facebook 和 Libra 想要建立專註於支付和資產數字化的區塊鏈,因此他們創造了 Move 編程語言,內置了對不可更改且不可複製的資產的支持。Move 編程語言是一個用於數字資產管理的 DSL(域名特定語言)。

被 Libra 刷屏的你絕對不知道, 也許這才是它最大的”核武器”…

比特幣在加密方面成就非凡,能夠在數字世界創建無法複製的東西,有著非常巨大的價值。

— — 艾里克斯米特,谷歌主席

Move 編程語言的名字來自於 Move 本身支持的基礎操作器。Move 操作器負責移動資產。Move 消除了原本常見的兩步操作:減掉前面一個賬戶的餘額,然後加到另外一個賬戶。Move 語言將資產與資源放在一等公民的地位。當然,Move 語言也有其他重要的特性,使其在資產管理方面更加安全,更加健壯。

1public deposit(payee: address, to_deposit: Coin) {
2let to_deposit_value: u64 = Unpack<Coin>(move(to_deposit));
3let coin_ref: &mut Coin = BorrowGlobal<Coin>(move(payee));
4let coin_value_ref: &mut u64 = &mut move(coin_ref).value;
5let coin_value: u64 = *move(coin_value_ref);
6*move(coin_value_ref) = move(coin_value) + move(to_deposit_value);
7}

Move 操作器,存款代碼


 1public withdraw_from_sender(amount: u64): Coin {
2let transaction_sender_address: address = GetTxnSenderAddress();
3let coin_ref: &mut Coin = BorrowGlobal<Coin>(move(transaction_sender_address));
4let coin_value_ref: &mut u64 = &mut move(coin_ref).value;
5let coin_value: u64 = *move(coin_value_ref);
6RejectUnless(copy(coin_value) >= copy(amount));
7*move(coin_value_ref) = move(coin_value) - copy(amount);
8let new_coin: Coin = Pack<Coin>(move(amount));
9return move(new_coin);
10}

Move 操作器,取款代碼


Move 編程語言是靜態的,並且由編譯器工具來發現錯誤和潛在的問題。

Move 源代碼被編譯為由虛擬機執行的靜態的 IR (intermediate representation)代碼。IR 代碼由工具進行檢查並驗證是否正確。

1public main(payee: address, amount: u64) {
2let coin: 0x0.Currency.Coin = 0x0.Currency.withdraw_from_sender(copy(amount));
30x0.Currency.deposit(copy(payee), move(coin));
4}


實際上,目前的 Libra 資料僅僅有 Move IR 代碼的案例。Move 源代碼的細節,在撰寫本文時還未公布。

Move 編程語言和虛擬機是 Libra 項目的關鍵創新之處,但是 Move 編程語言與傳統的 Solidity 和 Vyper 智能合約語言,以及 EVM(以太坊虛擬機)和 WebAssembly 區塊鏈虛擬機相比,所做出的妥協有哪些呢?

犧牲圖靈完備性

大多數 DSL 特定語言系統都會就具體的任務進行優化,因此並不適用於廣泛意義上的計算。Libra 並未直接表示 Move 編程語言是不是一個圖靈完備的體系,但是,Move 專門針對金融交易進行優化,Move 系統可能並不適合用在開發加密貨幣遊戲或博彩。

也就是說,Libra 軟體對於大多數企業智能合約用例來說並不合適。但還有其他的方面,Move 編程語言在很大程度上不是智能合約。

Move 程序不是智能合約

Move 程序必須進行編譯,並且集成到一個 Libra 節點軟體當中,對普通用戶來說才是可用的。Libra 區塊鏈如果要支持新的 Move 程序,必須要暫停整條鏈,並且所有三分之二的驗證人節點進行軟體升級,才能夠支持同樣的 Move 程序,這在本質上意味著,每次要添加新的 Move 程序到區塊鏈,都要進行硬分叉,期間伴隨著區塊鏈服務暫停。這不是智能合約,而是 chaincode(鏈碼)

智能合約的一個決定性的特點就是它有能力按照要求在區塊鏈在並不需要暫停服務的情況下,通過共識,部署並且執行新代碼,這對於企業區塊鏈或者是公鏈來說非常重要。

  • 公鏈必須允許任何人在不需要得到授權也不需要暫停服務的情況下部署並執行智能合約代碼;

  • 企業級的區塊鏈特別需要使用智能合約來創造自動化的商務決策。比如在不同幾方之間,進行擔保交易。僱員與合伙人必須能夠按照實際需要來修改和部署智能合約,同時不需要暫停整條鏈。

Libra 項目作為一個專註於金融交易的准入式區塊鏈,它的最初的方案,是使用不可更改的 chaincode。這樣能夠讓整個系統更加安全,而且更加穩定,因為所有的 Move 程序都會至少要得到100個驗證人節點中的67位的檢查和允許。但是 Libra 項目所聲稱的目標是在接下來五年當中,進化成一條公鏈。我們相信 Move 架構會與區塊鏈共同進化。

寫在最後

在本篇文章中,我們聚焦討論了 Move 編程語言以及由其驅動的智能合約。當然,Libra 還有其它很有意思的技術創新。比如以下值得關注的點:

  • 以太坊每個節點都維護了一個全球性的資料庫,在每個區塊更新之後,資料庫也會跟著更新;而 Libra 與以太坊不同,Libra 的資料庫是基於不同版本的,Libra 的狀態資料庫在每個交易完成後得到更新。對 Libra 來說,相較交易的概念而言,區塊的概念沒有那麼重要。

  • Libra 區塊鏈最初的性能目標是每秒1000筆交易。很顯然,這對於一個全球性的支付企業或者全球性的電商場景而言,已經足夠了,因為 VISA 平均 TPS 也僅僅在1700左右。Libra 沒有不切實際、不負責任地吹噓百萬 TPS

在接下來的兩篇文章中,我們將提供對 Move 程序的深度解讀,並向讀者展示 Move 語言具體是如何工作的。敬請期待。

拓展資源:

  • Libra 白皮書:

    https://libra.org/en-US/white-paper/

  • Libra GitHub:

    https://github.com/libra/libra

  • Libra 技術白皮書:

    https://developers.libra.org/docs/assets/papers/the-libra-blockchain.pdf

  • Move 語言:

    https://developers.libra.org/docs/assets/papers/libra-move-a-language-with-programmable-resources.pdf


冷萃財經原創,作者:Awing,轉載請註明出處:https://www.lccjd.top/2019/06/21/%e8%a2%ab-libra-%e5%88%b7%e5%b1%8f%e7%9a%84%e4%bd%a0%e7%bb%9d%e5%af%b9%e4%b8%8d%e7%9f%a5%e9%81%93-%e4%b9%9f%e8%ae%b8%e8%bf%99%e6%89%8d%e6%98%af%e5%ae%83%e6%9c%80%e5%a4%a7%e7%9a%84%e6%a0%b8/?variant=zh-tw

0

掃一掃,分享到微信

猜你喜歡

文章評論

電子郵件地址不會被公開。 必填項已用*標註

後發表評論

    上一篇

    Twitter 精選:《精通比特幣》作者稱新「韭菜」入場,騙局層出不窮

    下一篇

    區塊鏈的最大問題:被神化!

    微信公眾號

    微信公眾號