合約大陸:高擴容應用鏈技術架構

買賣虛擬貨幣
合約大陸搭建一個能夠支援高迸發交易的區塊鏈框架。我們可以在這樣的框架來上來部署一些針對不同應用的應用項區塊鏈,以此替代在公鏈網路上搭建應用程式的解決方案。應用項區塊鏈應該具有與公鏈系統相當的安全性和去中心化屬性,同時由於網路的算力能夠集中處理單個應用程式,而使資料傳輸速度和使用者體驗得到大幅提高。1. 系統概覽

為了能夠搭建一個可以支援海量交易的高效能公共賬本,我們需要同時解決去中心化,可擴充套件性和可互動性三個問題。所以合約大陸決定從頭改造整個網路架構,這其中涵蓋了從底層的區塊鏈層到跨鏈通訊層,一直到特定應用程式的應用邏輯層。每一層設計都是模組化定製,且邏輯最簡化。

1.1 鏈層

與現有的公共區塊鏈不同的是,合約大陸在設計區塊鏈層時就把支援高迸發交易作為首要目標。它不會繼承其他區塊鏈的全部功能,並把之前在區塊鏈層實現的應用邏輯嫁接到應用程式層實現。與 EOS 或以太坊或其他開放式公鏈相比,合約大陸在初始設定時,會嚴格控制區塊鏈上邏輯執行的權力,同時也會限制智慧合約的數量,確保網路網路算力可以最大限度服務於某個應用程式。這是一種有意識的設計策略,旨在減少不同應用程式在同一個公共區塊鏈系統中稀釋交易吞吐量,從而避免網路擁堵等問題。鑑於每個層在設計上是模組化的,不同的應用程式邏輯可以分別部署在不同的應用鏈上,且鏈鏈在之間可自由相互通訊,最終從而實現平行擴充套件。

1.2 跨鏈橋層

跨鏈橋為各應用鏈提供了在多鏈生態系統中必備的跨鏈通訊能力。它也是整個框架的一個關鍵組成部分,因為它不僅允許各個應用鏈可以相互通訊,還使它們能夠與其他公鏈網路進行通訊。就像區塊鏈層架構類似,跨鏈橋也有獨立的共識機制和激勵機制,在確保安全性和去中心化屬性的同時服務跨鏈交易。

1.3 應用層

如上文提到的,應用程式層的主要包括為特定應用服務的程式邏輯,可以透過任何 EVM相容的語言(如 Solidity )進行編寫。由於整個系統的模組化,應用程式的邏輯不再局限於某個特定的行業,透過改編該模組邏輯,即可應用於諸如交易所,支付,金融和遊戲等其他應用場景。

系統參與者

合約大陸系統的運轉和維護主要依靠三個基本角色:主鏈驗證人,橋驗證人和委託人。

1. 主鏈驗證人

主鏈驗證人是整個系統的中最重要的角色,他們的主要職責是確認主鏈上新區塊的生成。主鏈驗證人的基本資格取決於是否在智慧合約記憶體入足夠的數字貨幣債券,同時我們允許系統內的其它通證持有人將通證存入某個或某幾個驗證人智慧合約內,委託驗證人代理行使權力,因此驗證人的抵押通證不一定全部歸驗證人所有。

驗證人要維護區塊鏈網路的正常執行,必須在一個穩定且高頻寬的網路環境下執行主鏈客戶端。驗證人的具體任務包括:維護過程包括資料接收,交易驗證和釋出候選塊。除此之外,驗證人還負責批准新的跨鏈橋整合。合約大陸核心開發團隊雖然負責與其它公鏈的跨鏈協議的評估與開發,但是最終新橋是否能加入生態系統而是由主鏈驗證人投票表決決定。

在一個健康積極的生態系統中,驗證人的行為準則必須要遵守系統內的共識準則,未履行其共識義務的驗證人也應當受到懲罰。驗證人的一般違規行為將導致他們失去部分擔保債券。而惡意違規行為,例如雙重簽名或密謀製造無效區塊,給系統帶來嚴重損失的,將會導致整個抵押債券的損失。不管是對於一般違規還是惡意違規,被沒收的抵押債券大部分將作為獎勵獎與舉報人,和其它誠實的驗證人,剩餘的部分將會在智慧合約內燒掉。

