2018 中美區塊鏈進化 50 講:如何透過 ArcBlock 連接底層公鏈

前言: 《2018 中美區塊鏈進化 50 講》是由矽谷密探聯合 50 位區塊鏈項目創始人聯手打造的首套中美區塊鏈進化課程。現在區塊鏈正處於非常早期的階段,魚龍混雜,很多用戶根本無法識別,2018 矽谷密探將邀請中美 50 位區塊鏈世界的推動者和先行者,分享他們對區塊鏈世界的真知灼見,為像我們這樣的區塊鏈信仰者提供一個學習的機會,並推動區塊鏈技術的運用和落地。

主講人簡介: 冒志鴻,ArcBlock 區塊基石創始人兼 CEO,連續創業和技術革新者,連續創建天擇軟體、北極星軟體、優友地帶三家公司,是國內最早的 VoIP 通訊系統和社群網路服務創造提供者。此後加入了微軟歐洲研發中心和微軟美國研究院,從事社會化計算研究。2017 年,在美國創立 ArcBlock,為區塊鏈 3.0 時代的到來奠定堅實的基礎。
內容看點:
- ArcBlock 協定層的商業價值
- 如何透過開放鏈訪問協定實現應用跨鏈而造
- 開發者如何在 ArcBlock 上快速搭建 DApp
以下為直播分享內容實錄:
考慮到不是所有朋友都對我們 ArcBlock 基石項目比較熟悉,先簡單地介紹一下 ArcBlock 基石這個項目的願景,然後再來講一講我們最近在做什麼,以及我們即將要發布的東西是什麼?
ArcBlock 基石的目標是設計一個服務性的應用服務平台,那麼這個應用服務平台和其他的雲端運算有什麼區別?它是一個專門為區塊鏈應用而優化的平台。
雲端運算平台有很多種,大部分雲端運算平台是比較通用的。從雲端運算平台的發展,也經歷了一個相當長的過程,從最初的比如說亞馬遜的 AWS 為主,他們首先是提供儲存服務,然後提供虛擬機器的運算服務,比如說像 EC2,逐漸地他們提供了一系列各種各樣的應用服務,比如說資料庫的服務、無伺服器(Serverless)的服務等等。
亞馬遜取得巨大成功之後,有相當多的公司也都跟進,比如說微軟的 Windows Azure 以及國內所知道的阿里雲、騰訊雲等等。比較有趣的是阿里雲的美國公司,就跟我們在同一棟樓,而騰訊、華為就在我們旁邊的一棟樓,我們在美國的辦公室周圍都是雲端運算的公司,所以西雅圖也被稱為是全球的雲端運算之都。
ArcBlock 的本質是一個雲端運算平台。這樣一個定位可能跟現在主流的區塊鏈普遍的設計有一點點不同,甚至有點格格不入。因為在區塊鏈這個世界裡面聽到的聲音都是說認為只要是雲端運算那就是中心化的,那麼我們區塊鏈是去中心化的東西,那麼只要是允許這種東西,它可能就不是區塊鏈了。
但是我們經過自己思考,認為不是這樣,我們認為在區塊鏈時代,一個未來的真正的區塊鏈能落地的時候,應該是跟雲端運算更緊密地結合、更有效地結合的這樣一個時候。所以我們的 ArcBlock 本質上和普通的雲端運算平台還有一個更不同的地方,大部分雲端平台有一個特點,它們基本上都是一家公司開發與營運,比如亞馬遜的 AWS 永遠都屬於亞馬遜,它是自己開發的,那麼它的整合、經營、營運的權利全部都是由亞馬遜這一家公司擁有的,同樣阿里雲也是屬於阿里巴巴的。在 ArcBlock 的營運思路裡面,有一個很大的區別,我們認為一個去中心化的營運,才是一個更加有潛力、有競爭力的一種方式。
我們 ArcBlock 的願景是開發出 ArcBlock 這樣一個軟體之後,ArcBlock 服務的提供者除了我們本身以外還有很多夥伴一起來進行。之所以能保持夥伴們在各自營運自己的服務,還能形成有保證的統一的服務品質並且價格合理的這樣一個平台,那麼這裡面最重要的一個機制是什麼呢?就是需要透過我們設計有一個 App 鏈,那麼這個 App 鏈在第一階段,它的主要作用就是作為這個服務平台的 BOSS 系統,可以認為這種就是一個平台的大 BOSS,它管理著整個平台的營運計費和業務支撐。
所以 ArcBlock 在這裡面有一個比較創新地地方,就是我們把區塊鏈的去中心化公開,並有一個分散式帳本來公開透明地處理這樣的一些機制,把它引入了雲端運算平台的計費和業務支撐之中,無論有多少方來共同營運 ArcBlock,它背後的計費系統、業務支撐系統都是統一的,這樣才能夠使得更多的合作方可以來參與維護營運。
那麼這就是 ArcBlock 白皮書中提到的代幣經濟中礦工的概念,我們把礦工分為兩種,一種叫資源礦工,一種叫組件礦工。 那麼這兩個之間有什麼區別?大家都知道要營運一個業務系統,要執行一個軟體系統,那麼你需要的不僅僅是伺服器頻寬和儲存,同樣也需要軟體。我們如果把伺服器頻寬儲存等等這些稱為一種資源的話,那麼產品的軟體也同樣重要,資源跟軟體是同等重要的,但並不是所有可以提供出資源的人,都能夠寫出最好的軟體,也不一定是能寫出這些好的軟體的人,能提供這些資源。
所以我們把礦工分成兩類,一類是可以提供資源的人, 也就是它可以提供他的網路頻寬伺服器一起來參與這個營運。另外一類是成為組件礦工, 他們可以提供一些組件的軟體,比如說在我們這個 ArcBlock 裡面重要的一個概念稱為叫開放鏈訪問協定,那麼這個開放鏈訪問協定裡面的適配器就可以是一個組件,也就是說任何一個第三方,他覺得 ArcBlock 這個開放鏈訪問協定這種想法不錯,我們如果有一個新的區塊鏈技術社群還沒有支援,但是卻有用戶想要能夠支援它,我們可以不需要讓 ArcBlock 來開發,可以讓用戶自己來參與開發。用戶如果開發得比較理想的話,不僅可以給自己用,還可以把這個協定適配器提供給其他人來用,當然在其他人來用的時候,你就能獲得報酬。

