區(qū)塊鏈服務(wù) BaaS 介紹
阿里云區(qū)塊鏈服務(wù)(Blockchain as a Service,簡稱BaaS)是一種基于主流技術(shù)的區(qū)塊鏈平臺(tái)服務(wù),由螞蟻區(qū)塊鏈團(tuán)隊(duì)提供技術(shù)支持。它可以幫助您快速構(gòu)建更穩(wěn)定、安全的生產(chǎn)級(jí)區(qū)塊鏈環(huán)境,大幅減少在區(qū)塊鏈部署、運(yùn)維、管理、應(yīng)用開發(fā)等方面的挑戰(zhàn),使您更專注于核心業(yè)務(wù)創(chuàng)新,并實(shí)現(xiàn)業(yè)務(wù)快速上鏈。
本文從以下維度為您介紹阿里云BaaS服務(wù):
為什么選擇阿里云區(qū)塊鏈服務(wù)?
多種區(qū)塊鏈技術(shù)引擎支持:支持主流開源區(qū)塊鏈技術(shù)Hyperledger Fabric、企業(yè)以太坊Quorum,以及具備核心技術(shù)能力的金融級(jí)別技術(shù)螞蟻區(qū)塊鏈,滿足多種用戶需求。
螞蟻區(qū)塊鏈,是螞蟻?zhàn)灾餮邪l(fā)的高性能、全球部署、極強(qiáng)隱私保護(hù)的金融級(jí)聯(lián)盟區(qū)塊鏈技術(shù),更多關(guān)于螞蟻區(qū)塊鏈的介紹請(qǐng)參見頁面下方螞蟻區(qū)塊鏈介紹。
Hyperledger Fabric,是由Linux基金會(huì)托管的開源企業(yè)級(jí)區(qū)塊鏈技術(shù),是開放式、標(biāo)準(zhǔn)化的區(qū)塊鏈技術(shù)生態(tài)的代表。
企業(yè)以太坊Quorum,是摩根大通(J.P. Morgan)基于以太坊開發(fā)的面向企業(yè)場景、符合EEA(Enterprise Ethereum Alliance)規(guī)范的開源企業(yè)級(jí)區(qū)塊鏈技術(shù)。
一鍵式部署:阿里云區(qū)塊鏈服務(wù)幫助用戶一鍵式快速創(chuàng)建和部署生產(chǎn)級(jí)區(qū)塊鏈環(huán)境,提供圖形化的區(qū)塊鏈管理運(yùn)維能力,實(shí)現(xiàn)參與企業(yè)和業(yè)務(wù)的動(dòng)態(tài)添加,簡化區(qū)塊鏈的部署流程和應(yīng)用配置。
隔離性:基于阿里云區(qū)塊鏈服務(wù)創(chuàng)建的聯(lián)盟鏈網(wǎng)絡(luò),建立在云計(jì)算多租戶隔離(包括計(jì)算/存儲(chǔ)/網(wǎng)絡(luò)等資源的隔離)的基礎(chǔ)之上,保證了區(qū)塊鏈業(yè)務(wù)參與方的獨(dú)立性和自治性。
跨地域:業(yè)務(wù)參與方可分布于不同的地域,實(shí)現(xiàn)跨地域聯(lián)盟網(wǎng)絡(luò)的建立。例如,聯(lián)盟鏈網(wǎng)絡(luò)中的各方(運(yùn)營方和參與方)可以分別部署于三個(gè)不同的城市。
阿里云BaaS服務(wù)還提供了廣泛的接入方式、動(dòng)態(tài)的資源創(chuàng)建和彈性可擴(kuò)展能力,以及多維度的安全和隱私保護(hù)機(jī)制,同時(shí)在成本上也具備更靈活的優(yōu)勢(shì)。 更多阿里云BaaS優(yōu)勢(shì)請(qǐng)參見 產(chǎn)品優(yōu)勢(shì) 章節(jié)。
如何使用阿里云區(qū)塊鏈服務(wù)?
基于Hyperledger Fabric、螞蟻區(qū)塊鏈已商用,企業(yè)以太坊Quorum的BaaS服務(wù)目前正火熱公測中。
螞蟻區(qū)塊鏈
螞蟻區(qū)塊鏈?zhǔn)褂媚J饺缦聢D所示。
聯(lián)盟管理方發(fā)起申請(qǐng)聯(lián)盟鏈創(chuàng)建,然后邀請(qǐng)其它聯(lián)盟參與方加入。聯(lián)盟參與方接受邀請(qǐng)加入聯(lián)盟后,對(duì)聯(lián)盟鏈的共識(shí)節(jié)點(diǎn)進(jìn)行訪問、讀寫,具體的使用流程如下。
開通服務(wù)。您可以在 BaaS 產(chǎn)品首頁,參考 選購指南 章節(jié)開通 BaaS 服務(wù)。
申請(qǐng)區(qū)塊鏈
您可以在控制臺(tái),申請(qǐng)加入?yún)^(qū)塊鏈或者申請(qǐng)創(chuàng)建聯(lián)盟鏈。具體請(qǐng)參見 管理聯(lián)盟區(qū)塊鏈。
管理區(qū)塊鏈
進(jìn)入控制臺(tái)管理頁面后,您可以邀請(qǐng)其它用戶加入您的聯(lián)盟鏈,審核其他聯(lián)盟方加入的申請(qǐng),管理節(jié)點(diǎn),查看區(qū)塊鏈詳情等操作。具體請(qǐng)參見 創(chuàng)建聯(lián)盟。
訪問區(qū)塊鏈網(wǎng)絡(luò)
通過 開發(fā)指南,訪問區(qū)塊鏈網(wǎng)絡(luò)。
Hyperledger Fabric
由運(yùn)營企業(yè)創(chuàng)建聯(lián)盟,各個(gè)業(yè)務(wù)參與方創(chuàng)建組織。然后運(yùn)營企業(yè)邀請(qǐng)各個(gè)業(yè)務(wù)參與方加入聯(lián)盟以及對(duì)應(yīng)的業(yè)務(wù)通道。在這種模式下,聯(lián)盟的基礎(chǔ)設(shè)施運(yùn)營由一家受委托的企業(yè)負(fù)責(zé),其他參與方作為進(jìn)行業(yè)務(wù)協(xié)作和交易的角色共同參與。運(yùn)營企業(yè)自己也可作為參與方創(chuàng)建組織,進(jìn)而加入聯(lián)盟及通道。
使用流程
開通服務(wù)。您可以在BaaS產(chǎn)品首頁,參考選購指南章節(jié)開通BaaS服務(wù)。
創(chuàng)建區(qū)塊鏈網(wǎng)絡(luò)
進(jìn)行創(chuàng)建組織、創(chuàng)建聯(lián)盟、組織加入聯(lián)盟、創(chuàng)建通道的操作。具體請(qǐng)參見使用流程。
部署鏈碼
包括上傳鏈碼、安裝鏈碼、實(shí)例化鏈碼的操作。具體請(qǐng)參見部署鏈碼。
訪問區(qū)塊鏈網(wǎng)絡(luò)
企業(yè)以太坊Quorum
開通服務(wù)。您可以在 BaaS 產(chǎn)品首頁,參考 選購指南 章節(jié)開通 BaaS 服務(wù)。
創(chuàng)建區(qū)塊鏈網(wǎng)絡(luò)
您可以在控制臺(tái)創(chuàng)建企業(yè)以太坊Quorum區(qū)塊鏈網(wǎng)絡(luò)。具體請(qǐng)參見創(chuàng)建一個(gè)區(qū)塊鏈網(wǎng)絡(luò)。
管理區(qū)塊鏈
您可以邀請(qǐng)阿里云用戶參與到Quorum區(qū)塊鏈網(wǎng)絡(luò)中,然后添加來自于阿里云BaaS的Quorum節(jié)點(diǎn),具體請(qǐng)參見邀請(qǐng)阿里云BaaS用戶加入和添加來自阿里云BaaS的節(jié)點(diǎn);也可以直接添加來自于其他云平臺(tái)(如AWS、Azure)或者私有部署環(huán)境的Quorum節(jié)點(diǎn),具體請(qǐng)參見添加外部節(jié)點(diǎn)。
部署智能合約
在完成智能合約的開發(fā)后,您可以編譯和部署智能合約,以及發(fā)送交易調(diào)用智能合約,具體請(qǐng)參見使用solc編譯智能合約、使用geth部署智能合約和使用geth發(fā)送交易。
阿里云區(qū)塊鏈服務(wù)API介紹
區(qū)塊鏈服務(wù)API在區(qū)塊鏈底層技術(shù)原生API之上進(jìn)行了擴(kuò)展,支持對(duì)區(qū)塊鏈服務(wù)相關(guān)的區(qū)塊鏈對(duì)象和云資源對(duì)象的操作,并簡化了原生API對(duì)區(qū)塊鏈服務(wù)的管理、運(yùn)維、調(diào)用等復(fù)雜過程,使得用戶可以方便地通過API對(duì)區(qū)塊鏈聯(lián)盟、組織、節(jié)點(diǎn)、通道、智能合約、底層資源、日志、配置信息等對(duì)象進(jìn)行管理和維護(hù)。
區(qū)塊鏈服務(wù)API支持HTTP和HTTPS請(qǐng)求,同時(shí)要求使用阿里云賬戶生成的Access Key ID和Access Key Secret進(jìn)行身份驗(yàn)證,以保證API調(diào)用的安全性。
此外,您還可以通過阿里云OpenAPI Explorer, 以圖形化網(wǎng)頁方式,快速檢索和可視化調(diào)試區(qū)塊鏈服務(wù)的API。
如需了解和開始使用區(qū)塊鏈服務(wù)API,請(qǐng)參見API參考。
螞蟻區(qū)塊鏈介紹
螞蟻區(qū)塊鏈通過引入 P2P 網(wǎng)絡(luò)、共識(shí)算法、虛擬機(jī)、智能合約、密碼學(xué)、數(shù)據(jù)存儲(chǔ)等技術(shù)特性,構(gòu)建一個(gè)穩(wěn)定、高效、安全的圖靈完備智能合約執(zhí)行環(huán)境,提供賬戶的基本操作以及面向智能合約的功能調(diào)用。基于螞蟻區(qū)塊鏈提供的能力和功能特性,應(yīng)用開發(fā)者能夠完成基本的賬戶創(chuàng)建、合約調(diào)用、結(jié)果查詢、事件監(jiān)聽等。
邏輯架構(gòu)
螞蟻區(qū)塊鏈邏輯架構(gòu)圖如下圖所示。
核心邏輯
螞蟻區(qū)塊鏈核心邏輯如下圖所示。
功能特性
賬戶模型與狀態(tài)轉(zhuǎn)換
螞蟻區(qū)塊鏈采用的新型賬戶模型設(shè)計(jì)能夠支持多重簽名機(jī)制與私鑰恢復(fù)機(jī)制,從而解決了賬戶控制權(quán)重問題與單一私鑰丟失導(dǎo)致賬戶不可用的問題。出于安全性考慮,螞蟻區(qū)塊鏈基于密碼學(xué)與鏈?zhǔn)浇Y(jié)構(gòu),通過簽名機(jī)制實(shí)現(xiàn)交易數(shù)據(jù)的不可篡改性和不可偽造性。
智能合約
智能合約實(shí)質(zhì)上是一套以數(shù)字形式定義的承諾(Promises),包括合約參與方可以在上面執(zhí)行這些承諾的協(xié)議。螞蟻區(qū)塊鏈基于此定義設(shè)計(jì)了自己的智能合約平臺(tái),支持智能合約的拓展能力,能夠基于智能合約編寫圖靈完備的業(yè)務(wù)邏輯來實(shí)現(xiàn)豐富的業(yè)務(wù)場景。
合約生命周期
螞蟻區(qū)塊鏈中,一份智能合約的典型的生命周期覆蓋合約編寫、合約編譯、合約部署、合約調(diào)用、合約升級(jí)、合約凍結(jié)六個(gè)環(huán)節(jié)。
合約類型
螞蟻區(qū)塊鏈提供圖靈完備的智能合約能力,目前提供對(duì) EVM、Native、MYVM、Precompiled 合約類型的支持。其中,MYVM 合約類型,由螞蟻?zhàn)匝械?MYVM 虛擬機(jī)類型支持,以 LLVM(Low Level Virtual Machine)編譯模型支持多種合約編程語言(如 Solidity 和 C++),支持更優(yōu)秀的性能,以及更出色的開發(fā)者友好特性。
合約擴(kuò)展
螞蟻區(qū)塊鏈智能合約提供了多種形式的合約擴(kuò)展能力,包括 RSA 驗(yàn)簽、Base64 編解碼、上下文獲取、JSON & XML 解析等。
存儲(chǔ)設(shè)計(jì)
螞蟻區(qū)塊鏈具備以下存儲(chǔ)能力:
數(shù)據(jù)存儲(chǔ)
數(shù)據(jù)存儲(chǔ)分為本地文件系統(tǒng)的 KV 數(shù)據(jù)庫存儲(chǔ)以及上層的抽象世界狀態(tài)數(shù)據(jù)存儲(chǔ)。螞蟻區(qū)塊鏈智能合約平臺(tái)的對(duì)象存儲(chǔ)利用特定的樹狀數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)來達(dá)到全局狀態(tài)快速計(jì)算摘要。
世界狀態(tài)存儲(chǔ)
螞蟻區(qū)塊鏈中,合約對(duì)象分為成員變量、成員函數(shù)。其中,成員變量存儲(chǔ)在合約狀態(tài)(Storage)中;成員函數(shù)存儲(chǔ)在合約代碼(Code)中。合約代碼與合約狀態(tài)數(shù)據(jù)分離,為合約狀態(tài)以及世界狀態(tài)提供了唯一穩(wěn)態(tài) Hash 值的計(jì)算,同時(shí)支持樹上節(jié)點(diǎn)快速索引、更新。
歷史數(shù)據(jù)
螞蟻區(qū)塊鏈中,不同的區(qū)塊擁有不同的全局狀態(tài)根哈希。根據(jù)不同區(qū)塊和不同的全局狀態(tài)根哈希,可以構(gòu)造出不同的全局狀態(tài)歷史樹,進(jìn)而查詢到不同歷史狀態(tài)下的數(shù)據(jù)。
共識(shí)協(xié)議
在螞蟻區(qū)塊鏈中,共識(shí)協(xié)議被定義成使分布式系統(tǒng)中的節(jié)點(diǎn)快速有效地達(dá)成數(shù)據(jù)的一致性,即確保所有誠實(shí)節(jié)點(diǎn)以完全相同的順序執(zhí)行共識(shí)結(jié)論中交易,達(dá)成數(shù)據(jù)一致性,同時(shí)正確的客戶端發(fā)送的有效交易請(qǐng)求最終會(huì)被處理和應(yīng)答。螞蟻區(qū)塊鏈平臺(tái)的共識(shí)組件通過提供不同的共識(shí)插件來實(shí)現(xiàn)共識(shí)協(xié)議。目前,螞蟻區(qū)塊鏈系統(tǒng)中已實(shí)現(xiàn)的共識(shí)算法包括 PBFT 和 ABFT。
PBFT(Practical Byzantine Fault Tolerance)共識(shí)協(xié)議支持系統(tǒng)中不超過 1/3 的節(jié)點(diǎn)容錯(cuò)性。通過 PrePrepare、Prepare、Commit 的三階段提交協(xié)議來實(shí)現(xiàn)網(wǎng)絡(luò)共識(shí)節(jié)點(diǎn)之間的交易數(shù)據(jù)的一致性。螞蟻區(qū)塊鏈提供的 PBFT 共識(shí)插件具有快速終止、恢復(fù)可靠、狀態(tài)同步等特性。
ABFT(Asynchronous Byzantine Fault Tolerance)是一個(gè)滿足拜占庭要求的異步共識(shí)協(xié)議,具備無主節(jié)點(diǎn)、異步交互、支持較大節(jié)點(diǎn)規(guī)模、拜占庭容錯(cuò)等優(yōu)勢(shì),但實(shí)現(xiàn)復(fù)雜程度較高。具體而言,螞蟻區(qū)塊鏈的 ABFT 共識(shí)插件可以有效地降低網(wǎng)絡(luò)帶寬負(fù)載,以及防止選擇性共識(shí)問題。
虛擬機(jī)
虛擬機(jī)的職責(zé)是,在特定的執(zhí)行環(huán)境下通過一組指定的字節(jié)碼指令來指定螞蟻區(qū)塊鏈狀態(tài)機(jī)抽象模型的全局狀態(tài)的更改方式。除螞蟻?zhàn)灾餮邪l(fā)的類 EVM 虛擬機(jī)插件,螞蟻區(qū)塊鏈還提供 MYVM、Native 虛擬機(jī)插件。EVM 虛擬機(jī)插件支持流行的 Solidity 合約語言;MYVM 虛擬機(jī)插件以 LLVM 編譯模型支持多種合約編程語言。
安全機(jī)制
螞蟻區(qū)塊鏈的安全機(jī)制主要分為網(wǎng)絡(luò)安全、數(shù)據(jù)安全、存儲(chǔ)安全三個(gè)維度。
網(wǎng)絡(luò)安全:客戶端和節(jié)點(diǎn)通過 CA 中心獲取 TLS 證書,客戶端與節(jié)點(diǎn)、節(jié)點(diǎn)與節(jié)點(diǎn)間實(shí)行 TLS 雙向認(rèn)證,且通信流量經(jīng) TLS 加密,抵御中間人攻擊。除了基本的證書驗(yàn)證外,節(jié)點(diǎn)與節(jié)點(diǎn)之間還增加了握手邏輯,通過在握手過程中添加驗(yàn)證對(duì)方節(jié)點(diǎn)私鑰簽名的方式來確保節(jié)點(diǎn)間通信的可靠。
數(shù)據(jù)安全:交易使用用戶私鑰簽名,保證交易內(nèi)容無法篡改。
存儲(chǔ)安全:數(shù)據(jù)多節(jié)點(diǎn)存儲(chǔ),單節(jié)點(diǎn)數(shù)據(jù)丟失不影響整個(gè)網(wǎng)絡(luò),節(jié)點(diǎn)間數(shù)據(jù)同步機(jī)制保障數(shù)據(jù)的正確復(fù)制,提供數(shù)據(jù)歸檔工具,可以歸檔數(shù)據(jù)并使用傳統(tǒng)方式備份。
可信執(zhí)行環(huán)境與跨鏈技術(shù)
螞蟻區(qū)塊鏈基于硬件可信執(zhí)行環(huán)境(TEE)提供強(qiáng)隱私和高性能的鏈上數(shù)據(jù)隱私保護(hù)服務(wù),可以對(duì)敏感交易數(shù)據(jù)提供全鏈路、全生命周期的隱私保護(hù)。螞蟻區(qū)塊鏈的跨鏈技術(shù)包括三個(gè)組成部分:UDAG 跨鏈協(xié)議、跨鏈合約服務(wù)、基于 TEE 的 Oracle 集群服務(wù)。螞蟻區(qū)塊鏈?zhǔn)褂每尚庞?jì)算環(huán)境打造可以外部數(shù)據(jù)調(diào)用的 Oracle 集群,解決區(qū)塊鏈協(xié)議只能訪問鏈上數(shù)據(jù)的局限性問題。
信任構(gòu)建與系統(tǒng)治理
螞蟻區(qū)塊鏈聯(lián)盟的信任構(gòu)建機(jī)制主要有創(chuàng)世信任、基礎(chǔ)信任、共識(shí)信任、輸入信任、治理信任、可驗(yàn)證信任。這些信任構(gòu)建機(jī)制共同建立了螞蟻區(qū)塊鏈聯(lián)盟的高度可信任的特征。螞蟻區(qū)塊鏈提供聯(lián)盟管理能力,即對(duì)具體區(qū)塊鏈聯(lián)盟的成員結(jié)構(gòu)的治理能力。