很多人認(rèn)識區(qū)塊鏈的入門通道、區(qū)塊鏈應(yīng)用鼻祖——比特幣網(wǎng)絡(luò),相信很多小伙伴對它都不陌生。但你真的了解比特幣網(wǎng)絡(luò)背后的工作原理嗎?比特幣系統(tǒng)不屬于任何一個人或任何一家公司/組織,也沒有員工、老板和股東來維持它的運轉(zhuǎn)。換言之,比特幣系統(tǒng)不受任何人的控制。那全世界這么多的節(jié)點和參與者憑什么信任它呢?又如何避免比特幣被非法復(fù)制呢?
本次萬向區(qū)塊鏈小課堂將系統(tǒng)性地介紹比特幣的工作原理,以及比特幣的底層技術(shù)——區(qū)塊鏈在數(shù)字貨幣以外的商業(yè)應(yīng)用潛力,保證“說人話”、言簡意賅、通俗易懂,誠邀大家細(xì)品~
缺少銀行這類管理中心的交易系統(tǒng)通常會面臨以下3大挑戰(zhàn):
· 資產(chǎn)確權(quán)
· 防止交易信息造假
· 確定交易記錄的可靠性和權(quán)威性
然而比特幣在沒有金融機構(gòu)這樣的第三方管理中介下,卻能應(yīng)對這三大挑戰(zhàn)。看懂比特幣如何應(yīng)對這3大挑戰(zhàn),自然就能理解比特幣的工作原理了。下面我們就來詳細(xì)看看比特幣是如何攻克這3大難關(guān)的。
挑戰(zhàn)一:資產(chǎn)確權(quán)
當(dāng)有人向比特幣區(qū)塊鏈公布一筆交易記錄時,如何確定這筆交易確實是由比特幣的所有者發(fā)起的而不是騙子在意圖造假呢?這就要用到計算機加密技術(shù)。
非對稱加密
比特幣采用的是非對稱加密技術(shù),需要用到一對密鑰。經(jīng)過其中一個密鑰加密的數(shù)據(jù)可以用另一個密鑰解密。使用過程中,公開一個密鑰,即公鑰,另一個非公開的密鑰就對應(yīng)地成為私鑰(公鑰類似互聯(lián)網(wǎng)里的賬號,私鑰類似登陸密碼)。
如何用這對密鑰來發(fā)送信息呢?假設(shè)《銀河護衛(wèi)隊》里的星爵想給格魯特發(fā)送一條消息說:“哈嘍,格魯特”,但又要確保超級大反派滅霸不能讀取這條消息,該怎么辦呢?我們可以讓格魯特創(chuàng)建一對密鑰,把公鑰交給星爵,自己保管私鑰。星爵可以用公鑰加密信息,經(jīng)過加密的信息看上去就像在胡言亂語,只有格魯特用私鑰解密之后才能知道星爵到底說了什么。
數(shù)字簽名
比特幣還會反向運用這對密鑰來驗證數(shù)據(jù)創(chuàng)建者的身份,即把密鑰看作用戶的數(shù)字簽名。我們還是請銀河護衛(wèi)隊來幫演繹這個情景。假設(shè)格魯特想向星爵發(fā)送一條消息說“我是格魯特”,但星爵如何確定這條信息真的來自格魯特,而不是其他人冒充格魯特發(fā)的呢?格魯特可以用私鑰加密這條信息,星爵收到信息后用對應(yīng)的公鑰解密信息,就可以讀取“我是格魯特”這條信息了。而且由于公私密鑰的對應(yīng)關(guān)系存在唯一性,星爵用公鑰成功解密信息就能證明信息確實是由私鑰持有者格魯特發(fā)出的,否則星爵是不可能解開這條信息的。
如果有人一個月前進行了一筆比特幣交易,現(xiàn)在又反悔了,想悄悄撤回交易,比特幣這一去中心化系統(tǒng)里又缺少權(quán)威的管理者,怎么才能讓這種信息造假的陰謀無法得逞呢?這就要用到哈希算法。
哈希算法
哈希算法可以用于驗證數(shù)據(jù)的真實完整性。任何信息可以通過哈希函數(shù)運算得到一個哈希值,但是原始信息發(fā)生絲毫改變都會讓得到的哈希值變得完全不一樣。
假設(shè)星爵想將“12345”這串?dāng)?shù)字傳給格魯特,又擔(dān)心被滅霸中途截獲,篡改信息。他可以算出這串?dāng)?shù)字哈希值:FE100DDA6D28B2280B34FC228ADAB42E,然后將這串?dāng)?shù)字和他的哈希值同時傳給格魯特。格魯特在得到這串?dāng)?shù)字后同樣進行哈希運算,看看得到的哈希值跟星爵告訴他的是否一致。如果一致,說明格魯特和星爵擁有的原數(shù)字是一樣的,這串?dāng)?shù)字在傳輸過程中沒有遭到篡改或發(fā)生損壞。如果滅霸悄悄干預(yù)了數(shù)字傳輸過程,把原數(shù)字串改成了“12346”,再把錯誤數(shù)字傳給格魯特,格魯特算出的哈希值就會是:1761420899A8F0B731A2EE56A6F71567,與星爵給他的截然不同,自然就會發(fā)現(xiàn)數(shù)據(jù)被篡改了。
區(qū)塊鏈環(huán)環(huán)相扣
比特幣中,固定時間段內(nèi)的交易會被打包成一個區(qū)塊。每個區(qū)塊里都儲存著前一個區(qū)塊的哈希值。這些區(qū)塊通過哈希值前后相連,形成鏈條狀結(jié)構(gòu),也就是常說的區(qū)塊鏈。
下圖中3個區(qū)塊記錄了交易1到交易9的信息。
如果刪除掉第一個區(qū)塊中的交易3,那第2個區(qū)塊中的哈希值就會發(fā)生變化,證明第1個區(qū)塊中的交易信息被篡改了。
那可不可以嘗試修改第2個區(qū)塊,讓它儲存的哈希值呼應(yīng)被篡改后的第1個區(qū)塊中的信息呢?這也行不通。因為修改第2個區(qū)塊中的信息后,第3個區(qū)塊中的哈希值又無法與第2個區(qū)塊的信息對應(yīng)了,讓人一眼就能知道第2個區(qū)塊被篡改了。
由此可見,區(qū)塊鏈上的信息是不可篡改的。隨便改動一個區(qū)塊中的信息,就會使其與后一個區(qū)塊中的哈希值產(chǎn)生矛盾。只有逐個修改之后每個區(qū)塊中的信息才能掩護最初這個信息篡改動作,這樣一來原區(qū)塊鏈的信息就會被徹底改變,相當(dāng)于產(chǎn)生了一條新鏈。
挑戰(zhàn)三:確定交易記錄的可靠性和權(quán)威性
假設(shè)真有人篡改了每個區(qū)塊中的信息,創(chuàng)建了一條新鏈,我們應(yīng)該選擇相信新鏈還是舊鏈呢?如何才能確定兩者的可靠性和權(quán)威性呢?
工作量證明(Proof of Work)
這就要用到工作量證明。電腦會將前面講過的哈希值轉(zhuǎn)換成一串由“0”和“1”構(gòu)成的數(shù)字:
0010111011110100000001000001101010010010001011101111100001001010
我們可以規(guī)定只有哈希值以0開頭的區(qū)塊才能上鏈,這樣就有50%的概率得到一個符合要求的區(qū)塊。
0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
同理,我們?nèi)粢?guī)定只有哈希值以“00”開頭的區(qū)塊才能上鏈,概率就是25%。
00XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
如規(guī)定哈希值必須以32個“0”開頭的區(qū)塊才能上鏈,那概率大概就只有40億分之一了。
00000000000000000000000000000000XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
比特幣區(qū)塊鏈也設(shè)置了這樣的規(guī)定。但是鏈上每個區(qū)塊的哈希值都是恒定不變的,如何確保在輸入固定信息的情況下能得到一個符合規(guī)定的哈希值呢?這就需要在每個區(qū)塊中隨機加入任意一個數(shù)值,也稱為“隨機數(shù)”(nonce)。
進行哈希運算的時候要將隨機數(shù)與區(qū)塊中的數(shù)據(jù)相結(jié)合。比特幣區(qū)塊鏈中遍布全世界的計算機要從大量的隨機數(shù)中找到那個與現(xiàn)有區(qū)塊結(jié)合后能算出以特定數(shù)量“0”開頭的哈希值的隨機數(shù),才能讓這個區(qū)塊上鏈。這個尋找隨機數(shù)的過程就是工作量證明。
這個過程會消耗大量算力,完成時間也難以估量。在比特幣區(qū)塊鏈中,平均10分鐘會產(chǎn)生一個新區(qū)塊。但由于該區(qū)塊鏈中的整體算力水平一直在不斷提高,為了增加找到隨機數(shù)的難度,比特幣區(qū)塊鏈也在不斷增加規(guī)定哈希值開頭部分 “0”的個數(shù)。
最長鏈原則
工作量證明這一規(guī)則有效限制了新區(qū)塊產(chǎn)生的速率,那區(qū)塊數(shù)量越多、長度越長的鏈存在的時間也就越久。因此,個人是不可能制造比官方比特幣區(qū)塊鏈更長的鏈的,除非這個人擁有的算力超過該系統(tǒng)中其他所有人算力的總和。
基于以上原因,當(dāng)系統(tǒng)中出現(xiàn)多條鏈時,比特幣用戶只認(rèn)可區(qū)塊數(shù)量最多,存在時間最長的這條鏈,并相信這條鏈上的信息是權(quán)威可靠的。
區(qū)塊鏈潛在的應(yīng)用場景
除了比特幣,區(qū)塊鏈還有哪些應(yīng)用前景?
我們在上文中從3方面簡要解釋了比特幣區(qū)塊鏈的工作原理:
· 用數(shù)字簽名確權(quán)比特幣
· 用哈希驗證鏈上交易的真實完整性
· 用工作量證明避免虛假區(qū)塊上鏈
由此可見,比特幣就是一個人人都可以信任的去中心化賬本。但是這個賬本除了記錄貨幣交易信息之外,還可以記錄其他多種信息,讓其他機構(gòu)也能實現(xiàn)去中心化的信息分享。目前已在以下領(lǐng)域獲得應(yīng)用。
防止產(chǎn)品造假:生產(chǎn)商可以給每件產(chǎn)品貼上二維碼,并把二維碼編號記錄到區(qū)塊鏈中,該區(qū)塊鏈就可以記錄產(chǎn)品的流通信息,幫助消費者追蹤產(chǎn)品是否來自可靠的生產(chǎn)商,是否是真品。目前藥品生產(chǎn)行業(yè)造假情況日益嚴(yán)峻,危及病人健康,亟需這樣的區(qū)塊鏈解決方案。
防止物流信息造假:許多供應(yīng)鏈龐大復(fù)雜的公司同樣面臨信息造假的困擾。他們可以通過打造私有鏈來追蹤供應(yīng)商的物流信息。私有鏈所有者有權(quán)決定區(qū)塊鏈的參與方,供應(yīng)鏈中的中心企業(yè)可以在私有鏈中給各個供應(yīng)商設(shè)置不同權(quán)限。對于貨物從小型供應(yīng)商流轉(zhuǎn)到中型供應(yīng)商再流轉(zhuǎn)到大型供應(yīng)商最終進入生產(chǎn)商手中的多層級供應(yīng)鏈來說,區(qū)塊鏈有助于優(yōu)化整個流程的管理。在這種多層級供應(yīng)鏈中,小型供應(yīng)商端稍有差錯就會給生產(chǎn)商造成損失,但區(qū)塊鏈技術(shù)可以使整個流程中的信息變得公開透明,方便所有參與方及時發(fā)現(xiàn)問題解決問題。萬向區(qū)塊鏈的供應(yīng)鏈金融服務(wù)平臺就是一個典型的應(yīng)用案例。
促進協(xié)同合作:汽車保險理賠通常需要多家保險公司共享數(shù)據(jù)、協(xié)作解決。運用區(qū)塊鏈管理相關(guān)信息和數(shù)據(jù)可以讓這些保險公司放心地信任鏈上數(shù)據(jù)和信息的真實性,不需要再耗費人力檢查驗證數(shù)據(jù)和信息,從而為保險公司降低人力成本,同時提高理賠辦理效率,提升車主滿意度。
區(qū)塊鏈商業(yè)挑戰(zhàn)和機遇
近年來,區(qū)塊鏈的概念被炒得很熱,其中有很多夸大的成分。對于企業(yè)來說最關(guān)鍵的是要考慮是否有能力用好區(qū)塊鏈。
另外,誰來為投資區(qū)塊鏈買單也是一個問題。企業(yè)肯定會有這樣的顧慮:憑什么要我花錢來打造一個區(qū)塊鏈,方便行業(yè)里其他公司合作共贏?花錢的是我,結(jié)果好處卻被大家瓜分了。這就體現(xiàn)了私有鏈和聯(lián)盟鏈的優(yōu)勢,花錢打造私有鏈或聯(lián)盟鏈的一方有權(quán)管理這個區(qū)塊鏈,確保自身收益最大化。
盡管困難重重,但區(qū)塊鏈蘊含的商業(yè)價值還是十分可觀的。區(qū)塊鏈的特性就是讓互不信任甚至互為競爭對手的人或是企業(yè)能夠放心地交換信息。所以要找到商業(yè)中信息交換不暢引發(fā)的問題,對癥下藥,運用區(qū)塊鏈加以解決,就能讓參與方各取所需,實現(xiàn)多方利益的最大化。