這是組件礦工的一個例子,這種類型在 ArcBlock 裡也認為是一種組件,就是應用級的組件。那麼同樣的話,這些組件裡面還有很底層的,有直接面向用戶很高層的,這也有所謂的中間層,也就是說比如說有人他特別擅長於寫某個演算法,舉個例子,如果是要實現一個未來的去中心化交易所,那麼這個去中心化交易所裡面可能有一些撮合的演算法,有一些量化交易的演算法,有一些人他特別擅長於做這些事情,但是呢他們可能並不擅長於開發對用戶比較友好的介面,因為開發者他們各自有不同的專長。那麼在這種情況下,就可以讓一些開發者專注於提供這種演算法相關的組件,開發者就可以專注於自己所擅長的這種,比如說是這個用戶介面相關的事情。
ArcBlock 這樣一個平台是一個非常宏大的願景,這個願景最了不起的地方不只是說我們設計出這樣一個先進的系統,而是帶來了一個先進的理念,這個理念使得無數的第三方可以透過區塊鏈這樣一個公開透明的機制來形成一個新的聯合體。這個聯合體中有錢的出錢,有力的出力,有智慧的出智慧,有用戶的出用戶,第一次被如此好地團結起來,並且這個價值的分配也在整個軟體開發的發展歷史之中,能夠有效地把這個價值得到體現。所以從這個角度來講,ArcBlock 是非常有意義的。
在 ArcBlock 這個設計裡面,我們主要分為四大主要的部分,第一個主要的部分就稱為叫開放鏈訪問協定。 那麼開放鏈訪問協定的目標是實現一個開放的中間層,那麼這個中間層呢你可以透過它去訪問任何不同的區塊鏈。也就是說我們開發者透過開放鏈訪問協定可以去訪問底層不同的區塊鏈。大家都知道在今天這種萬鏈奔騰的時代,想要真正地去做一個開發是很痛苦的。即使像以太坊這樣非常友好的一個系統,你跟著它的開發者指南去一步步去實現,也需要幾個小時,而更糟糕的在今天整個區塊鏈還沒有一個統一的架構,這樣就使得開發者在初期決定這個項目怎麼去開發的時候,光在選型上就非常頭疼。
大家都知道做一個開發者有的時候沒有輪子是很痛苦的,因為你得要去自己重新造輪子,但是有的時候輪子過多是更痛苦,可能你發現這個 A 輪子裡面有一半是你需要的,B 輪裡面有另外一半是你需要的,這時候往往導致的結果就是很多開發就開發出了 C 輪,最終就導致一堆輪子在那地方,然後每個輪子都不完善,不知道該怎麼去做。
現在大部分區塊鏈是從鏈本身的角度去考慮的,所以每個鏈出來的 API 也是千差萬別的,但如果我們從應用的角度去入手的話,我們能總結出一些需求的話,那麼我們就有希望開發出這樣一個有效的中間層,這個中間層能使得它可能滿足百分之八九十這種應用的需求,那麼剩下的那個可能 10~20% 的應用可能需要調用一些比較高級的 API,它最重要的是解決絕大部分應用的問題。
我們開放鏈訪問協定這個設計相當大程度地受到了資料庫整個發展的這樣一個啟示,在一個電腦的系統裡面,它非常像一個資料庫的地位。資料庫的地位今天大家已經是有目共睹的,大家用到 99% 的應用都是一個有資料庫支撐的應用。但是資料庫本身並不在整個系統之中,它雖然是極其重要的,但是它並不能起到這 99% 的這一個部分。
其實資料庫雖然是一個非常中心化的、非常核心的這樣一個部件,但是一個應用系統往往更多的開發、更多的價值體現在這個應用。這既體現在數據之外,那麼區塊鏈也有一個相當大的這樣一個共性,從某種角度來講,現在大家都說公鏈非常重要,它的價值是很大,然而作為一個完整的應用系統,這個區塊鏈本身在這整個系統之中只是佔了很小的一部分,就像今天的資料庫一樣,資料庫是幾乎 99% 應用的核心,但是資料庫本身所佔到的只是這個系統相當小的一部分。

