ArcBlock Q&A:我們致力於讓區塊鏈開發者擁有全面簡單易用的工具

研發副總裁答問 DApps Workshop 發布
DApps Workshop 北京時間 6 月 15 日正式發布。下午 1 時,ArcBlock 區塊基石(ABT)研發副總裁陳天出席“ABT 新聞直播間”,回答 ABT 社區及媒體提問。

Q1:這次發布的 DApps Workshop 和以前發布的 Forge 框架和 SDK 有什麼不同?
DApps Workshop 是為工程師與產品經理提供的全新開發工具,與先前發布的 Forge Framework 和 SDK(軟體開發套件)有很大差異。它是建構於 Forge 之上的應用,讓大家無須實際撰寫程式碼,就能與手機上的 wallet(錢包)互動,驗證基本構想。先前發布的 SDK 則是一套供程式設計師在不同語言環境中,與 Forge Framework 及 Forge 產生的鏈互動的工具。例如,完全手動送出 transaction(交易)會非常複雜,使用 SDK 則方便許多。DApps Workshop 更進一步,讓你直接在圖形介面中點選、輸入內容並產生 QR Code,接著由錢包與其互動,向鏈送出 transaction。
Q2:DApps Workshop 用來測試驗證開發的想法。問題是想法有千萬種,實現也很多樣,為什麼會有一個通用的測試方法呢?如何輔助產品原型建立?
我們 Forge 框架在發布的時候內置了大概十幾種不同類型的 transaction,然後這些 transaction 結合起來可以形成非常豐富的區塊鏈上業務的功能,比如說我們支援一系列建立資產的 transaction。那麼 DApps Workshop 可以用現在已有支援的 transaction,然後在上面快速通過拖拽等鍵盤輸入,然後生成 Forge 所有支援的這個 transaction,然後你可以組合各種各樣的 transaction 來形成你所需要的這個產品的原型。
好比說你要做一個網上商城,可能會先建立一個錢包,然後用這個錢包去獲得一些初始的 token,然後接下來你會用我們提供的 asset factory(資產工廠)來建立一個可以生成更多資產的一個 asset,然後你可以再去模擬另外一個使用者,就是你換一個手機或者換一個錢包,然後生成一個新的錢包,然後用那個錢包去購買你這個 asset factory 生成的這些資產,整個流程不需要寫一行程式碼就可以通過 DApps Workshop 來完成。
還有比如說以後我們會發布跨鏈的 transaction,會有很多 DApp 可能會嘗試這種跨鏈的開發,那麼 DApps Workshop 就可以幫助你很快的,在你不用寫任何程式碼的情況下,通過你的手機 wallet、通過 Workshop 本身就可以生成可以交互、可以執行的這個程序。
很多時候產品原型的開發,是當你有了一個 idea(想法),你希望能夠以最小的代價生成一個 MVP,就是 Minimum Viable Product(最小可行產品)。那在生成這個 MVP 的過程,你如果寫的程式碼越少,那你在上面投入的這個時間成本就越小,然後你可以做的迭代就越多。我們希望通過 DApps Workshop 來幫助產品經理和開發者能達到這樣盡快生成 MVP 的效果。當然 Workshop 還有自己功能的不斷的迭代和完善,然後和大家一起最終推進 Workshop 本身幫助開發更好的 MVP。
Q3:ArcBlock 已經發布了 Forge SDK、DApps Workshop 兩款開發者產品,請問兩者相互配合為開發者帶來了什麼?
DApps Workshop 的定位主要是為開發者和產品經理開發產品原型(MVP)盡可能的少去寫程式碼來快速迭代的一個工具。
那麼 Forge SDK 是幫助開發者以盡可能少的程式碼,來完成和 Forge 生成的鏈之間的互操作,比如拿鏈上的資訊,發送一個 transaction,去看一個使用者的 account state(帳戶狀態),去拿一個 asset 的具體資訊等等,都可以通過 SDK 來完成。SDK 的定位主要是幫助開發者減輕他們發送 transaction 以及和 Forge 交互的難點。因為如果沒有我們的 Forge SDK,你自己去寫程式碼,去通過 Protobuf (Google 發布的訊息序列化工具,定義了訊息描述語法和訊息編碼格式,並且提供了主流語言的程式碼生成器) 生成一些程式碼,用 gRPC (Google 主要面向行動應用開發並基於 HTTP/2 協定標準而設計的一個高性能、通用的開源 RPC 框架,基於 ProtoBuf 序列化協定開發,且支援眾多開發語言) 和鏈交互。然後去按照一定的規則打包組裝成 transaction,這些都是會耗費很多精力的,而在 SDK 裡面,我們可以通過大概一兩個函數就可以把這些事情都完成。
一般而言,開發者可能在有了一些想法之後,它可以通過 Workshop 來做一個簡單的交互,就是 Workshop 和手機錢包之間的交互,完成一些操作的流程來驗證他的想法是否合理。這個想法驗證過程可能會有若干次迭代,但一旦經過驗證之後,那開發者還是需要通過調用 SDK。來把這個已經驗證過的這個結果,把它程式碼化,把它最終 UI(使用者交互)化,在完成這個 DApp 的核心邏輯以及前端邏輯,最終完成這款 DApp。
Q4:能否簡單介紹一下 Forge 的概念、結構,以及支援的語言?
我們一直強調,我們希望 Forge 成為區塊鏈時代的 Ruby on Rails。我們知道在 Web2.0 的時代,Ruby on Rails 催生了一大堆這個 Web Application(互聯網應用)的興起,因為它足夠簡單、足夠全端。小團隊或者個人就可以很方便的去打造一個足夠複雜的應用程序。我們可以看到今天的區塊鏈開發者能打造的 DApp 還是非常簡單的,大多是賭博性質、遊戲類型的 DApp。所以我們的 Forge 就是希望通過把涉及區塊鏈開發的前端後端等整套東西都囊括進來,然後可以更方便地打造應用。

