本文是在記錄作者在區(qū)塊鏈技術(shù)的入門學(xué)習(xí)进倍。
所謂道生一,一生二购对,二生三猾昆,三生萬物。本文要闡述的就是區(qū)塊鏈技術(shù)這個“道”生出來的“一”骡苞,即何為區(qū)塊鏈垂蜗。
首先要明確的是,比特幣是區(qū)塊鏈技術(shù)的一種應(yīng)用解幽,中本聰在其08年原始論文中贴见,并沒有提及到區(qū)塊鏈。在研究比特幣之前躲株,必須要研究其底層的區(qū)塊鏈技術(shù)片部。
區(qū)塊鏈技術(shù)屬于計算機(jī)信息技術(shù),更嚴(yán)格是地說霜定,它是計算機(jī)信息技術(shù)中的數(shù)據(jù)庫部分档悠,承擔(dān)數(shù)據(jù)存儲的作用。理解了這一層然爆,那就可以很清楚地認(rèn)識到站粟,區(qū)塊鏈就是一種新類型的數(shù)據(jù)庫黍图。那么數(shù)據(jù)庫有什么屬性呢曾雕?很簡單,可以總結(jié)為兩點(diǎn)助被,一是多個數(shù)據(jù)庫之間的協(xié)同工作剖张,二是數(shù)據(jù)庫本身的增刪改查能力,這是數(shù)據(jù)庫共性的東西揩环。那么作為區(qū)塊鏈技術(shù)與其他數(shù)據(jù)庫相比搔弄,例如Mysql、sqlserver等丰滑,其特性顯現(xiàn)在哪里顾犹,這是接下來要重點(diǎn)解決的。
當(dāng)前的問題是褒墨,區(qū)塊鏈中炫刷,數(shù)據(jù)庫與數(shù)據(jù)庫之間是如何協(xié)同的?
要回答這個問題郁妈,首先要了解分布式數(shù)據(jù)庫的概念浑玛。通常,使用分布式數(shù)據(jù)庫有兩個目的噩咪,一是為了提高數(shù)據(jù)存取效率顾彰,二是防止因不可抗力導(dǎo)致某一數(shù)據(jù)庫數(shù)據(jù)遺失產(chǎn)生的問題极阅,故比較重大的系統(tǒng)都會采用分布的存儲方案。區(qū)塊鏈就是一個分布式數(shù)據(jù)庫涨享,但它與其他分布式數(shù)據(jù)庫相比筋搏,又有一些特性。在區(qū)塊鏈中厕隧,一個個分布各地的數(shù)據(jù)庫都是一個個節(jié)點(diǎn)拆又,每個節(jié)點(diǎn)中都保存著相同的數(shù)據(jù),任何人都可以輕易地創(chuàng)建新的節(jié)點(diǎn)栏账,擁有這些節(jié)點(diǎn)中的數(shù)據(jù)帖族,但這些數(shù)據(jù)都是經(jīng)過加密的,只有擁有密鑰的才能查看對應(yīng)的原始數(shù)據(jù)挡爵。
由此可看出一些區(qū)塊鏈的特性竖般。第一,數(shù)據(jù)篡改非常困難茶鹃,只改本節(jié)點(diǎn)的數(shù)據(jù)是得不到其他節(jié)點(diǎn)的承認(rèn)涣雕;第二,任何人都可以輕易得到數(shù)據(jù)闭翩,但加密的數(shù)據(jù)保證數(shù)據(jù)不會泄露挣郭。當(dāng)然,這并非區(qū)塊鏈的全部特性疗韵。
現(xiàn)階段解決的問題只能證明區(qū)塊鏈中一個個節(jié)點(diǎn)是孤立地存在著兑障,無法說明各個節(jié)點(diǎn)之間如何通訊的,故接下來要弄清楚各個節(jié)點(diǎn)之間如何保持通訊蕉汪。
任何人都可以輕易更改自己節(jié)點(diǎn)的數(shù)據(jù)流译,但最重要的一點(diǎn)是,如何讓你本節(jié)點(diǎn)做的數(shù)據(jù)變動得到其他節(jié)點(diǎn)的認(rèn)可者疤?這個數(shù)據(jù)變動其實就是數(shù)據(jù)增加福澡,數(shù)據(jù)刪除和修改幾乎不可能此問題后文會詳細(xì)解釋。這個問題可分為兩方面驹马,一是數(shù)據(jù)的存儲權(quán)限革砸,二是數(shù)據(jù)的來源。先解決數(shù)據(jù)的存儲權(quán)限問題糯累,區(qū)塊鏈技術(shù)采用共識機(jī)制算利,就是你這個節(jié)點(diǎn)要做存儲數(shù)據(jù)的工作,必須得到其他節(jié)點(diǎn)的認(rèn)可寇蚊,這個認(rèn)可機(jī)制在區(qū)塊鏈設(shè)計里就要確定笔时,例如比特幣的認(rèn)可是51%的全節(jié)點(diǎn)算力。那如何得到認(rèn)可呢仗岸?換句話說允耿,如何讓其他節(jié)點(diǎn)承認(rèn)你有存儲數(shù)據(jù)的權(quán)限借笙?區(qū)塊鏈采用工作量證明,在數(shù)學(xué)領(lǐng)域较锡,有一些問題推導(dǎo)困難业稼,但證明容易,被認(rèn)可的節(jié)點(diǎn)需要根據(jù)系統(tǒng)提供的問題推導(dǎo)結(jié)果蚂蕴,并發(fā)送給其他節(jié)點(diǎn)用于驗證正確性低散,若正確,則會得到其他節(jié)點(diǎn)的認(rèn)可骡楼,若得到一定比例節(jié)點(diǎn)的認(rèn)可熔号,那就證明你被認(rèn)可有存儲的權(quán)限。
解決了共識機(jī)制這個問題鸟整,再來說說數(shù)據(jù)來源這個問題引镊。
先分析數(shù)據(jù)類型,理論上篮条,任何類型的數(shù)據(jù)都可以在區(qū)塊鏈上存儲弟头,但實際上,存儲的數(shù)據(jù)類型是由區(qū)塊鏈產(chǎn)品的固有屬性決定的涉茧,所以它是脫離不了區(qū)塊鏈產(chǎn)品的應(yīng)用場景赴恨。故此處不作深入分析。
接下來分析數(shù)據(jù)來源伴栓。數(shù)據(jù)來源于各個節(jié)點(diǎn)伦连,因此執(zhí)行存儲權(quán)限的節(jié)點(diǎn)只擁有選擇數(shù)據(jù)的權(quán)限,它是不能創(chuàng)造數(shù)據(jù)挣饥。在比特幣中系統(tǒng)中除师,這個數(shù)據(jù)稱為交易,數(shù)據(jù)產(chǎn)生在兩個節(jié)點(diǎn)互相簽名間扔枫,這個交易過程涉及太多密碼學(xué)的內(nèi)容,此處不再深入分析锹安。
通過以上的分析短荐,我們已經(jīng)解決了區(qū)塊鏈中各個節(jié)點(diǎn)的通訊問題。
接下來要解決的問題是叹哭,在單個節(jié)點(diǎn)中忍宋,數(shù)據(jù)如何增刪改查?此問題留待后文解決风罩。