1.設計靈感
我們透過鏈路由實現了區塊鏈的分片,提高區塊鏈系統的交易處理能力。相較於一條單獨的 區塊鏈系統,鏈路由系統可以透過連線多條子鏈的方式在交易處理能力上直線增長。交易的 請求透過鏈路由的分配進入不同子鏈,可以有效規避針對一條子鏈的集中請求。此外,我們 可以在鏈路由上部署同構子鏈的不同節點數的叢集,對於同構鏈而言,多節點數量的叢集會 有相對較高的安全性,少節點叢集的處理速度則更快。透過鏈路由實現區塊鏈的分片,可以 幫助鏈網路根據業務需求靈活部署,為使用者提供更高質量的區塊鏈服務。
當然,除了實現區塊鏈分片之外,鏈路由的另一個重大意義在於打通各子鏈,在鏈與鏈間建 立信任橋樑。連線在鏈路由上的各子鏈之間透過鏈路由得以彼此傳遞訊息,協同工作,實現 “1+1>2”的效果。我們也可以部署多個鏈路由系統,每一個鏈路由系統中都可以部署包括比 特幣,以太坊,安鏈在內的各種子鏈。因此每一個鏈路由都可以服務一個更完整的業務生態。 同理,我們可以根據節點數量,地理位置,業務分類等不同需求,部署不同的鏈路由叢集, 根據路由規則,對應不同需求將請求分發到合適的叢集之中處理。
鏈路由網路的最終形態,是透過鏈路由的無限擴充套件和彼此之間的相互連線,形成連線不同集 群的複雜區塊鏈星狀網路。創造一個由區塊鏈組成的,互聯,互通,互信的網路世界。
鏈路由(Ann-Router)
在鏈路由網路中,一些子鏈,如比特幣,以太坊等,是先於鏈路由存在的,而且在設計之初 這些子鏈也不具有與其他鏈通訊的功能。而鏈路由則要像路由器一樣能夠接納一切子鏈,因 此我們提出了一套鏈路由的設計方案以及跨鏈通訊協議,符合這套協議的區塊鏈系統可以輕 松接入鏈路由。對於此前的區塊鏈系統,在不改變其本身設計的基礎上,需要額外設計一套 適配系統來輔助其與鏈路由之間的通訊。
1.共識演算法
工作量證明演算法(PoW)是被應用在比特幣和以太坊上的一種拜占庭容錯(BFT)共識演算法。 自比特幣開始發行至今,工作量證明演算法已經證明了其可靠性,但其中對資源的浪費也是有 目共睹。權益證明演算法(PoS)是一種為了解決工作量證明演算法中對資源浪費問題的共識算 法,透過投票人在投票權益池中的權益比重來代替礦工在挖礦時貢獻的算力,配以相應的處 罰機制,確保投票人的誠信。然而,算力和權益之間還是有很大區別的,最重要的一點區別 就是在於算力是不能分散的,一個算力固定的礦工不可以同時在兩條鏈上挖礦且保持總算力 翻倍,但是擁有一定權益的投票人卻可以對每一個可能的區塊投票,只要任何一個區塊成為 了將來的勝出者就可以保證自己的權益不受損。但這樣做是有很大的安全隱患的,因為這樣 大大降低了作惡者所需要的作惡成本。
Raft 作為一種常用的高效共識演算法,其最大的弊病在於不能防止拜占庭節點,一個擁有強大 網路配置的拜占庭領導者節點會給 Raft 演算法的共識帶來毀滅性打擊。在拜占庭容錯共識算 法的發展歷程中,一些結合 Raft 和 BFT 的演算法被提出來。以安鏈所使用的 PBFT 為例,一部 分可靠的節點被稱為驗證人,驗證人具有成為領導者的機會,在每一輪區塊鏈生成的過程中, 都會有一個新的驗證人會預設成為該輪的領導者,領導者負責打包新的區塊,並將一個自己 認為合理的區塊廣播給所有驗證人。經過兩輪超過 2/3 的全部驗證人的投票確認,新的區塊 才會被共識。這種共識方式大大提升了出塊速度,而且只要保證小於 1/3 的驗證人不是拜佔 庭節點,區塊就可以被持續生產。
不可否認的是,PBFT 中所使用的拜占庭節點容錯演算法能夠保證 1/3 以下拜占庭節點的網路 的安全。但是,在實際應用中,尤其是當與經濟利益相關時,即使驗證人是經過挑選的可靠 節點,我們也不能單純的依賴沒有處罰機制的 1/3 的安全,保證安全必須要做到賞務速而後 有勸,罰務速而後有懲。而其中的賞與罰必須是與經濟利益直接關聯的。因此,我們對原有 的共識機制進行了修改,使驗證人投票的權重與其所抵押的鏈上代幣權益相對應。
這樣一來,原本需要超過 2/3 投票人才能確認生成區塊的機制被修改成超過 2/3 的總權益。 此外,在 PBFT 共識演算法中,普通節點僅同步來自領導節點發來的新區塊,並不參與共識, 而覺得其共識演算法的安全性僅依賴於驗證節點的數量,因此普通節點的數量增加並不能提升 拜占庭容錯的安全性。新的共識機制中增加了非驗證節點的參與性。一個驗證節點對應一個 驗證人賬號,非驗證人可以透過將權益委託給驗證人,從而授權該驗證人代理投票的方式賺 取屬於自己的利益。因為利益的關係,非驗人會慎重選擇代理驗證人,從而做到了所有人都 參與到共識中,而又沒有所有節點參與共識而帶來的效率降低的缺陷。
這樣的共識演算法我們稱之為代理權益拜占庭容錯演算法(DelegatedStake-PBFT),簡稱 DS-PBFT。
輕客戶端
普通的區塊鏈客戶端需要同步該區塊鏈中的所有區塊才可以驗證交易,這樣的客戶端雖然功 能強大,但是由於需要儲存的資料太多導致其本身過重,在實際應用中往往有著諸多不便。 鏈路由使用了透過驗證人投票實現的 DS-PBFT 共識演算法,這為我們打造輕量級的客戶端奠定 了基礎。
輕客戶端中只需要實時同步某條區塊鏈上的最新驗證人組,就可以對該區塊鏈上的一些資訊 進行驗證。如,輕客戶端只需要連續同步某區塊鏈區塊頭並更新驗證人資訊,就可以實時跟 進並驗證該區塊鏈上的最新的區塊高度,世界狀態等資訊。當然,相較於全節點客戶端,輕 客戶端能實現的功能是有限的,但是這樣的客戶端更適合被使用在硬碟空間不夠大的移動端 或物聯網裝置上,幫助其獲取重要的狀態。
2.結構解析
鏈路由結構
不同於傳統區塊鏈系統的機構,鏈路由中的共識演算法和 P2P 網路是與賬本邏輯分離開的,將 鏈路由分割為兩個部分。其中共識演算法與 P2P 網路的部分被稱為 AnnCore,AnnCore 負責交 易的廣播,共識等。賬本部分被稱為 AnnApp,AnnApp 負責驗證,查詢等邏輯。二者之間通 過套接字協議被結合在一起。因此,AnnCore 可以替代諸多區塊鏈系統中的共識及 P2P 網路部分。
區塊結構
由於鏈路由採用了 DS-PBFT 共識演算法,其區塊的結構與比特幣、以太坊等區塊鏈系統的區塊 的組成有很大不同。從結構上來看,一個鏈路由的區塊主要包含三個部分,區塊頭部分,數 據部分,以及認證上一個區塊的投票部分。
區塊頭部分包含鏈標識,區塊高度,時間,世界狀態的雜湊值,前區塊頭的雜湊值,前區塊 分塊,驗證人雜湊值, 資料部分的雜湊值, 投票部分的雜湊值等等。其中,後兩部分是對 本區塊整體性的檢查。資料部分包括了本區塊中的所有交易。比較不同的是投票部分,這個 部分的目的是建立新的區塊與上一個區塊之間的連結。
之前我們提到過,區塊的共識需要兩輪超過 2/3 驗證節點權益的投票。其中第二輪的全部2/3 驗證節點的投票(Commit)會被暫時儲存起來,等到下一個區塊被提議時,再被放在該 區塊的投票的部分(LastCommit)。所以一個區塊的投票部分包括了上一輪投票中超過 2/3 驗證人的投票。
分層結構
在理想狀況下,鏈路由本身是一條鏈,所有子鏈透過這一條鏈進行通訊,這樣的好處是通訊 速度快。但是隨著新子鏈的不斷增加,通訊量也會增加,鏈路由節點的儲存和計算負擔將以 平方級增加,因此鏈路由需要採用分級結構。
這裡將問題簡化,假設鏈路由只有兩層:底層鏈負責連通上層鏈,負責維護上層鏈之間的通 信。即,如果目標鏈在同一個上層鏈中,那麼就直接透過上層鏈通訊。如果目標鏈不在同一 個上層鏈中,則需要透過底層鏈通訊。在實際應用中,鏈路由將不止兩層,最底層構成路由 主幹,並形成網狀結構。
鏈路由分層帶來的問題是通訊時延和儲存冗餘。如果通訊平均需要透過多層路由轉發,那麼 會導致網路時延,並加重鏈路由整體的儲存負載,因此需要最佳化路由演算法。鏈路由演算法需要 能夠快速收斂選擇最佳路徑,並可以快速、準確地適應各種不可預料的網路環境。鏈路由算 法使用多種度量來選擇路由,透過一定的加權運算,將它們合併為單個的複合度量,再填入 路由表中,作為尋徑的標準。這些度量包括時延、負載、通訊成本等。
3.狀態維護
作為不同子鏈之間溝通的橋樑,鏈路由要負責維護關於子鏈的一些狀態。
首先,子鏈若希望與鏈路由進行通訊,則必須在鏈路由上進行註冊。包括子鏈的身份標識 (ChainID) ,子鏈上驗證節點的資訊,子鏈上資產的種類等。以此來幫助鏈路由能夠在接收 到通訊請求時解析出對應的子鏈,完成轉發操作。
其次,鏈路由需要實時接收子鏈的最新區塊資訊和對最新區塊的投票(Commit),以此來維 護子鏈的基本狀態,幫助輕客戶端的使用者實時查詢子鏈高度、狀態,驗證從子鏈發來的交易 等等。
此外,因為驗證節點的身份是實時變更的,鏈路由還需要維護所有子鏈上的動態驗證節點信 息,以此來驗證一筆來自子鏈的交易是否為合法。
同理,子鏈上也需要維護關於鏈路由上的相應資訊,以此來確定一筆交易確實是由鏈路由發 來的。包括鏈路由的身份標識,鏈路由上的驗證節點資訊,鏈路由上的最新區塊及投票等。
4.動態擴容
前文提到,鏈路由機制的一個重大意義在於實現區塊鏈系統的水平擴充套件。因此,我們可以在 現有鏈路由系統交易處理能力接近飽和之前在鏈路由上加入新的子鏈,降低每條鏈上所承載 的交易數量。為了讓新加入鏈路由的子鏈可以迅速分攤壓力,我們制定了能夠實時反應的動 態路由規則。
首先,鏈路由會維護一個關於註冊在其上的子鏈列表,在子鏈加入到鏈路由之前,子鏈列表 會先行更新。輕客戶端會效仿分散式配置管理機制,不定時向母鏈讀取當前的最新子鏈數量。 輕客戶端每次會在 0.5 至 1 秒之間隨機選取一個時間,倒計時觸發向鏈路由查詢子鏈數量, 並儲存在本地檔案中。若查詢結果與本地儲存數字不同,則向其他輕客戶端廣播最新子鏈數 量及時間戳。收到訊息的其他輕客戶端對比本地檔案,數量若一致,則重置倒計時;若數量 不一致且時間戳晚於本地數值寫入時間,則向鏈路由發起關於子鏈數量的查詢,寫入新資料 之後,重啟倒計時;若數量不一致但時間戳早於本地寫入時間,則忽略訊息。此外,我們還 可以設定一個遮蔽機制,若一個輕客戶端收到來自另一個輕客戶端的廣播,然後觸發了向母 鏈的查詢,但是發現數量與本地儲存的子鏈數量一致。這時可能是因為兩次查詢中,母鏈上 的子鏈增減數量相同,廣播者沒有撒謊;或者廣播者撒謊。但是這個輕客戶端可以主動選擇 遮蔽接受來自對方的訊息,每次的遮蔽時間隨受欺騙次數增加。
透過以上方法,我們保證了輕客戶端中儲存的子鏈數量與母鏈中所存的保持實時一致。每當 一筆請求從輕客戶端發起時,輕客戶端需要指定交易的觸發鏈,輕客戶端計算應用標識的哈 希值,並對本地儲存的子鏈數量取模,所得值即為該請求的目標鏈的編號。
5.鏈路由管理
從管理的角度來說,子鏈鏈路由相互獨立,子鏈不會影響鏈路由,反之鏈路由也不會影響子鏈。這裡主要討論鏈路由的管理規則。
驗證節點管理
驗證節點與鏈路由的正常運轉直接相關,因此在鏈路由初始化時會指定一批節點成為首批驗 證節點。此後,隨著總節點數的增加,驗證節點會同比增加,直至驗證節點總數達到上限。 到達上限後,驗證節點總數將不再增加。但為了確保流動性和安全性,我們引入了驗證節點 的剔除機制,針對腐敗驗證節點,可以透過全體驗證節點投票的方式將其剔除網路。
驗證節點具體分配機制如下:鏈路由起始第一年驗證節點上限為 200 個,之後每年呈線性增 長,增長率為 10%,上限取整也就是說第二年驗證節點上限為 220,第三年驗證節點上限為 242,第四年驗證節點上限 267 等,如果發現驗證節點上限不滿足當前網路需求,可透過管 理端發起提案投票,調整其上限值。
代幣發行
鏈路由會透過權益證明的方式發行代幣 ZAC。針對起始 ZAC,在鏈路由初始化前會發起眾籌, 眾籌佔 55%,眾安科技佔 10%,上海區塊鏈產業聯盟佔 35%。起始 ZAC 會在 1 年內平均按天 返回給參與者,即每個參與者每天會收到所佔起始 ZAC 份額的 1/365。ZAC 是通脹發行,每 年的通脹率為 10%,每兩週會產生新的 ZAC,做為驗證節點維護網路結構獎勵發放給驗證節 點,獎勵按照驗證節點投入 ZAC 參與記賬權益的比例分配。ZAC 也做為鏈路由交易流通中的 交易手續費,來防止對鏈路由產生的 DDoS 惡意攻擊,這些手續費同樣作為獎勵分發給驗證 節點。
權益管理
每個持有 ZAC 的參與者,都有機會成為驗證節點,成為驗證節點必需抵押持有 ZAC 到共享 資金池,驗證節點投票權重根據其抵押 ZAC 佔有資金池比例來計算。當驗證節點總數未達 到上限時,每個 ZAC 持有者都可以申請成為驗證節點,而當驗證節點數已達到上限時,非 驗證節點想成為驗證節點,其抵押的 ZAC 數必需大於當前驗證節點權重最小者抵押的 ZAC 量。持有 ZAC 量少的非驗證節點也可以把 ZAC 委派給一個代表,而代表可以把其獲得的獎 勵按比例分發給這些委託者。這樣持有 ZAC 少的參與者也可以透過找代理的方式參與共識, 並來減少 ZAC 每年通脹量給自己帶來的損失。
獎懲機制
驗證節點可以發起提議,提議擁有2/3同意投票就可以透過。投票的種類可分為同意、強烈 同意、反對、強烈反對和棄權。如果出現1/3的強烈反對票,則提議不透過,並對投贊成及 投強烈反對票的節點進行懲罰,雙方抵押在資金池裡的ZAC都會相應的減少。並將減少的ZAC 放入獎勵池中。投票透過的提案會在兩週後強制執行。
獎勵池的設計是一種鼓勵機制,網路漏洞發現者及駭客,可透過 ReportBugTx 提交漏洞說明 以及其獎勵地址,經過驗證節點投票,2/3 透過後,可從獎勵池中獲取所要求獎勵。
ZAC 作為數字貨幣,與比特幣,以太幣一樣,可以在交易所中被交易。因此,使用者持有 ZAC 的目的可能是為了投機。當市場上 ZAC 的價格突然增高,驗證節點透過投票生成區塊獲得 的利益會小於直接交易 ZAC 的獲利。因此,驗證節點會傾向於解綁其 ZAC,退出驗證節點集合。為了保證鏈路由的安全性,當驗證節點數在最大上限的 30%-50%時,新區塊生成的獎勵 額度調整為之前 1.5 倍,當處於最大上限的 30%以下時,獎勵上升到之前 2 倍。極端情況下, 全體驗證節點可以透過提案投票的方式來調整獎勵。
驗證節點在有意或無意的情況下會做出影響鏈路由的行為,因此在DS-PBFT共識演算法中必須 存在針對驗證節點的懲罰機制。下面以雙籤和不履行投票義務為例,解釋相應的懲罰機制。
雙籤是指驗證節點在同一高度同一輪,對兩個不同區塊進行雙重簽名,這種行為會影響 DS-PBFT共識。針對這種行為,驗證節點的名聲及繫結的ZAC都要有所損失。當驗證節點的名 聲積累為負,就要強行被移出驗證節點集。驗證節點可能由於網路或者機器原因導致長時間 離線,沒有履行其投票義務次數過多,超過其ValidatorMaxTimeout次數過多,其權益也要受 到相應懲罰。
上述違規行為比較容易被檢測到,對於那些不易發現的違規行為,我們設定已繫結的 ZAC 解綁需要兩週時間,延長髮現違規的時間。
跨鏈通訊協議(CBCP)
區塊鏈之間的通訊協議與傳統網路中的 TCP/IP 等通訊協議類似,透過建立可靠的連線傳遞 訊息。訊息分為訊息頭(Header),和通訊資訊(Data)兩部分。其中訊息頭會記錄訊息的 源頭,目的地,長度,類別等。在傳遞過程中,訊息頭會被逐層剝離,修改,資訊則會被傳 到訊息的目的地。此外,訊息的傳遞具有狀態性,傳送方可以根據接收方的反饋瞭解當前通 信所處的狀態,做出正確的反應。
1.協議結構
一個完整的跨鏈通訊協議(CrossBlockchainCommunicationProtocol)主要包括兩個部分,通 信地址,通訊包。
通訊地址包括訊息來源鏈的鏈標識(fromChainID)和當前鏈高度(Height)。通訊包則由部 分,通訊包頭(Header)和通訊資訊(Data)組成。其中,通訊包頭包括了,起始鏈標識 (srcChainID),目標鏈標識(dstChainID),通訊狀態(Status),通訊存活時間(TTL),觸發 通訊交易等。通訊資訊在傳遞過程中則不會被開啟。
通訊狀態對應的是網路通訊協議中的通訊狀態機制。當一個通訊包被髮送的時候,通訊狀態 是“接收待定”。當接收方收到訊息,會返回給傳送方一個通訊包,其中通訊狀態為“傳送 成功”,若傳送方收到了含有“傳送成功”標識的通訊包,傳送方會再回復給對方一個含有 “接收成功”標識的通訊包。以上便是一次成功通訊的。如果過程中,有通訊包接收失敗, 如,接收方一直不回覆“傳送成功”,則傳送方會在一定時間後重發交易,試圖再次建立通 信。
除上述狀態外,我們還規定了“連線超時”狀態。當一筆交易從子鏈 1 發往子鏈 2 時,會標 明其指定的以鏈路由區塊高度為準的通訊存活時間。在到達通訊存活時間之前,鏈路由會將 通訊結果的狀態返回給子鏈,若超過通訊存活時間,則鏈路由直接返回給傳送方“連線超時”狀態。傳送方子鏈將該次通訊記錄為通訊失敗。
2.通訊驗證
與網路通訊類似,區塊跨鏈通訊也可能遭到攻擊,尤其是 DDoS 攻擊。因此,我們需要一套 驗證容易,偽造困難的通訊驗證機制,來防止鏈路由因遭到攻擊而癱瘓。
第四章提到的鏈路由的結構是我們認為子鏈應該符合的一種標準結構。在標準結構的框架下, 鏈路由將更容易驗證子鏈發來的通訊請求。前面提到,子鏈隨時向鏈路由傳送最新的區塊以 及最新區塊的投票(Commit),當一筆交易從子鏈向鏈路由發來的時候,會在通訊地址中體 現出該交易所在區塊的高度。我們只需要查詢在該高度的區塊中是否存有這筆交易即可。因 為透過提交最新的區塊及其投票(Commit)便足以證明一個區塊的真實性。具體證明如下:
首先,單靠一個區塊本身是不能孤證其合法性的。因為針對一個已有的區塊,我們完全可以 仿造一個不合法但是符合區塊結構的假區塊。例如,修改區塊資料部分的交易,並修改位於 區塊頭中的交易雜湊值。
前面提到,一個區塊被提議之後會經過兩輪投票來共識,其中第二輪共識的投票會被暫時存 起來,並當作下一輪所生成的區塊中連線上一個區塊的部分。基於此,如果子鏈一次性提交 某個區塊及其投票,我們便可以在一輪區塊生成時間內證明這個區塊的可信性。而不用花費 兩個區塊的生成時間,等待到下一個區塊生成,透過其中的對上一個區塊的認證部分來驗證 前一個區塊的可靠性。
透過共識來驗證一個獨立區塊的合法性的流程為,先透過區塊頭中本區塊資料以及投票部分 的雜湊值來驗證除區塊頭以外,本區塊是沒有被篡改過的。又因為投票(Commit)是該鏈 超過 2/3 驗證節點對本區塊區塊頭的簽名,除非訊息的傳送方可以同時掌控超過 2/3 的該鏈 上的驗證人的私鑰,否則沒有人可以偽造區塊。
安鏈(Ann-Chain)
在設計安鏈之初,我們就嚴格將其定位為企業級區塊鏈產品。安鏈的設計目標是滿足商 業應用的各類要求,具體包括:建立切實可行的監管審計機制;交易隱私的保護;穩定高效 可靠;為資料分享搭建平臺。
下圖展示了安鏈所參考的架構,這些是邏輯結構,而不是對具體步驟、地址空間或機器 元件的物理描述。為了解決區塊鏈技術在應用落地過程中可能面臨的各種阻礙,安鏈採用三 層架構:(1)協議層:提供區塊鏈底層原始資料不可篡改的儲存,同步等基礎服務(2)擴 展層:實現安鏈的各種功能,包括監管、隱私、智慧合約[8]、監控分析與結構化資料儲存 與查詢等功能。(3)應用層:執行於安鏈上的各種應用,例如銀行,醫療等等。
安鏈的功能主要在擴充套件層實現,包含的模組主要有:
監管與審計模組:負責鏈上交易的授權與監管,提供證書發放,許可權管理。
隱私模組:提供加密合約交易,並提供不同場景的隱私解決方案,如多方計算[9]、PGP 通訊以及環簽名。
分散式賬本服務:提供交易與智慧合約的解釋與執行,交易管理,並提供外部資料服務。
監控與分析:支援系統和硬體環境的監控,並提供多種視覺化管理工具,滿足管理和維 護需求。
儲存:提供檔案儲存和結構化資料儲存與查詢。
區塊鏈協議層儲存區塊鏈上原始資料,並在節點間同步全域性狀態。協議層由三個部分組 成:鏈上資料、P2P 網路、共識管理器組成。
鏈上資料:安鏈的資料都以交易表示,每筆交易包含一個簽名。交易打包在區塊中,相 鄰區塊採用雜湊鏈連線。安鏈採用狀態模型,每一筆交易都改變區塊鏈上的狀態。交易 引起的狀態變化的解釋由上層賬本服務提供。
P2P 網路:區塊鏈網路是一個多中心節點的網路,節點之間的訊息傳遞和傳送採用了 P2P 模式。在 P2P 網路中,每個節點既可以從其他節點得到服務,也可以向其他節點提供消
息服務。安鏈的 P2P 協議採用了授權加密的安全通訊機制。
共識:安鏈的共識演算法是一種基於 PBFT 的共識演算法。演算法生成的區塊是經過投票的過 程產生的,生成區塊的時間是平穩的,而基於工作量證明的共識演算法中區塊的生成時間 是基於概率的。平穩的區塊生成時間保證了交易延時的穩定。演算法中交易所在區塊在區 塊鏈上確認後即為終態,區塊鏈不會分叉,也沒有叔伯區塊,從而可以提升吞吐量。算 法可以抵禦節點的錯誤訊息,以及節點互相勾結(最多 1/3 拜占庭節點)。共識演算法的 節點帶有一個信用評分,在參與投票時會依據判斷正確與否增減。信用評分用於調整節 點選為領導節點的權重,新投票節點加入退出的投票等等。
1.監管模組
監管模組負責鏈上交易的授權與監管。監管模組由網路身份證和授權管理服務組成。
網路身份證:網路身份證是一套對使用者的實名身份資訊進行認證,並在聯盟方中共享信 息的系統。網路身份證採集的資訊包括基本資訊、財務資訊以及行為資訊。網路身份證 是對賬戶持有人的強審查,能夠在保護客戶隱私的情況下滿足監管需求。
授權管理:授權管理為節點與交易提供授權並審計。許可權管理:提供完整的許可權管理機 制。許可權管理根據歸屬公司和職級為使用者授權,為節點發放證書或者授予金鑰。證書管 理:為節點加入區塊鏈網路,獲得交易身份以及參與交易提供授權。證書管理服務相應 的發放三種證書,包括通訊證書、身份證書和交易證書。節點加入區塊鏈網路需要獲取 通訊證書得到授權。節點在區塊鏈網路中獲取身份證書以獲得身份授權。節點每傳送一 筆交易必須擁有交易證書才能執行。金鑰管理:金鑰管理的框架與許可權管理結構相對應, 不同級別的許可權對應不同級別的金鑰,當使用者獲取相應的證書後,可以在金鑰管理模組 申請金鑰。
2.隱私模組
隱私模組提供加密合約相關服務以及各類隱私解決方案。
加密合約:對有隱私需求的智慧合約,提供了加密合約解決方案。在加密合約中,智慧 合約中的資訊是經過加密的,呼叫合約的交易也是加密的。私密交易採用區域性共識的方 法,一筆私密交易的執行分為兩步:第一步是預處理,將隱私交易轉成一筆普通交易 [S1=>S2](S1 和 S2 分別為交易執行前後智慧合約的密文狀態);第二步是將[S1=>S2] 做為一筆普通交易打包進區塊。
隱私解決方案:安鏈針對不同場景提供了不同的隱私解決方案,如多方計算和 PGP 通訊。 透過安全多方計算,安鏈可以實現隱私的原始資料的完全隔離訪問。PGP 安全通訊解決 方案為安鏈帶來了快速安全的資料分享服務。
3.分散式賬本
分散式賬本模組提供賬戶服務,交易服務,智慧合約服務以及外部資料服務。
賬戶服務:賬戶服務提供賬戶通用服務,包括地址生成以及編碼,金鑰對生成和管理, 簽名服務等。
交易:安鏈支援三種交易:部署程式碼交易、程式碼呼叫交易和程式碼升級交易。部署程式碼是 將智慧合約部署至區塊鏈,而程式碼呼叫則是執行鏈上程式碼。值得一提的是,安鏈引入代 碼升級交易的概念,即可以升級已部署的程式碼,在這個過程中,驗證節點必須保證其執 行環境的真實性與完整性。
智慧合約服務:智慧合約服務提供智慧合約的執行。提供執行的虛擬環境,和標準化的 合約解釋邏輯,保證同樣的交易有相同的執行結果。
外部資料服務:傳統的區塊鏈就像是一個與世隔絕的花園,區塊鏈裡的智慧合約沒法主 動拿到外部資料。為解決這個問題,安鏈中引入了外部資料服務。外部資料服務在安鏈 中承擔著可信資料來源的角色。當智慧合約有外部資料需求時,只需要在外部資料服務中 登記。外部資料服務會根據要求獲取外部資料,供智慧合約呼叫。
4.監控與分析
監控與分析模組由區塊鏈瀏覽器,健康監控及資料分析模組組成。
區塊鏈瀏覽器:實時顯示最新區塊、交易、合約和賬戶資訊,提供搜尋功能,可根據交 易、地址、區塊資訊查詢相關資訊,並提供智慧合約說明。
資料分析:提供了各種標準化的資料查詢介面以及批次匯出的定製化服務,以滿足各種 資料需求,如審計、監管等。
監控模組:實現了對底層區塊鏈健康狀態的實時監控,包括物理狀態(CPU 溫度、記憶體、 磁碟)、網路狀態(時延、斷線)及應用狀態(區塊生成、交易驗證)。
5.儲存
安鏈含有兩方面的鏈外儲存模組。IPFS 用來在鏈外儲存大型檔案,而結構化儲存用來 儲存結構化記錄,並且支援結構化查詢語言。
IPFS 模組:安鏈為支援大檔案儲存,引入了 IPFS 技術。檔案透過 hash 儲存,具有防 篡改、永不丟失、防洩漏和訪問安全等特性,避免意外事故對資料安全的衝擊,確保用 戶資訊、電子保單、客戶資訊、電子合約、資產證明、理賠憑證等資訊的永久儲存,保 證資料安全和使用者隱私的不可洩露和丟失。
結構化儲存模組:結構化儲存用來儲存結構化記錄,並且同區塊鏈上的記錄保持同步。
更多區塊鏈資訊:http://www.qukuaiwang.com.cn/news