區塊鏈的今天非常類似於像資料庫早年一樣,有無數種不同的實踐方法,有無數種不同的協定,但是作為我們開發者來說,我們不需要這些,而且對於有一個統一的開放的標準,對整個應用的生態形成有非常大的價值。我們在這裡試圖貢獻我們的力量。
明天我們將開始發布我們第一個版本的「開放鏈訪問協定」,簡稱 OCAP,在我們採用了現在已經有的一個 GraphQL 的這樣一個查詢語言,GraphQL 是 Facebook 主導推出,並且在幾年之前已經開源的一套查詢語言,你可以認為它是一個產品,也可以認為它是一個應用框架,我們透過 GraphQL 我們一下子就團結了 GraphQL 現在整個生態及生態裡的各種工具,也就是說大家在我們這個 App 上面進行這種開發,不需要重新去學這個新的語言,不需要去發明新的輪子,而是說現有的整個 GraphQL 裡面的大部分工具都可以直接使用。
而從另外一個角度來講,我們 ArcBlock 也是對 GraphQL 社群的一個重大的貢獻,因為在此之前 GraphQL 主要都是用來做 API 或者說資料庫的這種查詢的介面,而當我們開放鏈訪問協定推出來後,GraphQL 開發者可以非常輕鬆地來訪問各種各樣不同的區塊鏈,所以從這個角度來講也是一個比較大的貢獻。
OCAP 是我們第一個應用,它是一個讓大家去實驗和玩的地方,本身並不能作為一個獨立的應用去執行,因此我們在 OCAP 推出之後,緊接著將會推出一個稱為叫 OCAP Playground 的概念,這個 OCAP Playground 其實是一個比較有趣的想法,也就是當你用這個 OCAP Playground,很多人可能他拿到這個的時候,他仍然會感到不知所措,因為你不知道這裡面可以幹什麼。那麼在這種情況之下,可能大家最容易看到的事情就是一些範例程式。
舉個例子,我們可以去查詢中本聰的第一個創世區塊裡面寫了什麼東西?還有比如說我們國內著名的一個七彩神仙魚,他在比特幣上寫了一個浪漫的愛的宣言,那個區塊裡面數據在哪裡寫了什麼東西?比如在前一段時間中國北大發生的事情,有人把一封學校很不喜歡的信把它寫在一個地方,那麼這樣去找到類似的這種事情等等,這些例子都可以很容易地去做到,而且可以把它分享出來,那麼能把這些歷程有效地分享,這個東西呢我們把它結合在一起,我們就會推出第二個應用,我們稱為 OCAP Playbook。
這個 OCAP Playbook 的作用,一方面是使得大家可以把推廣的應用進行分享,另外一方面也可以使得大家把如何使用 OCAP 來開發區塊鏈這樣的思路變得充分普及。
區塊鏈開發的最大一個痛點是它的後端部署成本和開發成本都比較大, 大家今天用這個區塊鏈的時候也是這樣一種情況,你需要去弄那麼難記的錢包地址,為什麼要付這個 Gas?Gas 調高調低是什麼概念大家都不清楚,實際上這些事情用戶是不需要知道的,那麼這件事情是我們開發者知道,我們開發者應該把這些事情把它做好,做完了之後讓最終的用戶解放出來。
我們 OCAP 就是把這些很紮實的後端事情幫你搞定了,換句話說就是說你透過 OCAP 就實現了非常多的一個後端,那麼你只要把主要的精力花在要讓後端來幹什麼,以及讓前端怎麼做的這個事情,我們還會推出 OCAP 的 SDK,iOS 的 SDK 與 Android 的 SDK,也就是說有開發 iOS 和 Android 經驗的開發者,透過 OCAP 就可以非常容易地在原來應用上增加對區塊鏈的支援。
問答環節
Q1:因為公鏈的不同,所以現在加密貨幣錢包都只支援一種公鏈上的 Token,比如說 imToken 它只支援以太坊和以太坊 Token,而無法支援 BTC 或者 EOS,那 ArcBlock 這個跨鏈協定的功能,到時候能不能誕生出一種支援所有 Token 的錢包?
老冒: 是的,如果採用開放鏈訪問協定,那麼完全可能出現一種超級錢包的應用,這個錢包的應用可以支援所有的開發公鏈,開放訪問協定支援各種不同的錢包絕對沒有問題,我們協定是一個非常好的選擇,但這需要用戶去開發,我們並沒有去開發一個跨鏈的錢包。
區塊鏈裡面的這些錢包,並不是真正的你的錢在這個錢包裡面,你用的這個錢包的 App 首先它是一個地址的查詢器,也就是說你給它一些地址,它能知道這些地址裡面有多少餘額,然後可以查到這個地址曾經發生過哪些交易。如果要發送這些錢,錢包需要對這個交易進行簽名,也就是說這些錢包需要掌握你的私鑰,現在我們用的 App 都是在這個設備上進行簽名的,相對來講這個錢包的安全程度不是那麼高。
任何一個錢包它有一個介面能夠訪問這個區塊鏈,能從區塊鏈查詢到某一個地址上面有多少餘額,查詢到這個地址相關的交易,同時它也能產生一個交易,並且把它廣播到區塊鏈上去,讓這個區塊鏈去執行這個轉帳或者執行這個合約。那麼有了這個開放鏈訪問協定之後,你可以透過這個開放鏈訪問協定去向不同的鏈發出查詢,查詢它的地址餘額,查詢它的轉帳記錄,同時你也可以把簽好名的交易透過開放鏈訪問協定在鏈上進行發送,從而達到轉帳的目的。
即使你是一個區塊鏈的新手,你透過 OCAP 就可以看到別人寫好的一些查詢,你可以簡單地修改一下參數,就可以把它拿來用在自己的應用之中了。這樣的話就是說更大程度地降低應用的成本。所以前面有朋友問到能不能用 OCAP 做 ERC20 的錢包,那當然是可以了,我相信當 OCAP 逐漸完善之後,一定會出現這種超級錢包,一定是在上面會出現的一種典型的應用。
Q2:這個 ArcBlock 是自己開發的嗎?
老冒: ArcBlock 是我們自己開發的,但不完全是從零開始的,我們是基於 GraphQL 語言開發的,我們可以從 GraphQL 裡面採用了很多已經有的好東西,我們並不是從頭開始的,但是我們在 GraphQL 上面做了很多跟區塊鏈相關的東西,所以也相當於是我們自己開發的,但是從 GraphQL 社群的現有基礎上發展出來的,我們將來也會把它開源,所以也就相當於貢獻給社群了。