在某種意義上,驗證人類似於當前 PoW 共識下的區塊鏈系統內的礦工。

2. 橋驗證人

橋驗證人與主鏈驗證人扮演著類似的角色,而維護的物件由主鏈變成了橋。每個鏈上的跨鏈橋擁有獨立的共識機制和安全機制,這個獨立生態系統的維護者就是橋驗證人。與主鏈驗證人類似,每個橋驗證人必須執行一個橋客戶端,並負責相對應的節點作為兩個不同區塊鏈間的資訊中繼,跨鏈傳導訊息。未能履行職責的橋驗證人員將同樣受到沒收抵押債卷的處罰。

3. 委託人

委託人是通證持有人,也是主鏈驗證人或橋驗證人履行職責的擔保方。他們在系統所內發揮的作用是將個人的數字資產提供給所信任的驗證人做信用背書,作為他們所承擔的資本風險的補償,委託人可分享驗證人收取交易費用的收益,而委託人收益的多少則與委託人出資成正比。

System Design 系統設計

整個區塊鏈系統可以大致分為四個部分:鏈作業系統,共識機制,跨鏈交易協議和應用程式協議。

1. 鏈的運轉原理

應用項區塊鏈系統結構是與以太坊系統有很多相似點。一方面因為它們的系統都是基於狀態的,且狀態可以透過對映地址找到賬戶資訊。另一方面兩種系統透過記錄賬戶餘額(以防止重置)和交易計數器來記錄賬本。兩個系統最大的不同之處在於應用鏈的交易不能在已部署的智慧合約中發生。為了使應用鏈的邏輯最簡化,所以不會保留除服務應用程式邏輯之外的其他功能,它不支援公共部署智慧合約。

應用鏈的虛擬機器將基於 EVM,在保持其圖靈完整性的前提下,透過一些修改使邏輯最簡化且足以支援應用層邏輯。在應用鏈內可能會有許多內建合同(類似於以太坊地址 1-4的 n 合同),合同內會註明平臺規則和參與者職責,其中包括共識合同,驗證人合同和許可合同等。

可供公眾使用的功能將消耗固定數量的平臺計價通證 (Gas),在所有情況下都將收取固定費用。雖然從理性角度考慮,應用中的通證消耗應該取決於功能的不同收取不同 Gas,但在這裡為了避免區塊鏈層和應用層之間的邏輯耦合,所以將應用層中交易 Gas 設計為恆定值。

2. 共識機制

合約大陸是透過現代非同步拜占庭容錯(BFT)演算法而產生的一系列的區塊的底層共識。該演算法是受到 Parity Aura 的啟發,Parity 的權威證明共識(PoA)的具體實現 。 PoA 是一種新的 BFT 系列演算法,可在一組可靠的驗證人中實現容錯。對於聯盟鏈而言,這樣的共識機制是足夠滿足各方面的需求,但應用鏈與聯盟鏈不同,我們希望在一個完全開放和公開的環境下,無需任何信任的中介機構或組織維護整個生態系統。因此,我們需要一個選拔驗證人的機制,並用合理的獎勵激勵他們誠實履行驗證人職責。根據以上提到的要求,合約大陸將涉及一套基於 PoS 的驗證人選擇標準。

3. 籤封機理

(在這個圖示中,0到 3 分別代表個驗證人 0,1,2 和 3,且該步驟的出塊人是驗證人 0)

首先,我們假設網路是同步的,並且所有驗證人的節點可以在同一 UNIX 時間 t 內同步。

每個步驟的索引 s 是由每個驗證人計算出的 s(s = t /每步時間)決定,其中每步時間是一個固定的常數時間。步驟 s 的出塊者的選舉程式碼為(Ι= s mod Ns 除以 N 的餘數)標識的驗證人。

