arcblock白皮書拙譯

地球沒有花發表於2018-02-07
和英文版對照著看,英文版在此:http://download.csdn.net/download/q1177660557/10243551

arcblock 提及最多的就是社群和使用者體驗

旨在①加速區塊鏈在各行各業的應用②快速區塊鏈開發

當今區塊鏈的問題:
效能差勁(比特幣7筆每秒,以太坊也就多了幾筆)、使用者不友好(目前所有的方式都是針對專業人士的)、極大的開發cost(難上手、開發慢、收手續費,輕鬆上手是區塊鏈廣泛傳播的重要因素)、平臺侷限性(platform lock-in,開發人員開發前需要決定支援哪個區塊鏈,然後再實現對應區塊鏈的程式碼,很難對dapp進行移植。開發人員不應該被侷限在某一個特定區塊鏈技術,正如你的app不能只適用於桌面,或者不能只適用於winodws,也要支援其他平臺)、平庸沒特點(功能太少,社群也沒有鼓勵機制。區塊鏈的獎勵機制並沒不涉及對開發人員的激勵)

arcblock 平臺:
ab有著全新的設計來進行解決上述問題。首先不同於先輩們,ab是一個平臺服務,並非一個獨立的軟體包或者一堆api介面。ab是整合雲端計算和區塊鏈的解決方案。
ab是一個激勵驅動的市場(incentive-driven marketplace),這個市場是可重用服務、元件和應用程式的世界。“礦工”在ab中不僅提供計算機資源,還會提供可用元件、新服務,也會時刻準備部署應用程式。
貢獻資源或服務的人都會有代幣獎勵,以此來構建一個良性的、自增長、自進化社群文化。而且ab總是強調ab出自社群,源自社群的力量。

ab的OCAP(open chain access protocol)協議的功能是連線多個不同區塊鏈。開發者還需要在不同的區塊鏈中不停地評估不停的切換,隨著區塊鏈的發展,OCAP都可以解決這些問題。OCAP消除了平臺侷限性問題,且支援應用程式在多個區塊鏈上執行,極大的提高的開發人員和使用者的體驗。

blocklet是另一個開創性的元件,吸收了當下流行的微服務架構和無服務計算技術。blocklet是一個高階的應用程式協議,所有的平臺上所有的語言都可以實現。blocklet可以撬動全部的原生平臺的能力來提供同樣水平的效能,替代在低效的虛機上執行。
blocklet不僅僅是訪問區塊鏈,它可以連線所有現有的資料來源,可以進行鏈上和鏈下計算。


ab的優勢:
建立新的代幣經濟
ab所有的服務都是代幣經濟驅動的。ab是一個由激勵驅動的經濟體系,它鼓勵區塊鏈社群合作共建一個更好的生態系統,而非僅僅是基礎的服務平臺。
極致的體驗
ab的搭建是以使用者體驗為中心的自頂向下的策略。相比之下,很多現存的方案都把注意力放在了區塊鏈技術本身,並以犧牲使用者體驗為代價。ab為應用程式的開發提供了實時響應式的體驗。使用者只需從瀏覽器或者下載移動app即可。
ab同樣極大的提高的開發者得體驗。無需再考慮底層的區塊鏈協議。有了ab區塊鏈介面卡,工程師甚至不用在本地區塊鏈節點上進行應用程式的開發和測試。
雲端構建
ab設計之初就是要執行在雲端的,當然也可以在單個計算機上進行開發和測試。
這個設計原則使得ab從底層上區別於其他區塊鏈平臺。ab中,每個節點可以是“邏輯節點”,由一個或多個虛擬機器組成,或者一組提供雲服務的伺服器組成的計算環境。這個方法著實向前邁了一大步,加快了區塊鏈的部署的同時也將應用程式與下一層抽離。
構建於開放的標準
ab構建於開放的標準之上。ab儘可能在不重複造輪子的基礎上滿足開發者的需求。除了開源ab的核心元件,ab還會向社群貢獻其他區塊鏈技術。

ab架構
ab的目標是構建穩定的可擴充套件的易使用的平臺,這個平臺的功能是構建和部署dapp。
設計原則
基於以下幾個核心原則:
-使用者體驗是第一位
-效能
-基於開放標準的系統構建
-基於激勵驅動的經濟系統
系統架構
ab為主流區塊鏈應用程式發明了一系列革命性技術,為的就是讓大眾更方面的使用。

<此處有圖>

