什么是區(qū)塊鏈?
根據(jù)工信部指導發(fā)布的《區(qū)塊鏈技術和應用發(fā)展白皮書》的解釋:
狹義的講,區(qū)塊鏈是一種按照時間順序將數(shù)據(jù)區(qū)塊以順序相連的方式組合成的一種鏈式數(shù)據(jù)結構,并以密碼學方式保證不可篡改和不可偽造的分布式賬本。
廣義來講,區(qū)塊鏈技術是利用鏈式數(shù)據(jù)結構來驗證和存儲數(shù)據(jù)、利用分布式節(jié)點共識算法來生成和更新數(shù)據(jù)、利用密碼學的方式保證數(shù)據(jù)傳輸和訪問的安全性、利用由自動化腳本代碼組成的智能合約來編程和操作數(shù)據(jù)的一種全新的分布式基礎架構與計算模式。
顧名思義,區(qū)塊鏈(blockchain)是一種數(shù)據(jù)以區(qū)塊(block)為單位產(chǎn)生和存儲,并按照時間順序首尾相連形成鏈式(chain)結構,同時通過密碼學保證不可篡改、不可偽造及數(shù)據(jù)傳輸訪問安全的去中心化分布式賬本。區(qū)塊鏈中所謂的賬本,其作用和現(xiàn)實生活中的賬本基本一致,按照一定的格式記錄流水等交易信息。特別是在各種加密數(shù)字貨幣中,交易內容就是各種轉賬信息。只是隨著區(qū)塊鏈的發(fā)展,記錄的交易內容由各種轉賬記錄擴展至各個領域的數(shù)據(jù)。比如,在供應鏈溯源應用中,區(qū)塊中記錄了供應鏈各個環(huán)節(jié)中物品所處的責任方、位置等信息。
區(qū)塊鏈技術是一個技術合集,它包含共享賬本、共識算法、安全隱私和智能合約等技術組成,具有多中心化、共識可信、不可篡改、可追溯等特性。
區(qū)塊鏈的特點
區(qū)塊鏈是多種已有技術的集成創(chuàng)新,主要用于實現(xiàn)多方信任和高效協(xié)同。通常,一個成熟的區(qū)塊鏈系統(tǒng)具備透明可信、防篡改可追溯、隱私安全保障以及系統(tǒng)高可靠四大特點。
1、透明可信
在去中心化的系統(tǒng)中,網(wǎng)絡中的所有節(jié)點均是對等節(jié)點,大家平等地發(fā)送和接收網(wǎng)絡中的消息。所以,系統(tǒng)中的每個節(jié)點都可以完整觀察網(wǎng)絡中的全部行為,并將觀察到的這些行為在各個節(jié)點維護一個本地賬本,整個系統(tǒng)對于每個節(jié)點都具有透明性。區(qū)塊鏈系統(tǒng)是典型的去中心化系統(tǒng),網(wǎng)絡中的所有交易對所有節(jié)點均是透明可見的,而交易的最終確認也由共識算法保證了在所有節(jié)點間的一致性。所以整個系統(tǒng)對所有節(jié)點均是透明、公平的,系統(tǒng)中的信息具有可信性。所謂共識,簡單地理解就是指大家都達成一致的意思。其實在現(xiàn)實生活中,有很多需要達成共識的場景,如投票選舉、開會討論、多方簽訂一份合作協(xié)議等。而在區(qū)塊鏈系統(tǒng)中,所有節(jié)點共同參與共識過程,共識算法則保證了所有節(jié)點的賬本一致。
2、防篡改可追溯
“防篡改”和“可追溯”可以被拆開來理解,現(xiàn)在很多區(qū)塊鏈應用都利用了防篡改可追溯這一特性,使得區(qū)塊鏈技術在溯源等場景得到了廣泛應用?!胺来鄹摹笔侵附灰滓坏┰谌W(wǎng)范圍內經(jīng)過驗證并添加至區(qū)塊鏈,就很難被修改或者抹除。當前在聯(lián)盟鏈中普遍采用的PBFT一類的共識算法保證數(shù)據(jù)一旦寫入就無法篡改。而對于以比特幣為代表的部分公有鏈系統(tǒng)采用了PoW作為共識算法,其篡改的難度大且其激勵模型保證了篡改行為的不值得,攻擊者需要控制全網(wǎng)超過51%的算力才能進行交易篡改,代價極其高昂。因為掌握51%的算力需要大量資金成本,而攻擊行為一旦發(fā)生,區(qū)塊鏈網(wǎng)絡雖然最終會接受攻擊者計算的結果,但是攻擊過程仍然會被全網(wǎng)見證,當人們發(fā)現(xiàn)這套區(qū)塊鏈系統(tǒng)已經(jīng)被控制以后便不再會相信和使用這套系統(tǒng),這套系統(tǒng)也就失去了價值,攻擊者為購買算力而投入的大量資金便無法收回成本,所以一個理智的個體不會進行這種類型的攻擊?!翱勺匪荨笔侵竻^(qū)塊鏈上發(fā)生的任意一筆交易都是有完整記錄的,我們可以針對某一狀態(tài)在區(qū)塊鏈上追查與其相關的全部歷史交易?!胺来鄹摹碧匦员WC了寫入到區(qū)塊鏈上的交易很難被篡改,這為“可追溯”特性提供了保證。
3、隱私安全保障
由于區(qū)塊鏈系統(tǒng)中的任意節(jié)點都包含完整的區(qū)塊校驗邏輯,所以任意節(jié)點都不需要依賴其他節(jié)點完成區(qū)塊鏈中交易的確認過程,也就是無須額外地信任其他節(jié)點。“去信任”的特性使得節(jié)點之間不需要互相公開身份,因為任意節(jié)點都不需要根據(jù)其他節(jié)點的身份進行交易有效性的判斷,這為區(qū)塊鏈系統(tǒng)保護用戶隱私提供了基礎。區(qū)塊鏈系統(tǒng)中的用戶通常通過公私鑰體系中的私鑰對身份進行控制,并使用與私鑰對應的公鑰,或公鑰經(jīng)密碼學變換得到的地址作為唯一的身份標識,用戶只要擁有私鑰即可參與區(qū)塊鏈上的各類交易,至于是誰持有該私鑰則不是區(qū)塊鏈所關注的事情,區(qū)塊鏈也不會去記錄用戶與公私鑰的對應關系,所以區(qū)塊鏈系統(tǒng)知道某個私鑰的持有者在區(qū)塊鏈上進行了哪些交易,但并不知曉這個持有者是誰,從而在一定程度上保護了用戶的隱私。
4、系統(tǒng)高可靠
區(qū)塊鏈系統(tǒng)的高可靠體現(xiàn)在以下方面:(1)每個節(jié)點對等地維護一個賬本并參與整個系統(tǒng)的共識,也就是說,即使其中某個節(jié)點發(fā)生了故障,都不影響整個系統(tǒng)的正常運轉。(2) 區(qū)塊鏈系統(tǒng)支持拜占庭容錯。
區(qū)塊鏈關鍵技術一——密碼學
區(qū)塊鏈作為綜合性技術產(chǎn)物,密碼學是其基石技術之一。密碼學技術使區(qū)塊鏈具備了不可篡改、消息(身份)驗證、通信安全、存儲安全、隱私保護等眾多能力和特性。
從技術角度來看,主流區(qū)塊鏈系統(tǒng)都會使用如下密碼學技術:哈希算法、非對稱加密算法、數(shù)字簽名算法、數(shù)字證書、對稱加密算法。對于一些高階使用場景,還會使用到可信執(zhí)行環(huán)境(TEE)、同態(tài)加密、零知識證明等技術。
1、哈希運算
哈希算法(Hash Algorithm)即散列算法的直接音譯。其基本功能概括來說,就是把任意長度的輸入信息通過一定的計算,生成一個固定長度的輸出。
哈希運算的特性
正向快速: 對給定輸入信息,通過哈希算法,可以在極短時間內快速計算得到哈希值。
逆向困難: 根據(jù)哈希值逆向運算出原輸入值在計算上是不可行的,即該運算不存在一個多項式時間的算法。
輸入敏感: 輸入信息發(fā)生任何微小變化,哪怕僅僅是一個字符的更改,重新生成的哈希值與原哈希值也會有天壤之別。
強抗碰撞性: 很難找到兩個不同的輸入可以產(chǎn)生相同的哈希輸出。
2、數(shù)字簽名算法
簽名的作用簽名相信大家都不陌生,作為確定身份、責任認定的重要手段,各種重要文件、合同等均需要簽名確認。同一個字,不同的人寫出來雖然含義完全相同,但是字跡這種附加值是完全不同的,刻意模仿也能通過專業(yè)的手段進行鑒別。因為簽名具有身份標識和不可否認性,所以可以通過簽名來確定身份及定責。數(shù)字簽名即通過一定算法實現(xiàn)類似傳統(tǒng)物理簽名的效果。
數(shù)字簽名并不是指通過圖像掃描、電子板錄入等方式獲取物理簽名的電子版,而是通過密碼學領域相關算法實現(xiàn)。一套數(shù)字簽名算法一般包含簽名和驗簽兩種運算,數(shù)據(jù)經(jīng)過簽名后,非常容易驗證完整性,并且不可抵賴。只需要使用配套的驗簽方法驗證即可,不必像傳統(tǒng)物理簽名一樣需要專業(yè)手段鑒別。通過簽名和驗簽,保證了一段消息來自對的人,而且傳輸過程中沒有被篡改過,即消息簽名者可驗證,消息完整性可驗證。
數(shù)字簽名在區(qū)塊鏈中的用法
在區(qū)塊鏈網(wǎng)絡中,每個節(jié)點或用戶都擁有一對公、私鑰。節(jié)點(用戶)發(fā)送交易時,使用私鑰對交易內容生成一段數(shù)字簽名,將簽名以及公鑰附加在交易中。其他節(jié)點收到廣播消息后,首先利用公鑰,對交易中附加的數(shù)字簽名進行驗證。只有簽名驗證通過,才能證明該交易在傳播過程中的完整性未被破壞,且交易確實由公鑰對應的私鑰簽名發(fā)出,從而認定該交易為一筆有效交易,進而觸發(fā)后續(xù)交易執(zhí)行、交易排序共識等處理流程。
目前在區(qū)塊鏈中常見的數(shù)字簽名算法包括ECDSA、Ed25519以及國密SM2。
3、數(shù)字證書
數(shù)字證書是指在互聯(lián)網(wǎng)通信過程中,標識通信各方身份信息的一個數(shù)字標識。它本質上是一種電子文檔,由權威的證書簽發(fā)機構簽發(fā),借助數(shù)字簽名等密碼學手段,在網(wǎng)絡上安全、有效地代表真實世界中的某種身份。如同數(shù)字簽名技術構筑于非對稱加密技術之上,數(shù)字證書技術又是構筑于數(shù)字簽名技術之上。
數(shù)字證書中有一個概念CA(Certificate Authority)———認證中心。CA被認為是可信機構(信任根,作為整個體系中信任關系的基礎),用來審核用戶的證書制作請求,并給合法用戶“簽發(fā)”證書。在CA 機構中,保存著一對公、私鑰,私鑰被稱作根密鑰(ca.key),公鑰保存在證書中,這本證書被稱作根CA證書(ca.crt)。當用戶向CA機構申請證書時,會遞交一份申請材料。CSR文件中包含用戶的身份信息(如,域名/用戶名、國家、省份、公司等)、該用戶的公鑰以及該用戶的私鑰對身份信息的簽名。CA機構會審核申請者的真實身份(如,實名認證),并利用用戶公鑰驗證CSR文件的簽名(驗證是否是私鑰的持有者生成了當前這份CSR文件)。當所有審核通過后,CA機構會使用根密鑰對CSR文件進行簽名,在補充其他附加信息后,形成一本完整的證書(server.crt)。
在實際使用中,證書的簽發(fā)過程有可能是多級的,即根CA 機構簽發(fā)中級CA 的證書,中級CA機構簽發(fā)下一級的證書,形成一個鏈式結構。如下圖:
證書簽發(fā)過程示意圖
如何驗證證書server.crt的真實性: 驗證方(比如,訪問https網(wǎng)站的瀏覽器,或者區(qū)塊鏈中的節(jié)點等)首先從可信的渠道拿到CA根證書,這個可信渠道可以是CA 機構的官方網(wǎng)站,也可以在系統(tǒng)部署啟動的時候預置到系統(tǒng)中。通過CA 根證書中的公鑰,驗證ca.key對server.crt的簽名,驗證通過后,則可以確信server.crt是一本真實可信的身份證書,可以作為身份判斷的依據(jù)。
同樣,證書的驗證過程也可能是多級的,如下圖示。
證書驗證過程的關鍵是保證根CA 證書(包括中級CA 證書)來源的可靠性,CA 作為信任根,一旦來源不可靠,那整個證書驗證鏈條將變得不可靠。在確認server.crt真實可信之后,就可以提取server.crt中包含的公鑰,作為可信公鑰,來驗證server.crt所代表的用戶發(fā)過來的消息中的簽名。
證書驗證過程示意圖
區(qū)塊鏈關鍵技術二——共識算法
共識算法是區(qū)塊鏈技術的基礎和核心,決定了集群節(jié)點之間以何種方式對交易的執(zhí)行順序與內容達成一致,保障節(jié)點賬本數(shù)據(jù)的一致性。對區(qū)塊鏈系統(tǒng)而言,不同共識算法基于不同的基本假設,使用不同的實現(xiàn)方式,提供不同的故障容錯及節(jié)點參與方式等特性,其分類維度是多樣的。其中常見的維度歸納如下:
根據(jù)容錯類型
(1) 崩潰容錯共識(Crash Fault Tolerance Consensus)。能夠在節(jié)點消息存在延遲或丟失等崩潰錯誤的網(wǎng)絡中,確保分布式系統(tǒng)的正常節(jié)點間就特定數(shù)據(jù)達成一致的共識算法,稱為崩潰容錯共識算法。
(2) 拜占庭容錯共識(Byzantine Fault Tolerance Consensus)。能夠在節(jié)點消息存在延遲、丟失、重復甚至內容偽造等拜占庭錯誤的網(wǎng)絡中,確保分布式系統(tǒng)正常節(jié)點間就特定數(shù)據(jù)達成一致的共識算法,稱為拜占庭容錯共識算法。
根據(jù)節(jié)點身份認證
(1) 授權共識(Permissioned Consensus)。授權共識是指節(jié)點在通過身份認證后才能參與的共識機制。授權共識中,節(jié)點的加入與退出都是受管理的,因此共識節(jié)點數(shù)量相對穩(wěn)定,每個節(jié)點都能獲知參與節(jié)點數(shù)量和身份等信息。
(2) 非授權共識(Permissionless Consensus): 非授權共識是指節(jié)點不需要經(jīng)過身份認證,即可自由加入或退出共識流程的共識機制。非授權共識中,網(wǎng)絡中節(jié)點數(shù)量可能隨時變化,節(jié)點也無法獲知系統(tǒng)所有參與節(jié)點數(shù)量和身份等信息。
根據(jù)實現(xiàn)方式
(1) 基于純軟件實現(xiàn)共識。以純軟件的方式實現(xiàn)的共識算法,靈活性高、通用性強,但所有特性的實現(xiàn)都依賴CPU 算力和網(wǎng)絡帶寬,性能容易遇到瓶頸。
(2) 基于軟硬結合實現(xiàn)共識。以軟件與硬件結合的方式實現(xiàn)的共識算法,例如,以硬件安全能力提升抗攻擊性的共識算法。由于硬件的高性能與高可靠性,通常具有更優(yōu)異的性能表現(xiàn)與更強的穩(wěn)定性,但需要依賴特定的硬件環(huán)境,可移植性較弱。
共識算法類型豐富,并不存在適應所有場景需求的完美算法,因此需要設計者針對應用場景的關鍵需求進行合理設計與選型。
區(qū)塊鏈關鍵技術三——智能合約
智能合約的引入可謂是區(qū)塊鏈發(fā)展過程中的一個重要里程碑。區(qū)塊鏈從最初單一的加密數(shù)字貨幣應用,到今天融入社會生產(chǎn)生活的各個領域,智能合約的作用不容忽視。這些金融、政務服務、供應鏈、游戲等各種類別的應用,幾乎都是以智能合約的形式,運行在不同的區(qū)塊鏈平臺上。
智能合約的核心是當滿足了一定的觸發(fā)條件,就能被自動執(zhí)行。例如,拍賣行可以通過智能合約實現(xiàn)對某件商品的拍賣??梢栽O計這樣一個智能合約: 所有賬戶余額大于最新出價記錄的用戶都可以參與拍賣,對商品進行出價,出價成功的用戶會把其出價對應的金額打入到指定賬戶A中,如果有其他用戶出價更高,則歸還出價次高用戶的出價金額。假設小明先出價100元,這時智能合約會自動從小明賬戶中把100元打入到賬戶A 中,同時智能合約會記錄最高出價者和競拍金額; 后面的競拍者只有出價大于100元才能出價成功,假設此時小華出價101元,那么智能合約會自動將A賬戶中的100元返還到小明的賬戶,然后從小華的賬戶中把101元打入到賬戶A中,同時智能合約更新最高出價者和競拍金額; 最后在規(guī)定的時間內選出出價最高的競拍者L,拍賣結束,智能合約自動將A賬戶的錢打入受益人賬戶中。整個過程非常高效、簡單,不需要第三方的中間人進行裁決,也完全不會有賴賬問題。
隨著智能合約的普及,智能合約的編寫必然會越來越嚴謹、規(guī)范,同時,其開發(fā)門檻也會越來越低,對應領域的專家也可以參與到智能合約的開發(fā)工作中,智能合約必定能在更多的領域發(fā)揮越來越大的作用。
區(qū)塊鏈關鍵技術四——點對點網(wǎng)絡
傳統(tǒng)的網(wǎng)絡服務架構大部分是客戶端/服務端(Client/Server,C/S)架構,即通過一個中心化的服務端節(jié)點,對許多個申請服務的客戶端進行應答和服務。C/S架構也稱為主從式架構,其中服務端是整個網(wǎng)絡服務的核心,客戶端之間通信需要依賴服務端的協(xié)助。例如,當前流行的即時通信(Instant Message,IM)應用大多采用C/S架構: 手機端APP僅被作為一個客戶端使用,它們之間相互收發(fā)消息需要依賴中心服務器。也就是說,在手機客戶端之間進行消息收發(fā)時,手機客戶端會先將消息發(fā)給中心服務器,再由中心服務器轉發(fā)給接收方手機客戶端。
C/S架構應用非常成熟,優(yōu)勢也非常明顯: 中心化的服務端能夠保持一致的服務形式,方便對服務進行維護和升級,同時也便于管理。然而,C/S架構同樣也存在很多不足。首先,由于C/S架構采用中心化的服務端,因此當服務端節(jié)點發(fā)生故障時,整個服務都會陷入癱瘓。另外,服務端節(jié)點的處理能力是有限的,因此中心服務節(jié)點的性能往往成為整體網(wǎng)絡的瓶頸。
點對點網(wǎng)絡(Peer-to-Peer Networking,P2P網(wǎng)絡)是一種去中心化的互聯(lián)網(wǎng)信息交換方式,其消除了中心化的服務節(jié)點,將所有的網(wǎng)絡參與者視為對等者(Peer),并在他們之間進行任務和工作負載分配。P2P結構打破了傳統(tǒng)的C/S 模式,去除了中心服務器,是一種依靠用戶群共同維護的網(wǎng)絡結構,每個節(jié)點可以從任意(有能力的)節(jié)點處得到服務。由于節(jié)點間的數(shù)據(jù)傳輸不再依賴中心服務節(jié)點,P2P網(wǎng)絡具有極強的可靠性,用戶可以隨時加入或者退出網(wǎng)絡,任何單一或者少量節(jié)點故障都不會影響整個網(wǎng)絡正常運轉。同時,P2P網(wǎng)絡的網(wǎng)絡容量沒有上限,隨著節(jié)點數(shù)量的增加,整個網(wǎng)絡的資源也在同步增加,P2P網(wǎng)絡提供的服務質量也相應提高。
P2P網(wǎng)絡的這些特性對于去中心化的區(qū)塊鏈應用來說至關重要。在區(qū)塊鏈系統(tǒng)中,要求所有節(jié)點共同維護賬本數(shù)據(jù),即每筆交易都需要發(fā)送給網(wǎng)絡中的所有節(jié)點。如果按照傳統(tǒng)的C/S模式,中心節(jié)點需要將大量交易信息轉發(fā)給所有節(jié)點,這幾乎是不可能完成的任務。P2P網(wǎng)絡的設計思想與區(qū)塊鏈的理念完美契合。在區(qū)塊鏈中,所有交易及區(qū)塊的傳播并不要求發(fā)送者將消息發(fā)送給所有節(jié)點。節(jié)點只需要將消息發(fā)送給一定數(shù)量的相鄰節(jié)點即可,其他節(jié)點收到消息后,會按照一定的規(guī)則轉發(fā)給自己的相鄰節(jié)點。最終通過一傳十、十傳百的方式,最終將消息發(fā)送給所有節(jié)點。
活動對象:華為云電銷客戶及渠道伙伴客戶可參與消費滿送活動,其他客戶參與前請咨詢客戶經(jīng)理
活動時間: 2020年8月12日-2020年9月11日
活動期間,華為云用戶通過活動頁面購買云服務,或使用上云禮包優(yōu)惠券在華為云官網(wǎng)新購云服務,累計新購實付付費金額達到一定額度,可兌換相應的實物禮品。活動優(yōu)惠券可在本活動頁面中“上云禮包”等方式獲取,在華為云官網(wǎng)直接購買(未使用年中云鉅惠活動優(yōu)惠券)或參與其他活動的訂單付費金額不計入統(tǒng)計范圍內;
活動對象:華為云電銷客戶及渠道伙伴客戶可參與消費滿送活動,其他客戶參與前請咨詢客戶經(jīng)理
活動對象:華為云電銷客戶及渠道伙伴客戶可參與消費滿送活動,其他客戶參與前請咨詢客戶經(jīng)理
活動時間: 2020年8月12日-2020年9月11日
活動期間,華為云用戶通過活動頁面購買云服務,或使用上云禮包優(yōu)惠券在華為云官網(wǎng)新購云服務,累計新購實付付費金額達到一定額度,可兌換相應的實物禮品。活動優(yōu)惠券可在本活動頁面中上云禮包123等方式獲取,在華為云官網(wǎng)直接購買(未使用年中云鉅惠活動優(yōu)惠券)或參與其他活動的訂單付費金額不計入統(tǒng)計范圍內;
活動對象:華為云電銷客戶及渠道伙伴客戶可參與消費滿送活動,其他客戶參與前請咨詢客戶經(jīng)理
活動對象:華為云電銷客戶及渠道伙伴客戶可參與消費滿送活動,其他客戶參與前請咨詢客戶經(jīng)理
活動時間: 2020年8月12日-2020年9月11日
活動期間,華為云用戶通過活動頁面購買云服務,或使用上云禮包優(yōu)惠券在華為云官網(wǎng)新購云服務,累計新購實付付費金額達到一定額度,可兌換相應的實物禮品?;顒觾?yōu)惠券可在本活動頁面中“上云禮包”等方式獲取,在華為云官網(wǎng)直接購買(未使用年中云鉅惠活動優(yōu)惠券)或參與其他活動的訂單付費金額不計入統(tǒng)計范圍內;
活動對象:華為云電銷客戶及渠道伙伴客戶可參與消費滿送活動,其他客戶參與前請咨詢客戶經(jīng)理
-
區(qū)塊鏈的應用部署與運維
區(qū)塊鏈的應用已由開始的金融延伸到物聯(lián)網(wǎng)、智能制造、供應鏈管理、數(shù)據(jù)存證及交易等多個領域,將為云計算、大數(shù)據(jù)、承載網(wǎng)絡等新一代信息技術的發(fā)展帶來新的機遇,其構建的可信機制,將改變當前社會商業(yè)模式,從而引發(fā)新一輪的技術創(chuàng)新和產(chǎn)業(yè)變革。本期課程從基礎原理入門到實踐操作,循序漸進一站式學習。
-
區(qū)塊鏈專家服務
提供專屬區(qū)塊鏈開發(fā)實踐指導和咨詢,以“場景分析,技術培訓,架構設計,系統(tǒng)開發(fā)和系統(tǒng)上線”全面指導為設計思路,協(xié)助客戶高效、低成本的上線高質量的區(qū)塊鏈應用系統(tǒng)