加密世界鏈是一條基于 Raft+DPoS 的區塊聯盟融合主鏈,通過區塊鏈核心引擎,在聯盟計算機網絡上構建了一個聯盟區塊鏈環境。聯盟核心會員分別提供若干高性能、高可用性、高穩定性的記賬節點服務器形成聯盟記賬節點網絡,在區塊鏈記賬入鏈時,先通過Raft 算法每個聯盟核心會員從自己提供的記賬節點服務器中挑選出一臺候選記賬節點服務器,然后所有候選記賬節點服務器再通過DPoS 共識算法選舉確定誰最終獲得記賬權。
多鏈聯盟融合基礎主鏈
基于 Raft + DPos 共識機制的記賬系統
同時加密世界鏈自帶快速響應交易的 SPEEDFORCE 網絡,類似于比特幣和以太坊的雷電網絡,但是 SPEEDFORCE 擁有毫秒級的交易確認速度,他的原理是用戶在發起交易的時候,只需要經過 RAFT 隨機挑選出來的聯盟主鏈記賬確認,即可實時確認交易的對方收到這筆交易,聯盟節點同時再將交易的賬本就近分發給其它個人節點驗證,在保證交易高效的同時保證其公正可靠性。此外,個人用戶可以將自己的計算機作為賬本驗證節點加入加密世界公鏈為加密世界提供賬本信息驗證工作,同時為不同地域的其它用戶提供就近訪問入口,從而進一步提高加密世界鏈的讀取效率。
加密世界鏈(CWV)多鏈機制融合主鏈的特點鮮明,聯盟鏈+個人公有鏈結合的基礎主鏈,可以承載更高交互體驗需求的應用;多鏈機制用戶隨機入鏈,就近訪問,聯盟負責記賬,個人節點驗證查閱,去中心化且能保持高效運行,自帶的 SPEEDFORCE 網絡能快速高效的處理交易,是真正的區塊鏈 3.0。
技術架構
1.系統架構
整個加密世界從技術角度上來看,就是加密世界公鏈+虛擬經營開放平臺。即在全新的模式下,為生態環境構建了以 TOKEN 和容器 Docker 為核心的智能合約,為各類場景 DApp 提供更加便利的開放平臺。
加密世界的核心世界觀系統,以及各種場景應用系統環境,利用自主研發的區塊鏈技術,實現了全新的去中心化運行模式。系統運行環境以容器 Docker 的形式被復制成多份,分散不同地域、不同加盟服務器上,從而實現多點災備。一旦運行的環境出現異常無法正常運轉,通過智能合約會自動選舉出另一個性能最佳的服務器,將其上的系統環境 Docker 運行起來,從而恢復相應的系統服務。
通過側鏈對接技術實現其它公鏈(如比特幣、以太坊等)與加密世界公鏈的對接,從而形成一個融合鏈網絡,并且將其它外鏈區塊鏈應用整合到加密世界中。同時利用代幣接入交換系統完成 CWV 與 BTC、ETH、其它彩色幣自由轉換的能力。
區塊鏈系統底層采用微服務架構,應用全棧異步處理方式,并以 Actor 微內核方式進行多線程調度管理,從而形成了高性能的引擎框架。同時通過多鏈區塊并發打包機制,實現交易的快速確認。區塊鏈引擎經過具有自主知識產權的核心技術的優化,區塊鏈處理能力也大幅提升,鏈上的每個塊的尺寸更大,記錄的信息更多。
加密世界鏈為開發者提供豐富的開發擴展框架,以便其為加密世界開發各種場景應用。開發擴展框架將提供如下功能:
? 區塊鏈瀏覽器
? SDK 開發工具包,支持 Java / Kotlin、.NET C# / VB、JavaScript / Typescript、Python、Go
? 智能合約編譯器與 IDE 插件
□ C# / VB.Net / F#,Visual Studio
□ Java / Kotlin,Eclipse
□ C / C++ / GO
□ JavaScript / TypeScript
□ Python / Ruby
2.核心技術
2.1共識算法
加密世界的區塊鏈系統采用了分層共識的方式,分析了目前大多數網絡結構體系,提出了 Raft+DPoS 的組合共識算法,在局部選舉人 Raft 高性能共識下,通過委任權益證明 DPoS(Delegated Proof of Stake)形成最終相互制約共識。
在目前的網絡中,如何保證節點的可靠性,是提高共識效率非常重要因素。因此,我們在同等網絡下,以 Raft 算法的為第一步共識。例如同時在一個 IDC 中心的節點,它們以內網的方式,可以達到毫秒級的同步和共識。通過 IDC 局部競選出來的節點,將以 Si 的權益身份,參與下一輪的投票/挖礦。
參與投票的概率為:
其中 Ni 為第一層中的節點個數,Et 為多長時間進行一次選舉的輪詢。
DPoS 的權益算法為:
其中:D 為挖礦難度:
取決于 Si 子集中的投票權益總數。因此每個節點可以挖礦的概率為:
從概率算法層面,相同權益下每個節點的挖礦概率是相同的;在不同的區域內部,代表的權益越多,挖礦的概率越多,因此鼓勵礦工節點提高區域內部的網絡質量,相互促進才能提高效率。
2.2 區塊形成機制
為解決區塊的容量問題,我們提供了一種基于隨機相關性分析的優化共識方法,以使交易鏈能夠高效地進行共識分析。基于隨機相關性分析的優化共識方法可克服共識機制下交易區塊產生速度的局限性,從根本上對每個交易區塊上的交易信息進行隨機相關性分析,在此基礎上根據隨機相關性排序生成默克爾樹,記錄到交易區塊中,每個交易區塊包含前一交易區塊的哈希函數,每當交易區塊中有新的交易信息產生時,通過隨機相關性比對將交易信息按一定順序連接在默克爾樹中,由于相鄰交易區塊的隨機相關性最高,通過構建相鄰正相關模型使得整個交易鏈能夠更加高效地進行共識分析,篩選錄入信息并減少交易信息錄入時間周期,提高交易區塊利用率。
如上圖所示,一種基于區塊并發執行算法的記賬方法,包括以下步驟:
1)在至少兩個交易區塊中分別進行交易操作,并將交易信息存放在相應的交易區塊中。
2)對至少兩個交易區塊中的交易信息進行隨機相關性分析、比對和排序以對默克爾樹的結構進行新增或修改,構建并約束默克爾樹的結構,形成正相關默克爾樹結構。
3)在至少兩個交易區塊中,前一交易區塊在交易過程中獲得交易信息正相關默克爾樹,通過前一交易區塊的哈希結構執行后一新生成交易區塊的交易操作。新生成的交易區塊中產生的新的交易信息通過隨機相關性比對進行交易區塊之間的關聯,使至少兩個交易區塊形成一條完整的交易區塊鏈,從而完成交易共識。
2.3 智能合約
區塊鏈是一種按照時間順序將數據區塊以順序相連的方式組合成的一種鏈式數據結構,區塊鏈具有不可篡改和不可偽造的特點,能夠實現去中心化。在區塊鏈技術領域,由于其分布式、共享數據區塊、密碼學加密等特點,智能合約層面只提供了有限的程序定制功能,在某些業務場景下,如多任務、多機構和角色等游戲狀態機、業務處理流程等領域,區塊鏈技術應用遇到了很大的困難。為了解決這些困難,當前主流的解決方案是設計一個中心化的應用程序,通過輪循調用智能合約掃描鏈上的數據,并對符合條件的數據進行處理,該方案不僅時間延時較大,不能實現精準的時間控制,并且還增加了系統實現的復雜度,加大了開發成本。
目前大部分分布式賬本在智能合約的調度過程主要分為三步:多方用戶共同參與制定一份智能合約,合約通過 P2P 網絡擴散并存入區塊鏈,區塊鏈構建的智能合約自動執行。
基于區塊鏈智能合約的流程調度系統及方法在傳統區塊鏈模型中增加了狀態推演過程,以分布式任務隊列為工作項節點,并以流程狀態及前后關聯性記錄為存儲的廣義流程調度管理方法,該交互方式具有原子性、集群性,實現智能合約的高效調度。該方案能夠在多任務、多機構和角色等流程銀行、集中業務處理領域充分利用分布式緩存、無狀態的函數式等技術,減少系統開銷,減少整個交易流程的系統損耗,為系統提升了線性擴容能力。同時通過關聯式的交易信息記錄管理,避免賬本管理過程中出現的高復雜性、高耦合度、擴展性差、難以維護等問題。
任務分發的關鍵要素,是能夠包含了流程的上下文信息,所以合約層我們提供了 Docker 的運行封裝,保證了流程可以在區塊鏈的任意節點上運行。其中 DockerFile 是 Docker 封裝的規范,我們在 DockerFile 基礎上提供了智能合約的擴展和協議 BC-SMARTC。包括 UTXO 模型或者 Account 模型下地址之間的 Token 指令集,以及有限狀態機 FSM 的流程定義。不同的應用可以定義不同的FSM 狀態流程,極大提高了合約的流程處理方式。
基于區塊鏈的智能合約包括事務處理和保存機制,以及一個完備的狀態機,用于接受和處理各種智能合約,并且事務的保存和狀態處理都在區塊鏈上完成。事務主要包含需要發送的數據,而事件則是對這些數據的描述信息。事務及事件信息傳入智能合約后,合約資源集合中的資源狀態會被更新,進而觸發智能合約進行狀態機判斷。如果自動狀態機中某個或某幾個動作的觸發條件滿足,則由狀態機根據預設信息選擇合約動作自動執行。
智能合約系統的事件描述信息中包含觸發條件。當觸發條件滿足時,從智能合約自動發出預設的數據資源,以及包括觸發條件的事件。整個智能合約系統的核心就在于智能合約以事務和事件的方式經過智能合約模塊的處理,輸出還是一組事務和事件。智能合約只是一個事務處理模塊和狀態機構成的系統,它不產生智能合約,也不會修改智能合約。它的存在只是為了讓一組復雜的、帶有觸發條件的數字化承諾能夠按照參與者的意志,正確執行。
智能合約系統
如上圖所示,基于區塊鏈智能合約的流程調度系統的結構示意圖,基于區塊鏈的賬本交易執行過程主要包括根哈希、隨機數、時間戳、智能合約記錄幾個方面。
交易信息的產生主要包括交易發起方、交易目的方、公鑰、私鑰、簽名、哈希函數等組成,交易通訊都是通過鏈式結構進行交易信息傳遞,因此交易流程實現起來相對簡單、直接,就像一個流程圖,只要描述交易區塊節點之間的連接、數據傳輸的方向,以及從一個交易區塊向下一個交易區塊流轉的條件等等,就可以設計出交易流程并進行交易記賬。
對于根哈希的形成,在最底層把交易信息分成小的數據塊,有相應地哈希和它對應,逐層向上把相鄰的兩個哈希合并成一個字符串,然后運算這個字符串的哈希,得到了一個子哈希,直到最終形成一棵倒掛的樹,到了樹根的這個位置,這一代就剩下一個根哈希了,我們把它叫做根哈希,也就是圖中的當前區塊的根哈希。
在 P2P 網絡下載之前,先從前一區塊獲得可信的根哈希,然后就可以通過可信的根哈希來檢查當前區塊所生成的根哈希。如果當前區塊的根哈希是損壞的或者虛假的,就從其它源獲得另一個根哈希,直到獲得一個與可信樹根匹配的根哈希。
交易信息通過哈希運算形成哈希樹,從而能夠進行信息比對,達到節點同步的功能。這就涉及到智能合約的問題,基于區塊鏈智能合約的流程調度系統依賴于狀態推演模塊,該模塊是一個函數式的過程,利用角色模式并充分利用多核機制,在進程/線程調度上,具有高吞吐量、線程切換快速等特點。
2.4 隨機合約
隨機數算法在當今世界有著非常廣泛的應用,金融、機械制造、IT 網絡等等各行業均有使用。這也促使人們對隨機數算法進行更加深入的研究,甚至有提供隨機數服務的真隨機數網站,利用大氣噪聲或者某種不可預測的大范圍的隨機源產生隨機數。而對于實際應用當中應該使用什么樣的隨機數算法根據系統的不同要求而不同。對于比較簡單的需求,比如網站的隨機驗證碼,使用操作系統自帶的偽隨機算法就可以滿足要求。對于銀行密碼或數據加密,隨機數的要求很嚴格甚至非常苛刻,一旦出問題有可能導致很大的損失,可以采用硬件真隨機算法。
目前大部分計算機產生的隨機數使用的是梅森素數旋轉隨機算法(Mersenne Twister random number Algorithm MT19937) ,1997 年開發的,基于有限二進制字段上的矩陣線性遞歸,這是一個偽隨機數發生算法。
如何結合區塊鏈的方式,通過挖礦原理,提供真隨機數,需要一套智能合約的方式來執行,保證區塊鏈產生真隨機數。
通過挖礦的智能合約方式,采用約瑟夫環隨機方法,在區塊鏈上提供真隨機的算法。使用挖礦技術把每記錄 ID 切成 n 片,隨機放入 n 個隨機切片文件中,存放的順序及規則由數據庫存儲,切片文件以 M 張記錄為一組,每個切片文件使用加密算法加密存儲,加密密鑰是提供隨機資源的公鑰 。
每次隨機礦產生時,首先解密隨機切片文件結合數據庫存儲信息組成完整記錄號序列,然后根據上次區塊鏈的保存參數,生成 k(20)個隨機隊列,每個隨機隊列充滿a(50000)個記錄數據,準備好為客戶端返回 ID 數據。
客戶端請求數據時,根據請求參數按照約瑟夫環算法隨機從 K 個隨機隊列中抽取一張隨機 ID 返回。一旦隊列中的數據不足以充滿隊列的 20%(M 張)時,系統按照規則從隨機序列中抽取數據充滿隊列。
約瑟夫環需要的參數數組存儲在區塊鏈中,客戶端請求隨機序列時,利用系統自帶隨機數(或 MT 算法)隨機一個參數,系統根據這個參數公鑰地址中取得約瑟夫環參數,進而在隨機隊列中取得數據。
具體設計目標如下:
1)隨機序列要保證 5000 億(50 億/年 x1000 年)以內隨機數據不重復。
2)支持至少 10 萬張/秒取數據速率。
3)保證數據安全,沒有被竊取、篡改可能。
4)切片文件加載記錄序列時間不超過 1 分鐘。
約瑟夫環是一個數學的應用問題: 已知 n 個人(以編號 1,2,3.。.n 分別表示)圍坐在一張圓桌周圍。從編號為 k 的人開始報數,數到 m 的那個人出列。他的下一個人又從 1 開始報數,數到 m 的那個人又出列。依此規律重復下去,直到圓桌周圍的人全部出列。其數學推導公式為:
隨機數獲取在獲取數據的時候會用到約瑟夫環。我們隨機規定系列的 n、k、m 值存放在區塊鏈中,獲取數據的請求帶有使用第幾個 n、k、m 值的索引,這個索引值是隨機的,根據這個索引從當前區塊里面取得這組 n、k、m 值,從而在隨機隊列中取得要獲取的記錄數。
約瑟夫環可以使取得的數據隨機性更好,由于個人節點提供的真隨機作為加密保存參數,可以保證即使知道了隨機隊列中的數據,也不能計算出本次請求到底會返回哪個記錄。
2.5 技術優勢
?通過隨機相關性比對將交易信息按一定相關順序連接在 Merkle Tree 中,由于相鄰交易記錄的隨機相關性最高,通過構建相鄰正相關模型使得交易區塊之間能夠更加高效穩定地進行共識分析。
?交易區塊中的相關因子能夠為交易信息記錄提供支撐,引導 Merkle Tree 的形成。
?每個交易區塊中的交易信息通過隨機相關性進行排序,當大量交易信息出現時,各個交易區塊之間通過這種隨機相關性機制能夠達成共識,相鄰交易區塊隨機相關性最高,形成了一條相互制約、相互共識的完整的交易區塊鏈。
?克服了共識機制下交易區塊產生速度的局限性,避免哈希碰撞匹配交易區塊的繁瑣過程。
?通過隨機相關性分析檢查網絡中可能存在的待確認交易信息的有效性。
?交易區塊之間的隨機相關性排序能夠縮短共識周期,提升交易區塊鏈的穩定性。
?權益所有者能夠通過投票決定記賬者,最優化權益所有者的紅利, 最小化保證網絡安全的消耗, 最大化網絡的性能。
2.6 代幣激勵模型
1)聯盟共治層
區塊鏈節點服務器,獲取交易中手續費的分潤。即加密世界聯盟提供基礎的 BC 交易記賬服務,聯盟成員提供成熟的網絡和應用資源。交易模型如下:
假設 S 為每個區塊所有交易的總 CWV 數量,參與記賬的節點一共分得 U%(=0.01%,萬分之一)個 CWV,其中爭得記賬權的主節點 M 從中獲得 M%(=80%)獎勵;同時,如果其他節點完成 80%確認,依次均分剩下的(1-M%)CWV。
2)合約執行層
游戲節點服務器,獲取游戲中服務費和分潤。聯盟成員節點以及其他滿足一定計算能力的節點,只要提供游戲合約執行的加速服務,通過 CWV 進行交易計算媒介,實現游戲的多節點安全運行。交易模型如下:
假設 GameFees 為這次游戲合約中約定的,開局所能賺取的房間費,BonusRatio 為游戲結束后的分潤比例,但是需要開局者提供 Allowance 個幣作為質押,如果執行失敗需要扣除獎勵給下一個合約執行者。合約執行節點能獲取的獎勵為:
3.技術特點
加密世界基于區塊鏈技術提供虛擬以及真實世界的產品與服務。通過運用先進的區塊鏈加密技術等構建一套由開放跨鏈交易協議,智能合約、合約虛擬機、容器運行sdk、共享賬本體系、Token發行、去中心化交易對接系統,去中心化錢包系統組成的生態系統。該生態系統在底層架構、性能、節點管理、抗攻擊性方面都有明顯優勢。此外,加密世界為第三方生態資源開放開發接口,可以為加密世界中的公民提供包括但不限于,博彩、競技比賽、娛樂內容等服務,并將逐步接入以加密世界Token(CWV)進行結算和清算的真實世界產品及服務,包括但不限于商品、教育、線下服務等。最終,加密世界實現由虛擬世界進入現實世界,為用戶提供生活服務。
? 微服務架構
微服務是一項在云中部署應用和服務的新技術。大部分圍繞微服務的爭論都集中在容器或其他技術是否能很好地實施微服務。CWV 是基于企業級微服務架構,是多年 Fintech 沉淀下來的框架,提供了更靈活、更高效的組件服務。CWV 采用 OSGi 的建模規范,可以實現容器級的 SOA 架構,達到業務的熱部署,以及多版本運行;同時,可以在不影響系統服務的前提下,對系統對應的組件進行升級或修復。支持對業務進行整合,使其成為一種相互聯系、可重用的業務任務或者服務,它將應用程序的不同功能單元——微服務(microservice), 通過服務間定義良好的接口和契約聯系起來。接口采用中立的方式定義,獨立于具體實現服務的硬件平臺、操作系統和編程語言,使得構建在這樣的系統中的服務可以使用統一和標準的方式進行通信。
? 性能
CWV 是多鏈技術,核心底層采用聯盟機制,支持近 10 萬級 TPS。另外,CWV 提出了 speedforce 概念,是線下校驗的機制,在這個機制下,類似于 Iota 的 DAG 模型,速度將是百萬級 TPS。
? 節點管理
CWV 采用分層架構,核心賬戶層,負責記賬,參與交易費挖礦,保障了安全性;交易執行層,負責合約的執行和交易確認,能夠提供更高的效率。
? 抗攻擊性
CWV 采用聯盟鏈機制,對節點安全嚴格要求,Raft 隨機性分析選出候選記賬節點,并通過 DPoS 算法最終確定記賬,能夠有效的防止 51%的攻擊。
? 跨鏈交易
CWV 具有側鏈對接技術并提供了 ERC20 的標準兼容方式,帶有開放跨鏈交易 API,實現跨鏈的交易和確認。
? 智能合約
CWV的智能合約基于Docker容器級,是目前企業級應用的最佳實踐和落地方案,支持目前大部分云主機方式部署,支持個人高性能主機部署。
加密世界提供智能合約開發接口給第三方提供服務,包括但不限于視頻、博彩、游戲、商品交易等。項目方或開發者可以通過調用智能合約接口確定可經營的項目,也可通過選取不同的智能合約組合實現自行經營和代理經營并獲得經營性收益。總之,CWV的智能合約為項目方或用戶提供自主選擇的機會,通過不同的經營模式獲得相應的收益。
? 合約虛擬機
CWV 目前已經支持主流的 DockerVM 的方式部署。今后將更加適合聯盟鏈的模式,能夠提供更高的性能保障,為上層的 Dapps應用提供技術保障。
? 去中心化錢包系統
加密世界鏈支持自帶的熱錢包,同時也支持第三方冷熱錢包。
評論
查看更多