驗證人在本地的主要職責是維護兩個佇列,一個是交易列 Qtxn,另一個是待處理區塊列Qb。每個已釋出的交易都由驗證人收集入交易列 Qtxn。對於每個步驟,出塊者 Ι 將所有交易列 Qxn 中的所有交易放入區塊 b 中,並將其廣播給其他驗證人(區塊提議的過程請參考圖一)。然後每個驗證人將自己接收到的區塊發開給其他驗證人(Round BΙock Acceptance)。如果最後所有驗證人都接收到相同的區塊 b,則驗證人將把區塊 b 排入區塊列 Qb 中。在區塊 b 傳播的任何一個階段,若有任何一個驗證人收到的區塊不是由當前出塊者發出,該區塊應被拒絕接收。出塊者不管在什麼時候都應該發開一個區塊,如果網路內無交易遞交,出塊者必鬚髮開一個空區塊。如果驗證人在區塊廣播期間對被廣播區塊有所異議,可觸發投票環節以確定當前的出塊者是否有作惡,決定是否將出塊者的角色剝奪。驗證人可以對當前出塊者的以下三種惡意行為進行投票:(i)它沒有發出任何區塊,(ii)它提出了比預期更多的區塊,或者(iii)它已經向不同的驗證人發出了不同的區塊。投票環節是透過智慧合約實現的,當票數過半時領導者 濿 將從合格驗證人的名單中被剔除。當發生這種情況時,區塊列 Qb 中由出塊者 Ι 透過的所有區塊將從序列中被刪除。請注意,出塊者行為不當可能是由系統故障(例如,網路非同步,軟體崩潰)或拜占庭式故障引起的(例如,出塊者已經被之前的惡意行為所影響)。

4. 最終性

假設網路是同步的,且訊息傳播的時間長為 t,讓 SIG_SET(B)等於區塊集 B 內所有區塊中驗證人的簽名集:

如果存在以一條以 C [K ..]結尾的有效鏈 C,其中 SIG_SET(C [K ..])的絕對值大於 n / 2,則 C [K]及其所有之前的區塊將被最終確認。

最終區塊的確認原則是最公平公正的多數投票原則。在此設定中,2f +1≤n,因此故障節點無法自行生成一個區塊。

5. 驗證人的選舉

候選驗證人透過將通證存入智慧合約作為抵押來參加驗證人的選舉。 每一個候選驗證人必須存入至少為 S 價值的通證。存入抵押合約超過 S 的使用者都可以成為繫結驗證人。鑑於總供應量為 T 個通證,理論上最在任意給定時間最多有 N 驗證人,即 N <= T / S. 而實際情況中,我們預計至少有總量 T 的 20%通證將在流動性市場中自由運轉,這就意味著最多隻有 80%的 T 將被存入合約作為驗證人的抵押。

抵押合同管理驗證人名單。它都包括:

• 當前驗證人賬戶
• 最近繫結的候選驗證人賬戶,且將會在下個區塊成為驗證人
• 已將抵押通證存入委託給驗證人賬戶
• 每個驗證人的抵押通證數量
• 一般和作惡行為證明和懲罰邏輯

這個合約還可以處理以下情況:它允許使用者遞交成為繫結驗證人的申請(合同內會表明要求),並將權力委託給另一個指定代理人;對於已經成為繫結代理人的使用者,它同樣可以接受已繫結使用者的廿出申請;合約還可驗證驗證人的不當行為證明並執行相應的懲罰。

6. 常見攻擊

在這一部分,我們將介紹 PoS 共識下的區塊鏈系統面臨的一些常見攻擊及其解決方法。

6.1 無利害關係

無利害關係是形容驗證人透過投票給多個存在邏輯矛盾的區塊以有效地打破安全防護,且攻擊成本較低。

(圖中可以看出,在 PoS 系統中,同時投票給兩個相互矛盾的鏈可獲得最大的利益)

“單純“的 PoS 共識很容易受到這些攻擊。對於驗證人來說一直保持(投票)區塊鏈系統單一性缺乏經濟鼓勵,收入上遠不如給幾跟鏈相互衝突的區塊鏈系統投票回報高,當一條鏈分叉之後,礦工可以獲得更多的新區塊獎勵。在 PoW 共識下,上面提到的多鏈挖礦的“懲罰”是礦工必須在物理上將不同鏈的雜湊功率分開,這使得多鏈挖礦的成本更高,受益反而降低。

