一文讀懂區(qū)塊鏈技術(shù)邏輯和原理
區(qū)塊鏈?zhǔn)欠植际綌?shù)據(jù)存儲(chǔ)、點(diǎn)對(duì)點(diǎn)傳輸、共識(shí)機(jī)制、加密算法等計(jì)算機(jī)技術(shù)的新型應(yīng)用模式。所謂共識(shí)機(jī)制是區(qū)塊鏈系統(tǒng)中實(shí)現(xiàn)不同節(jié)點(diǎn)之間建立信任、獲取權(quán)益的數(shù)學(xué)算法。
區(qū)塊鏈(Blockchain)是比特幣的一個(gè)重要概念,貨幣聯(lián)合清華大學(xué)五道口金融學(xué)院互聯(lián)網(wǎng)金融實(shí)驗(yàn)室、新浪科技發(fā)布的《2014—2016全球比特幣發(fā)展研究報(bào)告》提到區(qū)塊鏈?zhǔn)潜忍貛诺牡讓蛹夹g(shù)和基礎(chǔ)架構(gòu)。本質(zhì)上是一個(gè)去中心化的數(shù)據(jù)庫(kù),同時(shí)作為比特幣的底層技術(shù)。區(qū)塊鏈?zhǔn)且淮褂妹艽a學(xué)方法相關(guān)聯(lián)產(chǎn)生的數(shù)據(jù)塊,每一個(gè)數(shù)據(jù)塊中包含了一次比特幣網(wǎng)絡(luò)交易的信息,用于驗(yàn)證其信息的有效性(防偽)和生成下一個(gè)區(qū)塊。
區(qū)塊鏈技術(shù)邏輯
區(qū)塊鏈可以簡(jiǎn)單的分為三個(gè)層次,協(xié)議層、擴(kuò)展層和應(yīng)用層。其中,協(xié)議層又可以分為存儲(chǔ)層和網(wǎng)絡(luò)層,它們相互獨(dú)立但又不可分割。如圖:
協(xié)議層
所謂的協(xié)議層,就是指代最底層的技術(shù)。這個(gè)層次通常是一個(gè)完整的區(qū)塊鏈產(chǎn)品,類(lèi)似于我們電腦的操作系統(tǒng),它維護(hù)著網(wǎng)絡(luò)節(jié)點(diǎn),僅提供Api供調(diào)用。通常官方會(huì)提供簡(jiǎn)單的客戶(hù)端(通稱(chēng)為錢(qián)包),這個(gè)客戶(hù)端錢(qián)包功能也很簡(jiǎn)單,只能建立地址、驗(yàn)證簽名、轉(zhuǎn)賬支付、查看余額等。這個(gè)層次是一切的基礎(chǔ),構(gòu)建了網(wǎng)絡(luò)環(huán)境、搭建了交易通道、制定了節(jié)點(diǎn)獎(jiǎng)勵(lì)規(guī)則,至于你要交易什么,想干什么,它一概不過(guò)問(wèn),也過(guò)問(wèn)不了。典型的例子,自然是比特幣,還有各種二代幣,比如萊特幣等,本書(shū)介紹的億書(shū)幣也是。這個(gè)層次,是現(xiàn)階段開(kāi)發(fā)者聚集的地方,這說(shuō)明加密貨幣仍在起步當(dāng)中。
從用到的技術(shù)來(lái)說(shuō),協(xié)議層主要包括網(wǎng)絡(luò)編程、分布式算法、加密簽名、數(shù)據(jù)存儲(chǔ)技術(shù)等4個(gè)方面,其中網(wǎng)絡(luò)編程能力是大家選擇編程語(yǔ)言的主要考慮因素,因?yàn)榉植际剿惴ɑ旧蠈儆跇I(yè)務(wù)邏輯上的實(shí)現(xiàn),什么語(yǔ)言都可以做到,加密簽名技術(shù)是直接簡(jiǎn)單的使用(請(qǐng)看書(shū)中相關(guān)的加密解密文章,不建議自由發(fā)揮,沒(méi)有過(guò)多的編碼邏輯),數(shù)據(jù)庫(kù)技術(shù)也主要在使用層面,只有點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)的實(shí)現(xiàn)和并發(fā)處理才是開(kāi)發(fā)的難點(diǎn),所以對(duì)于那些網(wǎng)絡(luò)編程能力強(qiáng),對(duì)并發(fā)處理簡(jiǎn)單的語(yǔ)言,人們就特別偏愛(ài)。也因此,Nodejs開(kāi)發(fā)區(qū)塊鏈應(yīng)用,逐漸變得更加流行,Go語(yǔ)言也在逐漸興起。
我把這個(gè)層面進(jìn)一步分成了存儲(chǔ)層和網(wǎng)絡(luò)層。數(shù)據(jù)存儲(chǔ)可以相對(duì)獨(dú)立,選擇自由度大一些,可以單獨(dú)來(lái)討論。選擇的原則無(wú)非是性能和易用性。我們知道,系統(tǒng)的整體性能,主要取決于網(wǎng)絡(luò)或數(shù)據(jù)存儲(chǔ)的I/O性能,網(wǎng)絡(luò)I/O優(yōu)化空間不大,但是本地?cái)?shù)據(jù)存儲(chǔ)的I/O是可以?xún)?yōu)化的。比如,比特幣選擇的是谷歌的LevelDB,據(jù)說(shuō)這個(gè)數(shù)據(jù)庫(kù)讀寫(xiě)性能很好,但是很多功能需要開(kāi)發(fā)者自己實(shí)現(xiàn)。目前,困擾業(yè)界的一個(gè)重大問(wèn)題是,加密貨幣交易處理量遠(yuǎn)不如現(xiàn)在中心化的支付系統(tǒng)(銀行等),除了I/O,需要全方位的突破。
分布式算法、加密簽名等都要在實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)的過(guò)程中加以使用,所以自然是網(wǎng)絡(luò)層的事情,也是編碼的重點(diǎn)和難點(diǎn),《Nodejs開(kāi)發(fā)加密貨幣》全書(shū)分享的基本上就是這部分的內(nèi)容。當(dāng)然,也有把點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)的實(shí)現(xiàn)單獨(dú)分開(kāi)的,把節(jié)點(diǎn)查找、數(shù)據(jù)傳輸和驗(yàn)證等邏輯獨(dú)立出來(lái),而把共識(shí)算法、加密簽名、數(shù)據(jù)存儲(chǔ)等操作放在一起組成核心層。無(wú)論怎么組合,這兩個(gè)部分都是最核心、最底層的部分,都是協(xié)議層的內(nèi)容。
擴(kuò)展層
這個(gè)層面類(lèi)似于電腦的驅(qū)動(dòng)程序,是為了讓區(qū)塊鏈產(chǎn)品更加實(shí)用。目前有兩類(lèi),一是各類(lèi)交易市場(chǎng),是法幣兌換加密貨幣的重要渠道,實(shí)現(xiàn)簡(jiǎn)單,來(lái)錢(qián)快,成本低,但風(fēng)險(xiǎn)也大。二是針對(duì)某個(gè)方向的擴(kuò)展實(shí)現(xiàn),比如基于億書(shū)側(cè)鏈,可為第三方出版機(jī)構(gòu)、論壇網(wǎng)站等內(nèi)容生產(chǎn)商提供定制服務(wù)等。特別值得一提的就是大家聽(tīng)得最多的“智能合約”的概念,這是典型的擴(kuò)展層面的應(yīng)用開(kāi)發(fā)。所謂“智能合約”就是“可編程合約”,或者叫做“合約智能化”,其中的“智能”是執(zhí)行上的智能,也就是說(shuō)達(dá)到某個(gè)條件,合約自動(dòng)執(zhí)行,比如自動(dòng)轉(zhuǎn)移證券、自動(dòng)付款等,目前還沒(méi)有比較成型的產(chǎn)品,但不可否認(rèn),這將是區(qū)塊鏈技術(shù)重要的發(fā)展方向。
擴(kuò)展層使用的技術(shù)就沒(méi)有什么限制了,可以包括很多,上面提到的分布式存儲(chǔ)、機(jī)器學(xué)習(xí)、VR、物聯(lián)網(wǎng)、大數(shù)據(jù)等等,都可以使用。編程語(yǔ)言的選擇上,可以更加自由,因?yàn)榭梢耘c協(xié)議層完全分離,編程語(yǔ)言也可以與協(xié)議層使用的開(kāi)發(fā)語(yǔ)言不相同。在開(kāi)發(fā)上,除了在交易時(shí)與協(xié)議層進(jìn)行交互之外,其他時(shí)候盡量不要與協(xié)議層的開(kāi)發(fā)混在一起。這個(gè)層面與應(yīng)用層更加接近,也可以理解為B/S架構(gòu)的產(chǎn)品中的服務(wù)端(Server)。這樣不僅在架構(gòu)設(shè)計(jì)上更加科學(xué),讓區(qū)塊鏈數(shù)據(jù)更小,網(wǎng)絡(luò)更獨(dú)立,同時(shí)也可以保證擴(kuò)展層開(kāi)發(fā)不受約束。
從這個(gè)層面來(lái)看,區(qū)塊鏈可以架構(gòu)開(kāi)發(fā)任何類(lèi)型的產(chǎn)品,不僅僅是用在金融行業(yè)。在未來(lái),隨著底層協(xié)議的更加完善,任何需要第三方支付的產(chǎn)品都可以方便的使用區(qū)塊鏈技術(shù);任何需要確權(quán)、征信和追溯的信息,都可以借助區(qū)塊鏈來(lái)實(shí)現(xiàn)。我個(gè)人覺(jué)得,這個(gè)目標(biāo)應(yīng)該很快就能實(shí)現(xiàn)。
應(yīng)用層
這個(gè)層面類(lèi)似于電腦中的各種軟件程序,是普通人可以真正直接使用的產(chǎn)品,也可以理解為B/S架構(gòu)的產(chǎn)品中的瀏覽器端(Browser)。這個(gè)層面的應(yīng)用,目前幾乎是空白。市場(chǎng)亟待出現(xiàn)這樣的應(yīng)用,引爆市場(chǎng),形成真正的擴(kuò)張之勢(shì),讓區(qū)塊鏈技術(shù)快速走進(jìn)尋常百姓,服務(wù)于大眾。大家使用的各類(lèi)輕錢(qián)包(客戶(hù)端),應(yīng)該算作應(yīng)用層最簡(jiǎn)單、最典型的應(yīng)用。很快,億書(shū)將基于億書(shū)網(wǎng)絡(luò)推出文檔協(xié)作工具,這個(gè)就是典型的應(yīng)用層的產(chǎn)品。
限于當(dāng)前區(qū)塊鏈技術(shù)的發(fā)展,億書(shū)只能從協(xié)議層出發(fā),把目標(biāo)指向應(yīng)用層,同時(shí)為第三方開(kāi)發(fā)者提供擴(kuò)展層的強(qiáng)大支持。這樣做既可以避免貪多,又可以避免無(wú)法落地,是真正理性的開(kāi)發(fā)路線。因?yàn)榧兇獾拈_(kāi)發(fā)協(xié)議層或擴(kuò)展層,無(wú)法真正理解和驗(yàn)證應(yīng)用層,會(huì)脫離實(shí)際,讓第三方開(kāi)發(fā)者很難使用。如果僅僅考慮應(yīng)用層,市面上又找不到真正牢固、易用的協(xié)議層或擴(kuò)展層的產(chǎn)品。所以,我們只好全面發(fā)力,采取完全開(kāi)源開(kāi)放的態(tài)度,通過(guò)社區(qū)的力量,共同去做一件有意義的事情,也算為中國(guó)區(qū)塊鏈技術(shù)發(fā)展做點(diǎn)技術(shù)積累和微薄貢獻(xiàn)。
區(qū)塊鏈技術(shù)原理
如今的區(qū)塊鏈技術(shù)概括起來(lái)是指通過(guò)去中心化和去信任的方式集體維護(hù)一個(gè)可靠數(shù)據(jù)庫(kù)的技術(shù)。其實(shí),區(qū)塊鏈技術(shù)并不是一種單一的、全新的技術(shù),而是多種現(xiàn)有技術(shù)(如加密算法、P2P文件傳輸?shù)?整合的結(jié)果,這些技術(shù)與數(shù)據(jù)庫(kù)巧妙地組合在一起,形成了一種新的數(shù)據(jù)記錄、傳遞、存儲(chǔ)與呈現(xiàn)的方式。簡(jiǎn)單的說(shuō),區(qū)塊鏈技術(shù)就是一種大家共同參與記錄信息、存儲(chǔ)信息的技術(shù)。過(guò)去,人們將數(shù)據(jù)記錄、存儲(chǔ)的工作交給中心化的機(jī)構(gòu)來(lái)完成,而區(qū)塊鏈技術(shù)則讓系統(tǒng)中的每一個(gè)人都可以參與數(shù)據(jù)的記錄、存儲(chǔ)。區(qū)塊鏈技術(shù)在沒(méi)有中央控制點(diǎn)的分布式對(duì)等網(wǎng)絡(luò)下,使用分布式集體運(yùn)作的方法,構(gòu)建了一個(gè)P2P的自組織網(wǎng)絡(luò)。通過(guò)復(fù)雜的校驗(yàn)機(jī)制,區(qū)塊鏈數(shù)據(jù)庫(kù)能夠保持完整性、連續(xù)性和一致性,即使部分參與人作假也無(wú)法改變區(qū)塊鏈的完整性,更無(wú)法篡改區(qū)塊鏈中的數(shù)據(jù)。區(qū)塊鏈技術(shù)涉及的關(guān)鍵點(diǎn)包括:、去中心化、集體維護(hù)、時(shí)間戳、可靠數(shù)據(jù)庫(kù)、去信任、非對(duì)稱(chēng)加密等。
區(qū)塊鏈技術(shù)重新定義了網(wǎng)絡(luò)中信用的生成方式:在系統(tǒng)中,參與者無(wú)需了解其他人的背景資料,也不需要借助第三方機(jī)構(gòu)的擔(dān)保或保證,區(qū)塊鏈技術(shù)保障了系統(tǒng)對(duì)價(jià)值轉(zhuǎn)移的活動(dòng)進(jìn)行記錄、傳輸、存儲(chǔ),其最后的結(jié)果一定是可信的。
區(qū)塊鏈技術(shù)原理的來(lái)源可歸納為一個(gè)數(shù)學(xué)問(wèn)題:拜占庭將軍問(wèn)題。拜占庭將軍問(wèn)題延伸到互聯(lián)網(wǎng)生活中來(lái),其內(nèi)涵可概括為:在互聯(lián)網(wǎng)大背景下,當(dāng)需要與不熟悉的對(duì)手方進(jìn)行價(jià)值交換活動(dòng)時(shí),人們?nèi)绾尾拍芊乐共粫?huì)被其中的惡意破壞者欺騙、迷惑從而做出錯(cuò)誤的決策。進(jìn)一步將拜占庭將軍問(wèn)題延伸到技術(shù)領(lǐng)域中來(lái),其內(nèi)涵可概括為:在缺少可信任的中央節(jié)點(diǎn)和可信任的通道的情況下,分布在網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)應(yīng)如何達(dá)成共識(shí)。區(qū)塊鏈技術(shù)解決了聞名已久的拜占庭將軍問(wèn)題——它提供了一種無(wú)需信任單個(gè)節(jié)點(diǎn)、還能創(chuàng)建共識(shí)網(wǎng)絡(luò)的方法。