從零認識區(qū)塊鏈(中):區(qū)塊鏈技術解密
上一篇《從零認識比特幣(上):從比特幣談起》,我詳細介紹了比特幣的起源、原理、交易、存儲等,這一篇,我來講解下比特幣的底層技術——區(qū)塊鏈,同時介紹比特幣的局限與改進。
我們經常看到各大媒體爭相報道,區(qū)塊鏈具有去中心化、不可篡改、不可偽造的特點,為什么具有這些特點呢?看完這篇文章,你就明白。
什么是區(qū)塊鏈
名稱的由來
前面我們說過,比特幣的底層實現(xiàn)是區(qū)塊鏈技術。那區(qū)塊鏈這個詞怎么來的呢?早期比特幣剛出現(xiàn)的時候,人們用首字母大小寫來區(qū)分比特幣和實現(xiàn)比特幣的技術,把比特幣叫做Bitcoin,把實現(xiàn)比特幣的技術叫bitcoin,可見當時人們對實現(xiàn)比特幣的技術還是很關注的。到后來,比特幣越來越火,輿論十分火熱,為了能把比特幣和實現(xiàn)比特幣的技術區(qū)分開,根據(jù)比特幣的技術特性,于是用“區(qū)塊鏈”來代指比特幣實現(xiàn)的技術。
區(qū)塊鏈的定義
區(qū)塊鏈并不特指某一個技術,而是多種技術的集合,比如時間戳、工作量證明機制、非對稱加密、UTXO等。中本聰也是通過這些技術的集大成,從而創(chuàng)造了比特幣區(qū)塊鏈。
區(qū)塊鏈的技術特性
開篇說到區(qū)塊鏈具有去中心化、不可篡改、不可偽造的特點,下面我們按照區(qū)塊鏈的這些特性來了解下區(qū)塊鏈的技術。
去中心化
區(qū)塊鏈的去中心化特性是由非對稱加密技術、分布式存儲來體現(xiàn)的。
非對稱加密技術
簡單來講就是加密和解密的時候使用不同密鑰的加密算法。
舉個栗子:
A要向B發(fā)送消息,A和B都要產生一對用于加密和解密的公鑰和私鑰。私鑰,好比一把私有的鑰匙,只有鑰匙的擁有者才能打開,是用來加密的。公鑰,好比一把公開的鑰匙,可以告訴給需要的人,是用來解密用的。在這個過程中,A的私鑰保密,A的公鑰告訴B;B的私鑰保密,B的公鑰可以告訴A。A要給B發(fā)送時,A用B的公鑰加密信息。B收到這個消息后,B用B的私鑰解密A的消息。其他所有收到這個信息的人都無法解密,因為只有B才擁有這把私鑰。
在上一篇文章中,我們介紹的比特幣的轉賬,填寫的對方比特幣地址,就是公鑰,轉賬時附上的簽名,相當于你的私鑰。
可能你會疑問,非對稱加密怎么就體現(xiàn)了區(qū)塊鏈的去中心化呢?
我認為中心化機構的存在是為了能保證交易的進行,而在比特幣網絡里,礦工只要驗證公鑰和私鑰就證明該筆交易是正確的,也就保證了交易的進行,這樣即使沒有中心化的機構來參與,交易也可以安全地進行,所以非對稱加密也就體現(xiàn)了去中心化。
不可篡改
區(qū)塊鏈的工作量證明機制、最長鏈機制保證了區(qū)塊鏈上任一節(jié)點都是不可篡改的,也就保證了交易的不可篡改性。
工作量證明
簡單來說就是一份證明,用來確認你做過一定量的工作。比如你拿到了大學的畢業(yè)證,就能夠客觀證明你進行過大學四年級的學習,具備一個大學生的學習能力。在比特幣網絡里,工作量證明直接體現(xiàn)就是算力的大小,你算力越大,那你獲得該區(qū)塊的記賬權概率越大,那么你記出來的賬本就是通過一定量的計算才算出來的,該賬本就能被其他礦工認可。
最長鏈機制
區(qū)塊鏈要求所有節(jié)點遵守一個公式,就是所有保存到本地的區(qū)塊鏈,都必須是被本地節(jié)點驗證通過的最長鏈。由于區(qū)塊鏈的每個區(qū)塊必須引用它的上一個區(qū)塊,所以最長鏈是最難推翻的。如果有人想要篡改該節(jié)點區(qū)塊,必須擁有非常大的算力,至少超過50%,否則基本上沒有篡改的可能。
不可偽造
這個得益于比特幣的UTXO結構,英文全稱Unspent Transaction Output,也就是未花費的交易輸出。這種特性使得比特幣世界里的每一筆轉賬,都能追溯到上一筆交易,也就保證了交易的真實性。
舉個栗子:
假設我要給你20元錢,其中2張5元紙幣,1張10元紙幣。而我的這2張5元,來自水果店老板給我的找零,這1張10元來自士多店給我的找零,拿到這三張鈔票之后,我還沒花出去,才能給你。這就叫未花費的交易輸出。水果店老板的這2張5元鈔票,又來自其他人,士多店的1張10元鈔票,也可能來自于其他人。這樣的鈔票,可以順藤摸瓜一直追溯到發(fā)行的那一刻,由此驗證這三張鈔票都是真的。
好了,比特幣的實現(xiàn)技術就介紹完了,你了解有多少呢?最后我來介紹下比特幣的不足。
比特幣的不足
腳本語言太復雜,開發(fā)難度大
比特幣的腳本語言是基于堆棧的形式的編譯語言,對開發(fā)者來說使用這種語言開發(fā)難度較大,難以上手。
生態(tài)系統(tǒng)基礎差,缺乏足夠的參與者
比特幣生態(tài)沒有完善的開發(fā)工具,也沒有豐富的文檔和教程。這不同于當今主流的Android開發(fā)環(huán)境,全球有大量的開發(fā)者、運營商、芯片廠商等活躍在整個生態(tài)中,并且有谷歌等巨頭企業(yè)推進?;谶@點跟上一點,比特幣區(qū)塊鏈就很難吸引開發(fā)者,更別說形成良好的開發(fā)生態(tài)了。
腳本語言不符合圖靈完備標準
圖靈完備是指一切可計算的問題都能計算,比特幣區(qū)塊鏈上的狀態(tài)表示都是針對比特幣這款應用的,只能記錄交易,而對于復雜的環(huán)境,用比特幣區(qū)塊鏈上的語言無法表示。
比特幣的改進
萊特幣的誕生
上一篇文章我們說過比特幣的原理,10分鐘出一次賬單,也就是你的交易至少要等10分鐘才交易完成。在2011年10月,一位叫Charlie Lee的亞裔美國人,他認為比特幣這種確認太慢,十分鐘才能確認一次,不能滿足現(xiàn)在的支付需求,于是通過改造算法,發(fā)明了萊特幣(Litecoin)。關于萊特幣的一些特性,這里不詳細展開了,大家有興趣可以去了解下。
以太坊
2013年末,一位僅19歲的俄羅斯少年Vitalik Buterin發(fā)表了以太坊白皮書《以太坊:下一代智能合約和去中心化應用平臺》,從此,一個現(xiàn)像級、對開發(fā)者友好的區(qū)塊鏈平臺誕生了。它通過其豐富的編程語言和完善的開發(fā)工具,解決了比特幣對開發(fā)者不友好的問題。對于用戶端,它可以讓任何人都能輕松的在以太坊上建立新的協(xié)議和智能合約,真是開發(fā)者的福利呀。
關于以太坊的詳細介紹,我下篇文章會說到,歡迎大家關注喲。
好了,這篇分享就到這,我們主要講解了區(qū)塊鏈的技術原理、比特幣的不足與改進等。在下篇文章中,我會詳細跟大家分享下區(qū)塊鏈分類及應用領域,敬請期待喲。
相關閱讀
本文由 @?lison 原創(chuàng)發(fā)布于人人都是產品經理。未經許可,禁止轉載。
沒明白公鑰和私鑰的關系
公鑰和私鑰的加密解密寫反了吧?