Forge 的結構是這樣的。我們在在設計之初就考慮到了分層的這個結構,最底下是一個 Consensus Engine(共識引擎)和 Storage Engine(儲存引擎)。Storage Engine 目前還沒有啓用,我們計劃是使用 IPFS(星際檔案系統);Consensus Engine 目前使用的是 Tendermint,未來我們可以把它換成其他或者我們自己的 Consensus(共識機制)。Consensus Engine 之上有一個 ABI(應用區塊鏈交互)層,然後它把底下的 Storage Engine、Consensus Engine,以及上面的 Forge 的 Kernel(內核)區分開來。那 Forge 的 Kernel 或者說 Forge Core 主要提供的功能就是跟下層打交道,然後為 Transaction Protocol(交易協定)提供額外的支援。
Forge Core 對 Transaction Protocol 的支援,主要就是一個 Protocol 的加載、安裝,更新 Forge 節點,然後還有其他輔助性功能。那 Forge Core 往上的話就是 Core Transaction Protocol(核心交易協定),這個概念跟以太坊的智能合約比較類似,但是它的功能會更加強大一些。這些 Core Transaction Protocol 我們支援十幾種,會擴展成一個很大規模的這個 Core Transaction Protocols。那開發者可以使用一種或者幾種的 Core Transaction Protocol 來完成 DApp 核心內容的開發。
Core Transaction Protocol 之上是我們的 Forge SDK,目前支援 Node.js、JavaScript、Python、Elixir、Erlang、Java 等語言,未來還會擴充更多語言支援;近期可能在兩三個月內支援 Golang、C++ 等語言的 SDK。
SDK 再往上是 Forge 的支援工具鏈。例如 Forge Web 能為任何人啟動的 Forge 鏈提供區塊瀏覽器;我們還有 Simulator(模擬器)。開發區塊鏈應用時,如果應用中沒有任何資料,就無從判斷展示方式等各種邏輯是否合理。Forge Simulator 可以協助匯入大量 traffic(流量),讓應用擁有足夠豐富的資料,以便進行更多除錯。
和這些輔助工具並列的,我們還提供了一系列的 Forge Starter Application(Forge 快速入門應用),目前也實現了不同語言的版本,其主要作用就是為開發者提供一個立等可用、開箱即用的這個 Application(應用)。你可以通過 Forge CLI(Forge 命令行工具)去跑一條命令,建立出來一個 repo(程式碼庫),這個 repo 你可以直接把它跑起來。就有了最基本登入、使用者的 Profile(檔案簡介),去 tracking(追蹤),然後 transfer token(轉移通證)等等這些最基本的功能,那使用者只需要再加一些額外的功能,就可以完成一個 DApp 的雛形了。
Q5:Forge 是專門為開發者設計的開發框架,請問 Forge 的關鍵技術優勢是什麼?開發者為什麼選擇 Forge?
Forge 關鍵技術優勢,我認為在於我們提供了全套從底到上的工具鏈,比如開發者需要為自己的 DApp 使用一條自己的鏈,那麼通過 Forge CLI 很方便的去發一條鏈,供他開發使用。如果他開發完成需要把這個鏈部署到全球各個 Data Center(資料中心)裡面的節點,我們的 Forge Deploy(Forge 部署)允許開發者很方便的部署一條完整的鏈。同時,我們還有很多的工具,比如 Forge Web 區塊瀏覽器、Forge Simulator 來打各種各樣的 traffic,有 DApps Workshop 幫助做產品的原型。還有一個尚未發布的測試工具鏈,幫助開發者更好的去測試你的區塊鏈上面的應用。區塊鏈的測試其實是一個老大難的問題,尤其你要考慮到跨鏈的話,更是一個很難解決的測試問題,因為你先得有一個多條鏈的執行環境,然後才談得上去測試。Forge 就作為一個平台,它把這些工具都整合起來,目標就是為開發者提供盡可能全端的服務,讓開發者可以全身心投入到自己業務邏輯的開發,而不需要因為工具鏈的缺失而耽誤這個開發的進程。
開發者為什麼要選擇 Forge?如果我們對標 Ruby on Rails,開發者為什麼選擇它,其實是很類似的問題。回過頭來看 Ruby on Rails 的成功,當時有 J2EE、Java 很多這種的平台,但是這些框架都非常難用,對開發者不夠友好,很多工具沒有整合進來,使得開發者得到處找不同的工具。而 Ruby on Rails 把所有的從資料庫建模到 Template Service(模板服務)、Templating Engine (模板引擎)到 testing(測試),開發版本的 Web Server(網路伺服器)很貼心的整合到一起,讓開發者很好的去開發 Web 應用。我們也有同樣的信念,希望讓開發者擁有全面簡單易用的工具,提高開發的效率。
Q6:Forge 在現今的區塊鏈行業起到什麼樣的作用,能達到什麼樣的效果?在同行業里是屬於第一嗎?
我們目前來看整個 DApp 的生態,90%以上的 DApp 都屬於屬於垃圾 DApp。Forge 希望能改變這個現狀,我們目前能起到的作用就是在 Forge 上面做的 DApp,Forge 給你提供這種能力,讓你的 DApp 能貼近使用者的需求。打個比方,我們內部在開發一些就是 Demo(演示)性質的這個的 DApp,比如 Eventchain,非常簡化版的 Docusign,都是平日人們生活中會遇到的這個應用。
我們把這些應用是做成了去中心化應用 ,做這個的目的就是想要驗證 Forge 的確能提供這樣的能力,能幫助使用者做真正有意義的 DApp。在同行業裡面,裡面是不是屬於第一,不應該由我們來回答。但有些事情的確是目前還沒有人來做。比如說錢包,如果你的私鑰丟了,你的錢包的怎麼樣去 migrate(遷移)。或者說你的私鑰,比如企業的這個政策的要求,要求你每六個月就要 rotate(回轉)一次。這些現有的區塊鏈的專案都沒有去考慮。
還有我剛才說的 testing。其實一個成熟度足夠高的軟體細分領域,測試是非常重要的一環,如果說你的程式碼沒有一個很好的自動測試工具為它保駕護航,那麼這個程式碼品質是很難保證的。我們在做 Forge 的時候其實就感受到了做區塊鏈沒有良好的測試工具這個痛點。你如果要做一條區塊鏈測試的話,你首先要能搭一個足夠完善的 topology(拓撲結構),你起碼得有幾個節點的一條鏈。你不能說一個節點的一條鏈,然後在上面做測試,那這個測試的完備性是不夠的。
最近炒得轟轟烈烈的跨鏈技術,不同的廠商都宣稱自己的解決方案多麼多麼牛逼。但是作為一個開發者,那你如果用這些跨鏈技術的話,可能首先考慮到的是,那我在上面開發的東西怎麼樣能很方便的測試,目前是沒有人能給出來很滿意的答案,總不能做一個開發的工具,就要手工測試一下,最後修改個 bug(漏洞),還得全部手工測試一下,如果沒有這個全自動化測試的話,那這個軟體的品質,我剛才也說了是堪憂的。
Q7:請問 ArcBlock 發布的一系列開發工具怎樣才能吸引開發者?怎麼讓更多的開發者參與進來?有沒有相應方案或者機制?畢竟現在開發的只有合作夥伴,好像還沒有個人開發者在 ABT 平台開發應用。
從開發者的角度來講,我們開發團隊能做的事情是:第一,讓這些開發工具盡可能的使用者體驗要足夠良好,第二就是我們的文件要再磨礪的更加準確,更加淺顯易懂,然後還有提供中文版的文件。從市場的角度來講,我們可能有不同的市場計劃,有一些 Bounty Program(獎勵計劃),這個就不是我能回答的範圍了,未來可以由我們市場部的同事來回答。
Q8:能否簡單介紹一下 DApp 與傳統 App 的差別?
DApps 和傳統 App 最大的差別,就是執行所依賴的資料是去中心化的、人人可讀的,還是封閉只有特定的應用程序才能讀的。舉一個例子,比如像 Docusign 這種文件簽名的工具,比如有個合同發過來,這個人簽名完了之後,這個合同就具備了法律效力,Docusign 顯然是一個傳統的 Web App,那麼所有人建立的合同文本都在到 Docusign 伺服器上有一份,然後所有的簽名也都放在這個 Docusign 那一側,當然使用者也有這個合同的副本。
這樣帶來的問題就是 Docusign 有了太多它本不該擁有的資料。那如果這樣的東西用一個 DApp 來完成,我們可以做一個同樣類似的文件簽名工具。那比如說我發一個合同出來給 BCD 三個人,然後這三個人在這個合同上簽了他們自己的名字,所有簽名收整合功之後,會把這個簽名以及原始文件的哈希上鏈。這樣每個人都有一份所有人簽過名的文件,文件驗真可以到這個鏈上的哈希和簽字來驗證,可以脫離一個強有力的第三方作為背書的情況下來完成整個流程。無論從安全性,還是從隱私的保護上面,後一種方案都是更好的。
另外一個例子,比如說我們在票務網站上買了票,傳統的票務網站你買了票想要退票或轉讓,能不能幹。完全取決於這個票務網站 App 的開發者,他開發的這個功能允許你乾就可以,他不允許就不可以,那就完全是他說了算。
假設開發一個去中心化的票務系統,我購買了一張票,這個票的數字資產的所有者就是我,我很容易的就在鏈上可以和別人交易這個數字資產,無論是通過直接發送,手機錢包發送 transaction 的方式進行交易,還是開發一個簡單的 DApp 來做交易。總之資料是屬於大家的,資料本身是公開透明的,那我們很容易去完成類似的交易,而不需要受限於原始的開發者給我們設定的條條框框。
Q9:傳統 App 剛開始從專業化到模塊化開發,請問 DApp 和傳統 App 在開發上會一樣簡單嗎?
互聯網從上世紀九十年代初開始,逐步滲入到人們的生活,到二十一世紀初期 Web 2.0 開始大行其道中間也花了將近 15 到 20 年的時間。所以互聯網達到今天這個高度,開發工具達到今天的這個高度是有它發展的歷程,就是靠一代又一代人不斷努力的結果。儘管現在 DApp 開發還處在非常早期的階段,我相信區塊鏈也會完成這個歷程,未來的 DApp 的開發會跟傳統的 App 開發一樣簡單。
我們處在這個歷史的進程中,能做的就是盡可能推進這個時代的發展,然後用我們對區塊鏈的理解、對 DApp 的理解、對工具的理解、對整個框架的理解,幫助開發者能夠更快更好的開發 DApps。我們的目標就是讓 DApps 開發者和傳統 App 在開發上盡可能的保持一致的體驗,盡可能的保持足夠的簡單。
Q 10:請問 ArcBlock 自己是否正在開發 DApp?可否介紹一下,預期什麼時候發布?第一個基於 ArcBlock 平台開發的 DApp 會是哪個呢?
是的,我們自己在開發一系列的 App,絕大多數應用都是 Demo 性質的。有一些 DApp 是為了滿足我們自己的需要,比如說我們目前的這個 Technical Learning Series(技術系列培訓),就可以通過一個 DApp 來完成,這個就是使用者這個註冊聽某一門課程,上這個課,最後拿到一個 Certificate(證書),這樣的一個東西。我們有不少這樣的應用正在開發過程中。具體什麼時候發布,那就由市場和產品團隊來決定。
Q11:請問去中心化社區應用什麼時候發布?
這個應用我們現在還在設計和開發當中,那具體的時間表也是請大家參考我們官網上發布的時間表。或者咨詢產品和市場的團隊。
Q12:請問 ArcBlock 下半年計劃是什麼?主要是以 DApp 為主,還是繼續推出開發工具,或者是生態落地應用?
下半年有幾件比較重要的事情,第一個是我們資產鏈的換幣,第二個就是跨鏈介面的支援。目前這部分已經基本上做完了,還有它周邊的一些方便開發者開發的這個工具,還需要進一步去夯實。DApp 開發工具方面,我們會推出測試框架以及在一個合適的時間點,把我們的部署工具打包發布出來。
Forge 本身,我們還會繼續以每週有一個 milestone(每個 milestone 包含一到幾個 release)的節奏來不斷的發布。Forge Framework (框架)核心是在更豐富的 Transaction Protocol 上,圍繞著 Framework 的這些開發工具,還會繼續完善不同語言的 SDK,完善不同語言的 Starter Project,圍繞著目前我們提供的各種各樣的新功能,提供更多對使用者友好的工具。
對於我們來說,建構 Forge Framework 生態圈,建構 Forge Framework 上面整條完整的工具鏈,是我們工作一個很重要的部分。我們也希望越來越多的開發者能參與到其中,能使用 Forge Framework、DApps Workshop、SDK 等工具去開發他們自己的無論是 MVP,還是解決某種實際需要的 DApp,在這個過程中,可能會遇到很多的問題,歡迎和我們去交流溝通,我們也盡可能會為大家解決這些問題,有些問題就直接修改在 Forge Framework 或工具鏈裡面,成為 feature(功能)的一部分。那今天我的這個介紹答疑就到此為止,謝謝大家。