區(qū)塊鏈一直很火爆,是因為區(qū)塊鏈既是全新的技術(shù)方案、交易模式和商業(yè)邏輯,同時也是一種全新的制度機(jī)制。今天通過一篇文章幫助大家初步認(rèn)識一下區(qū)塊鏈。
1、什么是區(qū)塊鏈
區(qū)塊鏈技術(shù)起源于化名為“中本聰”(Satoshi Nakamoto)的學(xué)者在2008年發(fā)表的奠基性論文《比特幣: 一種點對點電子現(xiàn)金系統(tǒng)》。狹義來講, 區(qū)塊鏈?zhǔn)且环N按照時間順序?qū)?shù)據(jù)區(qū)塊以順序相連的方式組合成的一種鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu), 并以密碼學(xué)方式保證的不可篡改和不可偽造的分布式賬本。廣義來講,區(qū)塊鏈技術(shù)是利用塊鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)來驗證與存儲數(shù)據(jù)、利用分布式節(jié)點共識算法來生成和更新數(shù)據(jù)、利用密碼學(xué)的方式保證數(shù)據(jù)傳輸和訪問的安全、利用由自動化腳本代碼組成的智能合約來編程和操作數(shù)據(jù)的一種全新的分布式基礎(chǔ)架構(gòu)與計算范式。
目前,區(qū)塊鏈技術(shù)被很多大型機(jī)構(gòu)稱為是徹底改變業(yè)務(wù)乃至機(jī)構(gòu)運作方式的重大突破性技術(shù)。同時,就像云計算、大數(shù)據(jù)、物聯(lián)網(wǎng)等新一代信息技術(shù)一樣,區(qū)塊鏈技術(shù)并不是單一信息技術(shù),而是依托于現(xiàn)有技術(shù),加以獨創(chuàng)性的組合及創(chuàng)新,從而實現(xiàn)以前未實現(xiàn)的功能。至今為止,區(qū)塊鏈技術(shù)大致經(jīng)歷了3個發(fā)展階段。
不要把區(qū)塊鏈想象的非常神秘,區(qū)塊鏈的本質(zhì)上是一個去中心化的分布式賬本,其本身是一系列使用密碼學(xué)而產(chǎn)生的互相關(guān)聯(lián)的數(shù)據(jù)塊,每一個數(shù)據(jù)塊中包含了多條經(jīng)比特幣的網(wǎng)絡(luò)交易有效確認(rèn)的信息。按照類型分為:公有鏈、聯(lián)盟鏈和私人區(qū)塊鏈。
公有鏈
世界上所有人都可以閱讀和發(fā)送交易。如果他們合法都有希望看到自己被包括在內(nèi)。世界上任何人都能參與到共識形成過程——決定在鏈條上添加什么區(qū)塊以及現(xiàn)狀是怎樣的。作為中心化或準(zhǔn)中心化信任的替代品,公有鏈?zhǔn)芗用芙?jīng)濟(jì)的保護(hù),加密經(jīng)濟(jì)是經(jīng)濟(jì)激勵和加密圖形驗證的結(jié)合,用類似工作量證明或權(quán)益證明的機(jī)制,遵循的總原則是人們影響共識形成的程度和他們能夠影響的經(jīng)濟(jì)資源數(shù)量成正比。這類區(qū)塊鏈通常被認(rèn)為是"完全去中心化"。
聯(lián)盟鏈
共識形成過程由預(yù)先選擇的一系列的節(jié)點所掌控,例如,設(shè)想一個有15個金融機(jī)構(gòu)的團(tuán)體,每個機(jī)構(gòu)都操作一個節(jié)點,為了使區(qū)塊生效,其中的10個必須簽署那個區(qū)塊。閱讀區(qū)塊鏈的權(quán)利可能是公開的,或僅限于參與者,也有混合的路徑,比如區(qū)塊的根散表和應(yīng)用程序編程接口一起公開,使公共成員可以進(jìn)行一定量的查詢,重獲一部分區(qū)塊鏈狀態(tài)的加密圖形證明。這類區(qū)塊鏈被認(rèn)為是"部分去中心化"。
私人區(qū)塊鏈
書寫許可對一個組織保持中心化。閱讀許可可能是公開的或者限制在任意程度。應(yīng)用很可能包含對單個公司內(nèi)部的數(shù)據(jù)庫管理,審查等,因此公共的可讀性在很多情況下根本不必要,但在另一些情況下人們又想要公共可讀性。
2、區(qū)塊鏈的技術(shù)架構(gòu)
由于區(qū)塊鏈技術(shù)目前還不是非常成熟,架構(gòu)還存在爭議,但從目前市場上面的應(yīng)用來看,數(shù)據(jù)層、網(wǎng)絡(luò)層、共識層是構(gòu)建區(qū)塊鏈技術(shù)的必要元素,缺少任何一層都將不能稱之為真正意義上的區(qū)塊鏈技術(shù)。激勵層、合約層和應(yīng)用層不是每個區(qū)塊鏈應(yīng)用的必要因素,一些區(qū)塊鏈應(yīng)用并不完整的包含后三層結(jié)構(gòu)。
數(shù)據(jù)層
區(qū)塊鏈從字面上理解它肯定是一個鏈?zhǔn)浇Y(jié)構(gòu),在這個鏈上包括非常多的區(qū)塊,每一個區(qū)塊上的0、1、2、3……代表的是區(qū)塊的高度,中間通過hash指針(Privous hash)進(jìn)行連接和指向,其實就是子區(qū)塊存儲它的父區(qū)塊所有數(shù)據(jù)的hash值,這樣每個區(qū)塊通過指針或者說每個區(qū)塊的唯一數(shù)據(jù)進(jìn)行綁定,連成一個鏈?zhǔn)浇Y(jié)構(gòu)。數(shù)據(jù)層封裝了底層數(shù)據(jù)區(qū)塊的鏈?zhǔn)浇Y(jié)構(gòu),以及相關(guān)的非對稱公私鑰數(shù)據(jù)加密技術(shù)和時間戳等技術(shù),這是整個區(qū)塊鏈技術(shù)中最底層的數(shù)據(jù)結(jié)構(gòu)。
通過鏈?zhǔn)浇Y(jié)構(gòu),我們可以看出區(qū)塊鏈就有以下幾個特點:
1、數(shù)據(jù)不可篡改:如果存在篡改某個區(qū)塊的數(shù)據(jù),就會導(dǎo)致被篡改區(qū)塊數(shù)據(jù)對應(yīng)的hash值發(fā)生變化,以至于沒有關(guān)聯(lián)區(qū)塊了,該區(qū)塊就會在鏈?zhǔn)浇Y(jié)構(gòu)中斷裂,除非篡改所有區(qū)塊中的數(shù)據(jù)。
2、全備份:以比特幣、以太坊為代表的傳統(tǒng)主流區(qū)塊鏈均采用全備份模式,如果區(qū)塊鏈有10個節(jié)點,就會有10份數(shù)據(jù),若黑客攻擊的情況下,至少需要修改51%以上的區(qū)塊數(shù)據(jù)才能修改成功,攻擊的成本就非常高,這樣就從機(jī)制上保障了數(shù)據(jù)的安全。另外,這也就帶來了新的問題,很多的應(yīng)用單元實際上是不希望將自己的數(shù)據(jù)公開的,或者被其他應(yīng)用單元共享的。所以在非傳統(tǒng)區(qū)塊鏈Fabric里面有一個channel的設(shè)計,它的目的是讓這些數(shù)據(jù)僅限于在channel上具有可驗證成員資格的peer間傳播。通過信道隔離peer和賬本數(shù)據(jù),允許需要私有和機(jī)密事務(wù)的網(wǎng)絡(luò)成員與同一個塊鏈網(wǎng)絡(luò)上的業(yè)務(wù)競爭對手和其他受限制的成員共存。還有一個問題就是成本會非常高,存儲設(shè)備要求高,網(wǎng)絡(luò)帶寬要求也很高。但從摩爾定律上來看,也不是非常大的問題。
3、完全平等:節(jié)點之間是完全平等的,數(shù)據(jù)是一致的,權(quán)限是一致的,代碼是一致的。
網(wǎng)絡(luò)層
網(wǎng)絡(luò)層主要是通過P2P協(xié)議實現(xiàn)數(shù)據(jù)通訊,大家應(yīng)該都用過迅雷和電驢,P2P協(xié)議有個特點就是上傳數(shù)據(jù)的同時也在下載數(shù)據(jù),這樣就給區(qū)塊鏈帶來了一個好處,節(jié)點數(shù)量越多,上傳下載的速度就越快,這也就意味著區(qū)塊鏈自己具有自動組網(wǎng)的能力。
共識層
共識層中是區(qū)塊產(chǎn)生和數(shù)據(jù)寫入?yún)^(qū)塊的規(guī)則,這里有一個誤區(qū):不是交易雙方達(dá)成的交易共識。共識層封裝了網(wǎng)絡(luò)節(jié)點的各類共識機(jī)制算法。共識機(jī)制算法是區(qū)塊鏈的核心技術(shù),因為這決定了到底是誰來進(jìn)行記賬,而記賬決定方式將會影響整個系統(tǒng)的安全性和可靠性。常見的共識算法包括:POW、POS和DPOS等。
POW:Proof of Work,工作證明
比特幣在Block的生成過程中使用了POW機(jī)制,一個符合要求的Block Hash由N個前導(dǎo)零構(gòu)成,零的個數(shù)取決于網(wǎng)絡(luò)的難度值。要得到合理的Block Hash需要經(jīng)過大量嘗試計算,計算時間取決于機(jī)器的哈希運算速度。當(dāng)某個節(jié)點提供出一個合理的Block Hash值,說明該節(jié)點確實經(jīng)過了大量的嘗試計算,當(dāng)然,并不能得出計算次數(shù)的絕對值,因為尋找合理hash是一個概率事件。當(dāng)節(jié)點擁有占全網(wǎng)n%的算力時,該節(jié)點即有n/100的概率找到Block Hash。
POS:Proof of Stake,股權(quán)證明
POS類似于財產(chǎn)儲存在銀行,這種模式會根據(jù)你持有數(shù)字貨幣的量和時間,分配給你相應(yīng)的利息。簡單來說,就是一個根據(jù)你持有貨幣的量和時間,給你發(fā)利息的一個制度,在股權(quán)證明POS模式下,有一個名詞叫幣齡,每個幣每天產(chǎn)生1幣齡,比如你持有100個幣,總共持有了30天,那么,此時你的幣齡就為3000,這個時候,如果你發(fā)現(xiàn)了一個POS區(qū)塊,你的幣齡就會被清空為0。你每被清空365幣齡,你將會從區(qū)塊中獲得0.05個幣的利息(假定利息可理解為年利率5%),那么在這個案例中,利息 = 3000 * 5% / 365 = 0.41個幣,這下就很有意思了,持幣有利息。
DPOS:Delegated Proof of Stake,委任權(quán)益證明
比特股的DPoS機(jī)制,中文名叫做股份授權(quán)證明機(jī)制(又稱受托人機(jī)制),它的原理是讓每一個持有比特股的人進(jìn)行投票,由此產(chǎn)生101位代表,我們可以將其理解為101個超級節(jié)點或者礦池,而這101個超級節(jié)點彼此的權(quán)利是完全相等的。從某種角度來看,DPOS有點像是議會制度或人民代表大會制度。如果代表不能履行他們的職責(zé)(當(dāng)輪到他們時,沒能生成區(qū)塊),他們會被除名,網(wǎng)絡(luò)會選出新的超級節(jié)點來取代他們。DPOS的出現(xiàn)最主要還是因為礦機(jī)的產(chǎn)生,大量的算力在不了解也不關(guān)心比特幣的人身上,類似演唱會的黃牛,大量囤票而絲毫不關(guān)心演唱會的內(nèi)容。
從時間上來看,這個順序也是按該共識算法從誕生到熱門的順序來定。對于POW,直接讓比特幣成為了現(xiàn)實,并投入使用。而POS的存在主要是從經(jīng)濟(jì)學(xué)上的考慮和創(chuàng)新。而最終由于專業(yè)礦工和礦機(jī)的存在,讓社區(qū)對這個標(biāo)榜去中心化的算法有了實質(zhì)性的中心化擔(dān)憂,即傳聞60%~70%的算力集中在中國。因此后來又出現(xiàn)DPOS,這種不需要消耗太多額外的算力來進(jìn)行礦池產(chǎn)出物的分配權(quán)益方式。但要說能起到替代作用,DPOS來單獨替代POW,POS或者POW+POS也不太可能,畢竟存在即合理。每種算法都在特定的時間段中有各自的考慮和意義,無論是技術(shù)上,還是業(yè)務(wù)上。
激勵層
像比特幣、以太坊都會給參與者(挖礦的人)一定的獎勵,另外還有交易費。激勵層對公有鏈特別重要,在公有鏈中必須激勵遵守規(guī)則參與記賬的節(jié)點,并且懲罰不遵守規(guī)則的節(jié)點,才能讓整個系統(tǒng)朝著良性循環(huán)的方向發(fā)展,它能夠保障這個鏈穩(wěn)定健康發(fā)展的基礎(chǔ)。但是,對于私有鏈或者聯(lián)盟鏈來說,企業(yè)做這個鏈?zhǔn)怯心撤N獨立目的,不會隨意讓個人參與這個鏈系統(tǒng),一般就很少有激勵層。
合約層
合約層實際是運行在區(qū)塊鏈上的程序,封裝各類腳本、算法和智能合約,是區(qū)塊鏈可編程特性的基礎(chǔ)。最典型的就是以太坊提出的智能合約的概念。合約細(xì)分就分為兩種:
圖靈完備:一個能計算出每個圖靈可計算函數(shù)(Turing-computable function)的計算系統(tǒng)被稱為圖靈完備的。(非常抽象的概念)程序員應(yīng)該都知道for循環(huán)、遞歸循環(huán)、while循環(huán),這些基本上都可以實現(xiàn)無線循環(huán),它就可能具有圖靈完備的能力,可以計算一切可計算的系統(tǒng)或者應(yīng)用。例如:以太坊的智能合約。
非圖靈完備:這部分的計算是有限的,例如:比特幣的腳本。比特幣腳本存在的意義是讓每筆交易合法化,這個合法化不是人工審核而是有腳本自動執(zhí)行校驗的。
應(yīng)用層
運行在區(qū)塊鏈系統(tǒng)的程序,如果你調(diào)用的是區(qū)塊鏈系統(tǒng)的某個接口,獲取相關(guān)信息,這是應(yīng)用層。如果你調(diào)用的是某個區(qū)塊的某個數(shù)據(jù)或者在某個區(qū)塊寫數(shù)據(jù),那就是智能合約,也就是合約層。目前應(yīng)用層典型的應(yīng)用包括:
錢包:如果你在火幣網(wǎng)上下載一個錢包,這個不能算是區(qū)塊鏈應(yīng)用。嚴(yán)格上來說,你連接的是火幣網(wǎng)的服務(wù)器,也就是你連接了一個中心化的應(yīng)用。那典型的區(qū)塊鏈錢包比如說是:imToken。區(qū)塊鏈錢包可以保障自己的虛擬貨幣只要系統(tǒng)存在,就會一直存在。
區(qū)塊鏈瀏覽器:簡單來說是一種搜索工具,我們通過輸入某錢包地址或某筆交易ID,就可以查詢此錢包的余額和任意一筆交易的詳細(xì)信息:比如當(dāng)前比特幣的轉(zhuǎn)賬費用是多少、給你轉(zhuǎn)賬的地址有多土豪、一筆轉(zhuǎn)賬究竟何時到賬……當(dāng)然,我們也可以通過輸入塊高,塊哈希等來搜索某一特定區(qū)塊的所有內(nèi)容。但是,有些區(qū)塊鏈瀏覽器也不一定完全是去中心化的,數(shù)據(jù)來源于緩存服務(wù)器或者中心化服務(wù)器。
3、挖礦到底是什么
區(qū)塊鏈,特別是公有鏈中有一個事情叫“挖礦”,并且挖礦結(jié)束之后會有一定的獎勵。挖礦其實是要計算出系統(tǒng)要求的一個hash值,這里的計算常用的Hash函數(shù)(SHA),這也是目前使用最為廣泛的Hash函數(shù)。SHA由美國標(biāo)準(zhǔn)與技術(shù)研究所(NIST)設(shè)計并于1993年發(fā)表,該版本稱為SHA-0,由于很快被發(fā)現(xiàn)存在安全隱患,1995年發(fā)布了SHA-1。2002年,NIST分別發(fā)布了SHA-256、SHA-384、SHA-512,這些算法統(tǒng)稱SHA-2。2008年又新增了SHA-224。由于SHA-1已經(jīng)不太安全,目前SHA-2各版本已成為主流。
例如:通過sha256()函數(shù)計算系統(tǒng)要求的一個前面5位均是0的hash值,獎勵22.5個比特幣。
那么整個挖礦的過程就是:
nonce是存在與區(qū)塊頭中挖礦時使用的隨機(jī)數(shù)。
第一次計算:假定nonce = 100,sha256(nonce)
得出000XXXXXXXXXXXXXXXXXXXXXXXX
第二次計算:假定nonce = 104,sha256(nonce)
得出00XXXXXXXXXXXXXXXXXXXXXXXXX
第三次計算:假定nonce = 130,sha256(nonce)
得出0000XXXXXXXXXXXXXXXXXXXXXXX
……
第一萬次計算:假定nonce = 1009002,sha256(nonce)
得出00000XXXXXXXXXXXXXXXXXXXXXX
此時,就得出了系統(tǒng)所要求的hash值,就給該礦工獎勵22.5個比特幣。這就是一個典型的挖礦過程。這個過程對每個人都是公平的,對于計算快的人就會得到獎勵,計算慢的人就得不到獎勵。這樣就引出了另外一個概念,就是節(jié)點。區(qū)塊鏈的節(jié)點其實就是參與區(qū)塊鏈系統(tǒng)的計算機(jī)。
4、舉例說明區(qū)塊鏈的交易過程
舉例:張三需要給李四轉(zhuǎn)2個比特幣,那么區(qū)塊鏈系統(tǒng)的運作機(jī)制如下:
1、數(shù)據(jù)層存儲交易記錄:張三-->李四 2
2、網(wǎng)絡(luò)層傳輸數(shù)據(jù),進(jìn)行數(shù)據(jù)廣播
3、共識層通過具體的算法驗證決定交易記錄是否寫入?yún)^(qū)塊鏈中
4、激勵層讓礦工在挖礦的同時可以參與到交易記錄的驗證中,這里涉及挖礦的獎勵和額外驗證的交易費
由于比特幣的存量是有限的,所以,交易費是由交易方出的,也就是說張三轉(zhuǎn)給李四的2個比特幣,最終李四收到的是小于2個比特幣的,因為平臺減掉了交易費,將交易費分配給了幫助驗證的礦工。
評論
查看更多