Q3:中心化或許是區塊鏈進程中的噩夢,請問 ArcBlock 在依託雲端運算中心化的過程,如何防止中心化?
老冒: 什麼是去中心化?我覺得對一個系統來說它是中心還是去中心化的,你要從不同的維度去看,基本上我覺得至少可以從三個維度去看。第一個維度是物理層次的,也就是它的節點分布,它的系統是不是去中心化。第二個維度是治理層面上,也就是它是由一家公司控制的。那麼第三個層次是邏輯層面上,邏輯層面上比較容易理解,就是這一件事情,它這一個組合在一起的東西,它是可以有效地拆成兩樣不同的東西,每一樣東西都可以獨立的工作,互相不影響,但組合在一起又可以變成一個完整的服務,這如果是的話,那麼它就是邏輯上去中心化。拿阿里雲為例,阿里巴巴的雲端服務,它在物理上是去中心化的。
阿里巴巴一定有很多個機房,裡面有很多台機器,很多台機器通常為了做各種災難備援,通常有很多不同的數據中心。它們是不同的機器裡面有可能會採用不同的作業系統,不同的一些軟體部件。所以從某種角度來講,今天幾乎任何一個雲端運算服務,它都是高度去中心化的物理上的設計。然而阿里雲它是屬於阿里巴巴的,所以不管怎麼樣阿里巴巴可以決定它怎樣去營運,它是怎樣具備怎樣的規則,那麼同時阿里雲也是不可以說隨便什麼人都敢去加入的,你想去成為一個阿里雲的節點沒門對吧?這是由阿里巴巴來管理的,所以在治理層面上它是高度中心化,它就屬於阿里巴巴一家。
邏輯上某種角度上是去中心化的,舉個例子,比如說阿里雲裡面可能提供了函式計算,函式計算本身是可以作為一個獨立的業務來提供的。阿里雲裡面提供了儲存的服務,這個儲存的服務和它的運算服務,每一個服務其實都是相對獨立的,它其實可以切割成很多服務可以單獨去用的,所以從邏輯上是比較去中心化。
作為 ArcBlock 的角度來講,不要認為把區塊鏈平台部署在雲端之上,做一個雲上雲,因為用雲端運算就變成是中心化的。我們最重要的一個思路,要能夠讓很多方跟我們一起來營運這樣一個 ArcBlock 服務。那麼從這個角度來講,我們在治理上是去中心化的。那麼另外一點毫無疑問,作為一個應用的平台,我們在產品可以跑很多種不同的應用,很多不同的應用之間可以透過 App 這樣一種方式來形成有效的合作和價值組合,所以我們在邏輯上也是高度去中心化的。
所以我覺得從 ArcBlock 這個設計角度來講,我們是在物理上、邏輯上和治理上都是去中心化的。
Q4:作為一個沒有區塊鏈開發經驗的後端開發,如何入手?App 的開發網站文件在哪裡?
老冒: 我們會有 OCAP 及 GraphQL 支援的文件,會把它提供出來。沒有區塊鏈開發經驗的後端,我覺得 ArcBlock 恰恰就是為你們而設計的,你們可能只要比較熟悉 GraphQL 或者稍微去學習 GraphQL,這是一個非常容易掌握的技術,就可以非常容易地去開發區塊鏈應用了。而且更重要的是你開發了這個應用之後,你的部署也非常容易,ArcBlock 在這個角度上還是做了不少考量,我覺得只有讓開發者不但容易開發,同時也非常容易部署,讓他們在這些後端的部署這些角度上不需要花太多的時間去擔心,這樣才能夠更加有效地促進應用生態的繁榮。
關於收費的問題,我們在 ABT 鏈正式上線之前,我們的服務都是免費的。測試鏈中我們雖然不需要收費,但是要使用 ArcBlock 所有的服務都必須要有 ABT,也就是說你必須持有 ABT 才能調用這些 API 才能開始在裡面做各種各樣的開發,但是只需要你持有就行了,不會去消耗的。等業務完全跑起來之後,有很多服務都會是收費,這也是 ABT 設計的目的。
原文連結: 如何透過 ArcBlock 連接底層公鏈
本頁涉及
活動
-
社群節目客席
confirmed
2018 年 2 月到 2019 年 9 月,我們在十檔中文加密社群節目裡做過客 —— 公開課、微信群系列、講座課程。每一檔都是別人的常設節目,我們上的是其中一期;下面每一條都寫著是誰的節目、第幾期。