最原始的 Aura 版本已經包含了對驗證人的拜占庭行為進行投票的機制,其中也包含了關於驗證人投票給不同的區塊。而在應用鏈的共識機制中增加了一項額外的經濟懲罰,以進一步抑制這種行為,拜占庭驗證人的抵押通證會透過燃燒的形式被沒收。這個概念在海外程式設計師社羣裡被廣泛地稱為“slasher”,翻譯成中文可理解為“斬斷機制”,是由以太坊
創始人之一 Vitalik Buterin 最早推廣開來的想法。

6.2 遠距離攻擊

在 PoW 共識下的區塊鏈系統中,最長的鏈也是全網擁有最大哈西功率的一條鏈。要想從過去的一個區塊上創造一個分叉鏈需要消耗的大量計算功率和資源,而使分叉鏈在短時間內生成足夠多的有效區塊趕超主鏈更是難上加難。

在 PoS 共識機制的協議中,最長的鏈則不一定可以被判定為主鏈,因為 PoS 系統中的驗證人能夠在短時間內快速製造出超過主鏈長度的一條鏈而不會花費太多成本。與 NAS 問題不同,燃燒抵押品的懲罰措施並不能防禦驗證人制造這種遠距離的攻擊,因為驗證人可以放棄驗證人身份並撤回其抵押款。一旦惡意驗證人廿出,它就可以建立一個分叉,再也不用擔心被“斬斷”。

應用鏈的區塊最終性和密封機制天然的幫助我們抵禦這種遠端攻擊。區塊最終性的規則指的是,任意一個應用鏈 C 得倒超過 N / 2 個驗證人驗證過之後就被確定為主鏈,且決策不可更改。因為由作惡領導者提出且不符合共識的區塊已經被其它驗證人拒絕,從鏈 C 上被剔除。而攻擊者將也被剝奪驗證人資格並被沒收押金。

6.3 DDoS

分散式拒絕服務攻擊(DDoS)在雲端計算領域是常見的攻擊形式[6]。對於區塊鏈網路來說,DDoS 攻擊可以影響節點的正常執行,擴大系統攻擊面。例如,一次執行良好的 DDoS 攻擊可能會使很大一部分驗證人節點掉線,在此期間,攻擊者可以趁機獲得足夠大部分的驗證功率來接管網路。在我們的設計架構中的驗證人存在繫結關係,很可能稱為 DDoS 攻擊的目標。

對於 DDoS 攻擊,除了一些驗證人常用的預防措施之外,合約大陸所設計的框架還提供了一個額外的保護層,其中包含名為 Sentry Nodes 的專用型別節點。 Sentry Nodes 是借鑑了哨兵建築模式的概念。他們充當驗證人節點的守護人,併為驗證提供對網路其餘部分的訪問許可權。守護人應該保持與網路上的其他完整節點連線,而驗證人節點在公共網路內保持隱身狀態。 Sentry 節點可以是動態平衡的,該節點不僅會保持與彼此的某些隨機子集持久連線,同時還應該接受從驗證人節點及其備份直接傳入的連線。

7. 鏈間通訊

該框架的一個重要組成部分就是鏈與鏈間的通訊。而跨鏈的通訊正是透過跨鏈橋的概念實現的。概念本身的邏輯很簡單:在被連線的鏈中執行的交易(根據該鏈的邏輯)能夠實現將交易轉移到應用鏈中。為了使邏輯最簡化,風險最小化和前期結構最最佳化,這些跨鏈交易際上與標準的外部簽名交易是不加以區分的。

7.1 橋的運作原理

該橋是一種雙向掛鉤機制,透過兩個橋契約(“契約”在這裡指的是其鏈中的可執行邏輯)。橋契約被設定在本鏈(Home Chain)和外鏈(Foreign Chain)上。“Home”和“Foreign”的概念是相對的,具體取決於相對參照物而言。從應用鏈的角度來看,Home代表該應用鏈本身,而 Foreign 的概念是指的是透過跨鏈橋連線的任何其他應用鏈或公鏈系統。

