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