開放鏈訪問協議(open chain access protocol)
OCAP為訪問底層區塊鏈提供一個抽象層,就像ODBC或者JDBC面向一堆資料庫的功能一樣。OCAP支援你的應用程式工作在不同的區塊鏈上,無需再為了不同的區塊鏈平臺而改動業務邏輯。

基石(Blocklet)
基石是一個無服務的計算架構元件,用於執行多種型別的應用程式。基石可以寫智慧合約、可以寫oracle、可以寫資源、可以資產處理、也可以進行鏈下業務邏輯處理。基石通過OCAP與底層的區塊鏈進行通訊,也可以內嵌基於Algorand的共識演算法(http://colabug.com/1922498.html)。
所有人可以使用基石構建服務和元件,並且在激勵機制下將其貢獻給社群。當元件被他人使用的時候,元件貢獻者會收到代幣獎勵。

基石元件(Blocklet Components)
基石元件是預建立的基石,相當於是基石+一些預置的功能或服務,比如代幣服務、使用者識別系統。基石元件都是高度可用且定製的。
基石元件可以快速搭建並執行你的應用程式,能更快的開發應用程式。基石元件提供的服務包括:使用者識別、代幣的使用、錢包、訊息、通知服務等。開箱即用或者自由組合都是ok的。
基石元件可以自己開發,也可以使用社群中現有的。可以去arcblock marketplace app去查詢。

去中心化的釋出訂閱閘道器(decentralized pub/sub gateway)
基石支援分散式訊息系統,像Api閘道器一樣支援訊息的釋出和訂閱。ab的閘道器使用的是分散式的設計和安全通訊通道。你的應用程式可以執行在瀏覽器,也可以執行在移動端,給使用者實時響應式體驗。
閘道器預設支援多種不同的網路協議,比如websocket、ddp、https和mqtt。高階開發者可以用新的網路協議擴充套件閘道器以滿足自己的需求。

市場和代幣經濟(marketplace and token economy)
ab有一個完全可訂製化代幣經濟管理者(器)。ab甚至可以建立繼承了ab所有功能的獨特代幣。
ab市場是一個本地的應用程式,為的就是使社群貢獻和交易可重用的元件。

雲節點(cloud nodes)
ab是第一個視雲服務為節點的平臺,ab擁有一個更高層的抽象,保證了效能和安全性。
儘管ab更願使用雲節點,但你也可以在傳統的節點上執行ab。一般,進行測試和開發的時候,開發者更願意在本地執行。

使用雲節點並非是向中心化和不安全的妥協,事實上,雲節點是在下一層保證了去中心化和安全保障。

雲節點的安全由雲提供商來保障,大多數情況下,雲提供商比個人能提供更安全可靠,比家庭之間或礦場間的p2p更安全和可靠。

核心元件(Core Components)
下面講述我們的核心元件和演算法。
開放鏈訪問協議(open chain access protocol)
ab的OCAP支援你的應用程式適配多種多樣的區塊鏈協議,包括比特幣、以太坊、超級賬本啥的。
開始我們會閉源開發,等時間成熟我們會開源的。

<此處有圖>

OCAP層(open chain access protocol layer)
OCAP定義了些高階的、通用的api,使得可以開放連線,訪問其他的區塊鏈協議。該層是由鏈介面卡(chain adapter)在下面提供支援,每個鏈介面卡對應了一種特定的區塊鏈協議,比如比特幣、以太坊啥的。
OCAP層包含了三級別api:
第一級別:普通鏈api。該級別的api組提供了OCAA(open chain access apis)的基礎。
所有的鏈介面卡必須支援這個級別所有的api。
第二級別:普通鏈資料api。該級別的api組支援對區塊鏈資料的基本的訪問,將底層的區塊鏈按有限狀態機來對待。
鏈介面卡必須支援該級別所有的api,不過,也可以實現一個不同的功能組。
第三級別:原生鏈api。該級別的api組暴露了底層區塊鏈協議的原生功能。鏈介面卡是否支援該接別的api組是可選的,反正你要是能利用起來的話肯定是更好唄。

鏈介面卡(chain adapters)
OCAL使得ab支援多種區塊鏈協議。應用程式開發者可以從多個不同的區塊鏈、節點型別和部署型別中自由選擇。這些功能的使然都歸功於鏈介面卡。

鏈介面卡像一個裝置驅動一樣,將底層不同的區塊鏈協議都轉換成統一的api。有些鏈介面卡的實現需要你包含鏈上和鏈下的實現。基於OCAL已經實現的的api組,鏈介面卡會被歸為上述三個級別中之一。

ab計劃首先實現比特幣、以太坊和超級賬本的鏈介面卡,然後開原始碼,大家可以按需自定義鏈介面卡。ab也會

鏈介面卡市場(chain adapter marketplace)
就是鏈介面卡的市場,大家可以貢獻,貢獻者能得到使用者的獎勵。

視區塊鏈為服務(relationship with blockchain as a service)
過去一年,好多雲提供商領頭者提供一種新的平臺服務叫做baas。bass給使用者提供一個私有鏈或公開鏈,通常已經優化部署或節點型別。
IBM是最早的先行者,提供了超級賬本的服務。ms、azure、amazon都提供。
現存的baas都可以很好的相容ab。他們都簡化了針對普通使用者的部署,ab簡化了開發人員對區塊鏈開發的環境搭建和部署。
第一階段我們想把ab跟baas(比如aws)整合,這樣一來使用者就更容易進行ab開發了。

設計原則與靈感(design principles and inspiration)
為了設計OCAP,我們調查了很多現有的各種方案、跟很多開發人員溝通、從計算機和資料庫的發展史裡借鑑。
OCAP的結構的靈感就來源於資料庫中的開放連線設計(open connectivity)

回看資料庫系統和應用程式的開發跟區塊鏈有很多相似的地方,區塊鏈在一個系統中的地位就相當於資料庫的地位。可以很公平地認為區塊鏈扮演著分散式的資料庫的角色。大多區塊鏈本身建立在資料庫的基礎之上,包括比特幣和以太坊。

基石(Blocklet)
基石是ab的核心。除了是應用程式協議,更是組成ab的一個軟體架構。ab平臺構建在一系列的基石之上。
OCAP允許基石與底層的區塊鏈通訊。分散式釋出訂閱閘道器允許基石與使用者瀏覽器和移動端app中的客戶端程式碼進行通訊。
總之,基石是整個系統的最核心的元件。

<此處有圖>

微服務架構(micro-service architecture)
微服務架構與區塊鏈應用程式是完美的匹配。作為SOA的一個變種,微服務架構將應用程式組織成鬆耦合的服務。每個服務都是細粒度的且對不嚴重依賴協議。將應用程式解構成多個小服務有助於功能模組化,同時使得應用程式更容易被理解、開發和測試。

ab正是設計成通過基石技術來克服區塊鏈固有的侷限的事件驅動的微服務。基石通過OACP與底層的區塊鏈進行通訊,使得在安全的訪問外部資料的同時保證資料的完整性。

無服務計算(serverless computing)
無服務計算是一個雲端計算執行模型,在該模型下雲提供商動態的分配著機器資源。大多無服務提供商提供計算執行時或者faas(function as a service)平臺,只執行應用程式的邏輯而不儲存應用程式的資料。
無服務計算模型跟區塊鏈很合拍,大多數基石可以實現成一個無服務的程式。通過aws、azure等來提供無服務執行環境。

需要注意的是微服務架構和無服務涉及不同級別的抽象。可以利用無服務計算實現微服務完美嵌入微服務架構中,開發者也可以用無服務計算實現其他目的,並不總是非得用無服務計算來進行微服務的實現。

基石型別(blocklet types)
基石天生有彈性,可以用於開發各種各樣的應用程式。這部分描述一些常用的基石型別。

鏈下邏輯(off-chain  logic)
由於基石的微服務原生性,它除了可以訪問區塊鏈還可以訪問資料來源。例如,基石可以連線資料庫、外部的restful api等其他資料來源。基石可以用於開發各種應用邏輯,即使該邏輯跟區塊鏈沒關係。
現實生活中,去中心化應用程式總是離鏈執行一些邏輯元件。基石提供一整套應用開發方案,所以工程師不必再用不同的框架來對付應用程式的不同的部分。

鏈下和鏈上邏輯(off-chain and on-chain logic)
很多情況下,應用程式業務邏輯既要處理鏈上的也要處理鏈下的,而且需要連線對應的資料。例如,鏈上程式碼不能訪問外部資料和事件,比如時間和市場。呼叫鏈上智慧合約或區塊鏈外部的程式碼或資料會打破信用的高牆,且降低交易可信度。這些情況下,鏈下基石扮演著鏈上和鏈下邏輯的橋樑,將所有的業務邏輯粘合起來。

資產和資源處理(assets and resource handling)
應用程式通常需要處理資源和資產,例如照片、視訊、音訊和文件。由於區塊鏈並不是為處理大量資料而設計的,典型的區塊鏈應用程式會用鏈下方案來處理這些資源和資產。傳統的方法是利用aws s3,或者更去中心化的方案IPFS。

無論你採用什麼方法,基石都有能力去跟你資源和資產的儲存系統進行通訊。有的時候,資產需要被對映在其鏈上代幣或其他標示,或者通過區塊鏈上的記錄來驗證。而基石正是這些邏輯的完美的家。

智慧合約(smart contract)
基石通過OCAP安全地與鏈上程式碼進行通訊,通訊的同時可以使你在實現高效能的智慧合約,同時還能維持信任高牆驗證交易的可信性。
鏈上和鏈下的要執行的邏輯量完全取決於工程師。除了一個極端,工程師可以簡單地視區塊鏈為狀態機,而把大部分邏輯放到基石中。另一個極端,工程師想開發一個複雜的、純鏈上的合約,在這類合約上基石僅僅像stub一樣,觸發和監控鏈上執行的活動。

神諭(Oracle)
在基石的設計中,神諭是智慧合約裡的一個型別,它用外部資料來源作為事件觸發條件。基石中實現神諭很簡單。
基於基石的設計會強迫工程師在設計和開發階段去考慮鏈上邏輯和鏈下邏輯的分離。這樣在不妥協安全和信用的情況下,提高這些階段的效率。

基石的實現(blocklet implementation)
在ab開發的第一個階段,基石的開發和測試都會基於aws。
由於基石本身是一個應用協議和架構,所以可以用不同的語言和架構來實現。不過第一版應該是nodejs和go。

基石元件(blocklet component)
之前說過了。

去中心化釋出訂閱api閘道器(decentralized pub/sub api gateway)
基石有一個分散式訊息系統支援釋出和訂閱功能,像api閘道器一樣。ab的閘道器使用的是去中心化的設計和安全通訊通道。應用程式可以在瀏覽器和移動端app中執行,快速響應使用者。

<此處有圖>

api 閘道器(api gateway)
api閘道器是微服務架構中重要的一環。它為複雜的子系統提供api介面,為使用者遮蔽了地層複雜的實現。在ab中所有的功能都是基於基石的,基石除了直接與客戶端通訊還會與api閘道器通訊。

閘道器支援多種網路協議。

<此處有圖>

釋出和訂閱(pub/sub)
釋出和訂閱是訊息流通的一個方式,釋出者只管按類釋出訊息不管誰接收,如果有訂閱者的話,只會接收到它訂閱的訊息,其他的訊息一概無視,也不管誰釋出的。

釋出和訂閱模式是訊息佇列機制的子集,通常是一個單獨的面向訊息的中介軟體系統。大多訊息系統都支援釋出/訂閱和訊息佇列。這種模式使得網路伸縮性增強,且拓撲結構更好整。

去中心化和安全(decentralized and secure)
我們使用了完全的去中心化設計來實現和簡化雲服務。ab的api閘道器可以拆箱即用,做到了0配置。同樣也支援基於域名的定址、叢集和更安全。

<此處有圖>

去中心化的媒體和資產(decentralized media and assets)
基石可以通過其他系統來處理媒體資源,也可以幫你建立鏈下資料,或者用鏈上資料驗證鏈下資料。當前,大多數去中心化的應用程式都採用鏈下邏輯來處理資料。比如中心化的解決方案aws s3或者azure,或者去中心化方案ipfs或swarm。
相比造輪子,我們更鼓勵應用開發者直接採用最合適的現有方法來處理媒體資產。我們預計大部分應用程式開發者都會使用中心化方法,因為是最簡單且最成熟的。此外,在大多數應用程式中,媒體和資源和區塊鏈並沒什麼必要的聯絡,但也不乏有開發者會採用ipfs或混合方法。ab允許你決定自己最合適的方法。

目前ab採用中心化的方案來處理媒體資源,未來會採用去中心化方案。

客戶端庫和框架(client library/framework)
ab為客戶端應用程式的開發提供庫和框架。這些庫包括支援web、ios和android平臺。使用Electron框架,web版可以很輕鬆的打包成桌面應用,給windows和mac使用。

對於應用程式開發而言,這是一個重要的優勢。工程師們可以把更多的經精力放到客戶端和使用者體驗。ab使得開發dapp和傳統的方式一樣簡單。ab的設計支援開發者選用喜歡的框架和工具,這樣他們就可以利用社群的資源和支援。
<此處有圖>

algorand共識演算法(algorand)
ab是第一個在生產中採用algorand演算法的區塊鏈。
algorand是由micali發明的,2012年圖靈獎的獲得者,micali是密碼學和區塊鏈技術的先鋒。當micali看到比特幣的pow的時候,認為應該有所提高,algorand就是提高的方法。
<此處有圖>

algorand隨機選取一小組的節點,用來產生下一個區塊,然後按區塊交易的百分比來獲得獎勵。這種方式一定不會被黑客所改寫。小組節點的選取是由hash演算法來進行的,所以不會被人為選取。micali建議採用偽隨機數生成器,該生成器是預先指定的,並且你想用多久用多久,直到選定了委員們。小組通過重訂的拜占庭協議來決定下一個塊的產生,小組的領導是隨機選取的。

ab在很多地方使用algorand演算法和它的變種。例如,我們使用algorand演算法來選擇基石從哪個智慧合約開始執行,同樣用於給原生代幣提供動力的高效能區塊鏈。


代幣經濟和服務(the token economy and the service)
ab之所以獨特不光因為api和庫,還因為擁有豐富特性的魯棒平臺。此外,服務都是執行在自由的原生代幣系統之上,該系統由最新的區塊鏈技術驅動的。

arcblock代幣(ABT,the arcblock token)
abt是ab平臺原生的。為了支撐高效能的交易,我們建立了一個優化過的區塊鏈,致力於服務ab自己的代幣系統和公共賬簿(Public ledger)。設計的目標是要實現每秒交易數10萬多,對於大部分應用程式來說已經很足夠了。

arc是被設計用來在不同的場景下使用的通用代幣。在ab中,arc基本的價值是支付ab系統的使用。像雲端計算服務,arc用來支付服務的使用。
<此處有圖>

比特幣和以太坊使用者需要對每次的交易交付手續費,而ab是讓應用程式的提供者(開發者吧)為使用者交納交易費用,這種方式極大的提高了使用者體驗。ab要求開發者們鎖定一定量的arc代幣,以防一些緊急服務任務不時之需。

ab代幣和erc20代幣兌換是1:1的,這簡化了代幣兌換,也允許開發者在以太坊社群中進行開發。應用程式開發者可以利用建立在erc20代幣上的生態系統的優勢來進行高效能和全功能的代幣服務。

礦工們(miners)
ab允許礦工執行ab平臺服務,加入到所有的服務網路中。礦工在ab社群中的角色跟比特幣和以太坊是很不一樣的。

資源礦工(resource miner)
資源礦工貢獻自己的計算資源給ab系統。可以是作為雲端計算的一個節點,也可以是自己作為主機的計算資源。

在ab的設計中,礦工的資源可以自用可以分享,決定權在礦工自個兒,隨時可以切換。

元件礦工(component miner)
元件礦工貢獻軟體元件給ab系統,比如鏈介面卡、基石(blocklet)元件或者隨時準備部署的應用程式。元件可能是打包好的程式碼,可以被其他的應用程式重用和部署;也可能是一組僅僅通過基石介面進行暴露的服務,比如基於深度學習的影象識別的服務可能在哪兒執行著,但卻以基石包一層來提供服務,這樣其他應用程式就可以呼叫這個服務。

智慧合約規定了當一個元件由多個礦工來共同完成時勞務費該怎麼分配。

ab市場(the arcblock marketplace)
ab市場是執行在ab平臺上的一個dapp,該dapp像每個市場一樣提供列表、搜尋、評估、使用和可重用元件排名。
市場也在維護著元件質量和其開發者的名聲的反饋,還有其它資訊,這些資訊幫助使用者來評估可重用元件。市場裡所有的資訊都在公共賬簿(Public ledger),該賬簿由ab的區塊鏈技術來提供技術支援,以保證公開透明可信。

代幣基礎服務(token foundation service)
代幣基礎服務是由基石元件組成的。
ab代幣全部是由基石來完成的,代幣基礎服務也是由基石power的,而且代幣經濟服務(token economy services)是由基石構建快(blocklet building block)組成的。應用程式開發者可以使用基石很輕鬆地處理由代幣觸發的事件和搞定複雜的業務邏輯。ab中的分散式賬簿可以確保你的代幣的安全、高效且可靠。

像其他基石元件,為代幣基礎服務提供功能的基石也可以升級,也可以通過區塊鏈社群進行擴充套件。

應用程式代幣(application token)
在ab中,開發者可以基於原生代幣進行代幣的個性化定製,前提是基於原聲代幣的所有特性。
ab可以很容易地建立個性化經濟。代幣不僅是加密數字化貨幣,他們可以代表很多東西,從使用者身份、證書和文件到現實生活實體,ab可以是你在你的應用程式中代幣(動詞)你所有。



































































相關文章