橋契約必須能夠支援接受和鎖定資金,且可以驗證傳入契約的跨鏈交易上的加密簽名,並在交易成功後將通證釋放到使用者的錢包地址。與主鏈驗證形式相同,橋驗證人以拜占庭容錯的方式在不同鏈上的兩個跨鏈橋之間的傳輸訊息。

以下是橋和橋驗證人之間執行傳輸的簡略流程介紹:

1. 使用者 U 將一些數量為 T 的通證 Cf 存入外橋合約地址 Bf。該交易包含驗證人中繼傳輸的後設資料:

○ 通證在外鏈的地址
○ 交易的通證數量
○ 接受人地址

2. 驗證人發起詢問並接收到一個在外鏈地址 Bf 上查詢到的新交易。
3. 驗證人(1..N)向本橋合約地址 Bh 的發開訊息,以使用以下引數中繼傳輸:

○ 通證在外鏈的地址
○ 接受人地址
○ 交易的通證數量
○ 把交易存入合約地址 Bf 的哈西值
○ 訊息上的驗證人簽名

4. 本橋接收到傳入訊息,他將驗證訊息上的簽名並將驗證人收集的簽名入檔。當本橋收集到包含 TX 交易的超過 N / 2 個驗證人簽名時,合約內生成 T 個 Ch 通證,對應外橋上 T 個 Cf 通證,並將在通證從合約 Bh 轉移到接受人地址 R.

7.2 連線 EVM 鏈的跨鏈橋

由於合約大陸的應用鏈與其它基於 EVM 的鏈相似,我們希望這條應用鏈可以與任何基於EVM 的鏈自由互動。外橋的功能可以使用 Solidity 語言編寫智慧合約實現。透過使用EVENT,橋驗證人可以有效地收到來自橋兩側的傳入傳輸請求。由驗證人中繼到橋接合同中的訊息可以使用橢圓曲線數字簽名(ECDSA)進行簽名,並透過 ecrecover 在鏈上進行驗證。

透過選擇 BFT 共識機制,驗證人由於通證抵押而成為社羣的利益共同體。透過對合理的控制驗證人數量,並嚴格按照公式協議定期調整驗證人名單確保我們有一個安全且穩定的共識機制。當 N / 2 + 1 驗證人確認並驗證交易時,跨鏈交易的最終性會被觸發(Finality)。

在此模型中,橋接驗證人節點除了負責監聽事件之外,簽署訊息和發開交易到橋接智慧合約也是橋驗證人的主要職責所在。從接收交易請求,到實際傳輸至外鏈或本鏈,這條傳輸通路主要依靠兩種方式,一個是假設驗證人本身也將駐留在相應的鏈上(即執行對應鏈自的完整節點),而另一種是利用專業的公共節點服務(例如 Infura為以太坊網路提供節點服務)。後者雖然是一種更簡潔的解決方法,但公共節點提供者的信用也變成一個需要考慮的安全因素。

7.3 類比特幣鏈的跨鏈橋

跨鏈比特幣面臨的所挑戰是如何在輪轉驗證人的同時保證儲蓄的安全。與能夠依靠簽名組合做出任意決定的以太坊不同,比特幣本質上更受限制,大多數客戶只接受最多 3 方的多重簽名交易。根據當前的協議,將其擴充套件到十個、百個、甚至是幾千個簽名,幾乎是不可能實現的。擺在我們面前有幾種選擇,一種是透過改變當前比特幣協議來實現這樣的功能,提到修改比特幣協議就不得不說區塊鏈世界所謂的“硬分叉”,但是透過最近幾次分叉嘗試,大家可以看出想組織這樣的一次“硬分叉”是非常困難的。另一種替代方案是使用閾值簽名,加密設計是透過拆解單個可識別的公鑰成多個秘密“零件”,所以想要建立一個有效簽名,驗證人必須需要收集一部分或所有“零件”才能完成。不幸的是,與比特幣的 ECDSA 相容的閾值簽名在建立較為複雜的和多項式計算成本過高。諸如 Schnorr 簽名之類的其他解決方案雖然成本低廉,但是它們被引入比特幣協議的可能性和時間點都很難被確定。

