计算机行业新技术 —— 区块链
在IT界流傳了一句話,“區(qū)塊鏈技術(shù)被認為是繼蒸汽機,電力,網(wǎng)絡(luò)之后的又一顛覆性技術(shù)。如果說蒸汽機使人們的勞動力得到了解放,電力使人們生活需求得到了改善,網(wǎng)絡(luò)徹底改變了人們信息傳遞的方式,那么區(qū)塊鏈則會徹底改變?nèi)祟惿鐣膬r值傳遞方式?!?/p>
在很早之前,人與人之間信任靠的完全是招牌,品質(zhì),口碑,國家機構(gòu),而區(qū)塊鏈技術(shù)則通過技術(shù)手段實現(xiàn)了新的信任機制,而這種信任機制是可以被量化、可以在技術(shù)手段上完美實現(xiàn)的。所以說區(qū)塊鏈技術(shù)最核心的特性就是改變了人類落后的信任體制。
什么是區(qū)塊鏈
百度文庫稱 區(qū)塊鏈技術(shù)(BT)被稱為是“分布式賬本技術(shù)”,是一種互聯(lián)網(wǎng)數(shù)據(jù)庫技術(shù),它最大的特點就是去中心化,所有數(shù)據(jù)完全公開,每個人都可以成為數(shù)據(jù)庫的記錄者。用通俗的話闡述:如果我們把數(shù)據(jù)庫假設(shè)成一本賬本,讀寫數(shù)據(jù)庫就可以看做一種記賬的行為,區(qū)塊鏈技術(shù)的原理就是在一段時間內(nèi)找出記賬最快最好的人,由這個人來記賬,然后將賬本的這一頁信息發(fā)給整個系統(tǒng)里的其他所有人。這也就相當(dāng)于改變數(shù)據(jù)庫所有的記錄,發(fā)給全網(wǎng)的其他每個節(jié)點,所以區(qū)塊鏈技術(shù)也稱為分布式賬本(distributed ledger)。
簡單來說,區(qū)塊鏈技術(shù)的本質(zhì)就是一個分布式賬本,任何人都可以對它進行記錄和查驗,因為區(qū)塊鏈最大的特點就是去中心化,因此不存在單一的用戶對其控制,即不存在管理員機制,區(qū)塊鏈系統(tǒng)中所有的用戶必須按照嚴(yán)格的規(guī)則和共識來對區(qū)塊鏈數(shù)據(jù)進行修改和管理。
舉例理解區(qū)塊鏈
下面我們通過一系列的舉例來簡單的介紹一下區(qū)塊鏈技術(shù)。
如果甲用戶借給了乙用戶1000塊錢,按照區(qū)塊鏈的規(guī)則,那么甲用戶就需要在人群里大喊“我是甲用戶,我今天借給了乙用戶1000塊錢!” 與此同時,乙用戶也要在人群中喊“我是乙用戶,今天我向甲用戶借了1000塊錢!” 這時候路人聽見了,就拿小本本記錄“今天甲用戶借給了乙用戶1000塊錢。” 就像下面這張圖一樣。
在上邊這個案例的系統(tǒng)中,沒有銀行系統(tǒng),沒有擔(dān)保機構(gòu),沒有第三方平臺作證,甚至不需要人與人之間的信任。如果乙用戶突然大喊“我沒有欠甲用戶錢!” 這時候就會有人跳出來說“不對,我記得你借了甲用戶1000塊錢!” 這就是一個去中心化的體系結(jié)構(gòu),區(qū)塊鏈里面的所有用戶都是數(shù)據(jù)的參與者和維護者,這樣,整個系統(tǒng)中沒有了權(quán)威的中心化代理,信息的可信度和準(zhǔn)確性便會面臨問題。
其實在上邊的系統(tǒng)中,甲乙用戶的1000塊錢已經(jīng)變得不重要了,也就是說,所有的東西在這個場景里面都可以被用來交換記錄,甚至是一個虛無不存在的東西,只要區(qū)塊鏈中的所有用戶都承認這個事實,那他就是真的,就是可以流通的。
再比如,我在人群中大喊一聲“我創(chuàng)造了十個AA!” 我根本就不需要知道什么是AA,也不需要關(guān)心這個世界上到底有沒有AA這個東西,只要在人群中有人聽到我的喊話,并且在他的小本本上寫下“王佳偉有十個AA。” 然后我就真的有了十個AA,如果以后我說我給了某人一個AA,只要被人群記錄下來并且得到了所有人的認可,那我就真的給了某人一個AA,這筆交易完成!!就像下圖一樣。
不難發(fā)現(xiàn),一段時間后,AA開始在區(qū)塊鏈系統(tǒng)中流行起來了,大家都認可了AA。但是也出現(xiàn)了一個問題,AA的數(shù)量只有十個,如果有人故意耍壞,在人群中大喊 “我有十個AA!” 那該怎么辦呢?如果人群中有人記下來他有10個AA,那不就出現(xiàn)偽造數(shù)據(jù)了嗎?因此,為了防止這種事情的發(fā)生,我在創(chuàng)造AA的同時,給我的AA打上一個標(biāo)記,這樣在交易AA的時候,我只需要大喊 “我給了某人一個AA,這個AA的來源記為0001的那條記錄,我現(xiàn)在說的這句話記為0002?!焙唵吸c說,就是把說的話規(guī)范化為 “這句話的編號是XXX,上句話的編號是XXX,我給了某人一個AA?!边@樣解決了偽造數(shù)據(jù)的問題。
接下來又出現(xiàn)問題了,“憑啥幫你把東西記在我的小本本上?”所以為了鼓勵大家?guī)兔τ涗浗灰讛?shù)據(jù)參與到區(qū)塊鏈的大家族中來,我決定給第一個聽到我喊話并且?guī)臀矣涗浀娜艘粋€獎勵,我分給他一個AA,作為幫我記錄的獎勵,而你記錄下來之后,要快速的告訴其他人你記錄下來了,讓別人放棄記錄這條消息,并且把你的記錄進行編號,可以讓別人查到,然后你再把我說的話加上的你的記錄編號一起喊出來,讓下一個人記錄,以此類推。
在這種規(guī)則之下,就會有很多人時刻監(jiān)聽別人的消息,搶占第一個記錄的權(quán)利!比如:比特幣挖礦!
在區(qū)塊鏈系統(tǒng)中,如果我和一個用戶丙同時喊出一句話“我獲得了一個AA!”因為位置的不同,一定會有一個人最先聽到我的喊話,也一定會有一個人最先聽到用戶丙的喊話,那么一部分認為這句話是我喊得,開始幫我記錄,同樣另一幫人也會幫丙記錄,這樣的話,原本一條唯一的信息鏈在我們喊出“我獲得了一個AA!”的時候,出現(xiàn)了分支。
區(qū)塊鏈?zhǔn)且粭l吧所有數(shù)據(jù)全部串聯(lián)起來的鎖鏈,每個人記錄的東西都是統(tǒng)一的,出現(xiàn)分支,數(shù)據(jù)的確定性統(tǒng)一性真實性就會出現(xiàn)問題,因此,為了解決掉這樣的問題,設(shè)計出了新的規(guī)則,增加記錄編碼的難度,保證記錄的唯一性(保證節(jié)點之間的同步)。
區(qū)塊鏈的應(yīng)用
區(qū)塊鏈的雛形在很早之前就已經(jīng)誕生,比特幣的設(shè)計原理就是基于此,如今,區(qū)塊鏈已經(jīng)開始逐漸應(yīng)用到各個領(lǐng)域,金融,物流,公共服務(wù),銀行體系中逐漸引入?yún)^(qū)塊鏈技術(shù)。中央銀行在16年就表態(tài)支持區(qū)塊鏈發(fā)展,同年11月,中國政府已經(jīng)把區(qū)塊鏈正式列入十三五規(guī)劃綱要中。
區(qū)塊鏈憑借去中心化,多方共識,交易溯源,不可篡改的特點使貴州超過3000億的脫貧脫貧攻堅基金,要通過300多個單位的運作,惠及493萬貧困人口,確保扶貧資金募款,投資,使用管理等環(huán)節(jié)正確運作。
馬云在近兩年中,所提及最多的概念就是信用體系,因為信用使得中國電子商務(wù)獲得了突飛猛進的發(fā)展,互聯(lián)網(wǎng)在未來將會像空氣一樣圍繞在每個人的身邊,因此一個合理可靠的信用體系顯得尤為重要。為此,馬云著力打造一個可靠的信用體系,二螞蟻金服便是馬云為之構(gòu)想。
馬云認為,未來人們的生活將無現(xiàn)金,并可以用信用兌換商品。這一實現(xiàn),十分需要一種革命性的信用機制。這一機制在2016年的支付寶App里已經(jīng)悄然 上線---螞蟻區(qū)塊鏈。
技術(shù)角度理解區(qū)塊鏈
區(qū)塊鏈的本質(zhì)
區(qū)塊鏈其實是一種特殊的分布式數(shù)據(jù)庫。主要作用是用來存儲信息,任何信息都可以寫入?yún)^(qū)塊鏈,也可以讀取出區(qū)塊鏈中的數(shù)據(jù)。
所有用戶都可以建設(shè)服務(wù)器加入?yún)^(qū)塊鏈網(wǎng)絡(luò)中,變?yōu)橐粋€節(jié)點。區(qū)塊鏈中沒有中心節(jié)點,所有的節(jié)點都是平等的,都保存著整個數(shù)據(jù)庫,可以向任何節(jié)點讀數(shù)據(jù)和取數(shù)據(jù),因為所有的節(jié)點數(shù)據(jù)都會被同步,保證區(qū)塊鏈的一致性和正確性。
區(qū)塊鏈的特點
區(qū)塊鏈的最大特點就是去中心化,而且是徹底的無中心。區(qū)塊鏈沒有管理員制度,也就代表了沒有人可以使用上帝視角對區(qū)塊鏈進行審核和隨意的修改數(shù)據(jù),人人都可以寫入數(shù)據(jù),那怎么保證區(qū)塊鏈中數(shù)據(jù)的正確性呢?這就是區(qū)塊鏈的魅力所在!
區(qū)塊
區(qū)塊鏈?zhǔn)怯梢粋€一個的區(qū)塊相連接形成的。每個區(qū)塊有兩部分組成,分別是區(qū)塊頭和區(qū)塊體,區(qū)塊頭用來記錄區(qū)塊的信息,區(qū)塊體用來記錄實際數(shù)據(jù)。
區(qū)塊鏈頭部包含了很多區(qū)塊的元信息:
區(qū)塊生成時間
實際數(shù)據(jù)(即區(qū)塊體的)的Hash
上一個區(qū)塊的Hash
……
Hash就是計算機可以對任意內(nèi)容計算出一個長度相同的特征值,區(qū)塊鏈的Hash長度為256位,不管什么數(shù)據(jù)都會計算出一個256位的二進制數(shù)字,并且可以保證只要數(shù)據(jù)內(nèi)容不同,對應(yīng)的Hash一定不同。
Hash的不可修改性
區(qū)塊與Hash為一一對應(yīng)的關(guān)系,每個區(qū)塊的Hash 都是針對“區(qū)塊頭“計算的。
區(qū)塊頭包含著許多內(nèi)容,這就說明如果當(dāng)前的區(qū)塊發(fā)生了數(shù)據(jù)變化,或者上一個區(qū)塊的Hash變了,一定會引起后一個區(qū)塊的Hash變化。
加入有人修改了一個區(qū)塊,改區(qū)塊的Hash就變化了,為了讓后面的區(qū)塊還能連接修改過的區(qū)塊,必須修改后面所有的區(qū)塊,否則修改的區(qū)塊就脫離區(qū)塊鏈了。因為Hash的計算很耗時間,所以說同時修改多個區(qū)塊幾乎不可能。
正是通過這種聯(lián)動機制,區(qū)塊鏈保證了自身的可靠性,數(shù)據(jù)一旦寫入,就無法被篡改。這就像歷史一樣,發(fā)生了就是發(fā)生了,從此再無法改變。
采礦
為了保證區(qū)塊鏈各個節(jié)點之間的同步性,新區(qū)塊的添加速度都不能太快。例如,你剛同步好了一個區(qū)塊,準(zhǔn)備基于它生成一個新的區(qū)塊,就在這時一個節(jié)點比你早一步進行了區(qū)塊的生成,你不得不放棄進行一般的計算再次同步新生成的區(qū)塊,畢竟,一個區(qū)塊后邊只能接一個區(qū)塊,所以你別無選擇,只能停下來立即同步。
于是,為了讓添加新區(qū)塊變得困難,故意設(shè)計了海量運算,只有通過大量的計算才可以得到當(dāng)前區(qū)塊的有效Hash,由于計算量太大,所以添加新區(qū)塊變得異常的緩慢,平均每10分鐘全網(wǎng)出一個區(qū)塊,一個小時出六個。
其實這個過程就是采礦,因為計算有效 Hash 的難度,好比在全世界的沙子里面,找到一粒符合條件的沙子。計算 Hash 的機器就叫做礦機,操作礦機的人就叫做礦工。
難度系數(shù)
計算一個Hash就這么難嗎?對,就這么難,計算機也不例外。因為Hash不是隨便有個就行的,需要符合一定的條件才會被區(qū)塊鏈認可從而添加為新區(qū)塊,如果不符合條件,不好意思,回去重新算。
區(qū)塊頭包含一個難度系數(shù),這個值決定了計算Hash的難度,比如第100000個區(qū)塊的難度系數(shù)為 3,845,539,970,657 。
區(qū)塊鏈協(xié)議規(guī)定,使用一個常數(shù)除以難度系數(shù),可以得到目標(biāo)值,顯然難度系數(shù)越大,目標(biāo)值越小。Hash的有效性與目標(biāo)值有關(guān),只有小于目標(biāo)值的Hash才是有效的,否則無效,重新計算。由于目標(biāo)值非常小,Hash小于該值得幾率非常小,也許計算十億次才算中一次,這就是采礦的難度。區(qū)塊頭里面還有一個Nonce的值記錄了計算的次數(shù),例如100000個區(qū)間的Nonce的值為0x9f63aafeec219854。
難度系數(shù)調(diào)節(jié)
其實根本沒辦法保證一定十分鐘出一個區(qū)塊,有的一分鐘就出來了,有的要一個小時甚至幾天幾月。為了把產(chǎn)出率限制在十分鐘一個,設(shè)計者設(shè)計出了難度系數(shù)動態(tài)調(diào)節(jié)機制,每兩周調(diào)節(jié)一次,隨著時間的推移,難度系數(shù)越調(diào)越高,導(dǎo)致了采礦越來越難。
區(qū)塊鏈的分叉
區(qū)塊鏈?zhǔn)强煽康?,但是還有一個問題,如果兩個人同時向區(qū)塊鏈寫入數(shù)據(jù),出現(xiàn)分支怎么辦?
現(xiàn)在的規(guī)則是,一長一短選長的。如果出現(xiàn)分支,看哪根分支在分叉點后先到達6個新區(qū)塊。
為了保證數(shù)據(jù)的可靠性,區(qū)塊鏈也有自己的代價。一是效率,數(shù)據(jù)寫入?yún)^(qū)塊鏈,最少要等待十分鐘,所有節(jié)點都同步數(shù)據(jù),則需要更多的時間;二是能耗,區(qū)塊的生成需要礦工進行無數(shù)無意義的計算,這是非常耗費能源的。
總結(jié)
以上是生活随笔為你收集整理的计算机行业新技术 —— 区块链的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Landsat数据下载与介绍
- 下一篇: 蓝牙耳机规格(HFP、HSP、A2DP、