由於儲蓄的最終安全取決於一些繫結驗證人,還有另外一個選擇就是將多重簽名金鑰持有人減少到幾個少數驗證人,從而使閾值簽名的方案變得可行,這幾個驗證人會比其它驗證人存入更多的押金。(或者,最壞的情況下,使用成本較高的比特幣原生多重簽名)我們可以根據 BIP-13 使用 M-of-N P2SH 多重簽名地址來實現這一點。透過參考比特幣協議,P2SH 兌換指令碼為最多 520 位元組的。兌換指令碼的格式為:

因此,所有公鑰的長度加上公鑰的數量不得超過 517 位元組。對於壓縮公鑰,這意味著 N最大時 N = 15。

如果驗證人存在作惡行為,這當然會導致驗證人抵押債券的總額減少,以賠償造成的損失,但這對系統來說是一個無傷大雅的存在,只需要設定一個轉賬資金的上限就可以確保資金能在兩個網路之間安全轉賬(或者實際上,如果驗證者的攻擊成功,則按百分比從驗證人抵押金中扣除)。

8. 應用層

應用程式層包含區塊鏈的應用程式域的邏輯,其表現形式為智慧合約。從鏈作業系統的角度來看,高階合同程式碼被編譯為 EVM 位元組程式碼,並儲存在鏈上。應用程式鏈上的每個完整節點都應該以鏈狀態資料的形式存有應用程式邏輯的副本。因此,任何一方都無法修改應用程式邏輯。設計框架不對應用程式邏輯施加任何限制或規則。設計決策和實施細節(例如可升級性和治理方案)也是開放式的,由應用鏈的開發人員來決定。

8.1 應用場景例項

在這裡,我們列舉一些可以從應用項區塊鏈框架構建中受益的應用場景。

下一代去中心化交易所。大家最容易想到的一個應用場景應該就是去中心化交易所(DEX)。目前存在的大多數 DEX 都是半中心化的,通常會採用鏈下的訂單薄與撮合引擎來幫助區塊鏈系統解除安裝負荷。由於公鏈系統的效能限制,終端使用者體驗通常很笨拙。使用應用項區塊鏈框架構建的 DEX 可以使整個交易系統搭建在鏈上,並使終端使用者的使用者體驗趨近於中心化交易所。透過利用跨鏈橋,DEX 可以對有所有有交易需求的區塊鏈系統及鏈上的數字資產開放交易功能,而不僅限於 DEX 上部署的鏈上資產。以這種方式構建的更加純粹的去中心化交易所,可以不緊為使用者提供更安全的保障,還能最大限度地降低中心化操作風險。

P2P 菠菜遊戲:任何一個 P2P 類的菠菜類協議(諸如撲克和麻將等其具有相對較高的效能要求高階遊戲),都可以在應用項區塊鏈中實現。且在跨鏈橋的幫助下,可以將各種數字資產用作遊戲的一部分。

遊戲:基於區塊鏈的遊戲加密貓(CryptoKitties)的火爆中正是藉助了區塊鏈的不可變性(Immutability)特質。然而,由於目前主要參與遊戲的玩家並不注重遊戲本身的娛樂體驗,更多是出於收集或獲取通證的目的。但是隨著區塊鏈系統效能和資產可隔離性限制的提升,相信未來可以建立更復雜更多樣的遊戲,並且為去中心化遊戲領域開闢更多可能性。

總結

以上內容概述了應用項區塊鏈和跨鏈通訊橋兩種技術,並且介紹瞭如何使用兩種技術去製造有擴充套件性的去中心化應用。為了使系統能夠健康自主地運轉,我們設計了維護和運營需要所的不同角色,並透過合理的獎罰機制,間接規定了各個角色的行為準則。此外,我們還詳細討論了區塊鏈層的共識機制的改進方法,跨鏈橋協議設計和不同區塊鏈系統協議的侷限性,並總結了應用鏈的幾個應用場景。

關於更多合約大陸資訊:https://www.contractland.io/

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;