區(qū)塊鏈?zhǔn)鞘裁垂恚课蚁胝f的是有90%的IT人都不知道什么是區(qū)塊鏈,特別是它能帶來什么?因?yàn)楸救司褪窃谝患矣猩锨Ъ夹g(shù)人員的IT公司,說到區(qū)塊鏈大家的反應(yīng)基本上是:啊最近這個報道挺多的,好象是什么高大上的技術(shù),聽說是分布式的,能不能用到Fintech上呢?是不是可以替代MySQL數(shù)據(jù)庫啊?
這里拋磚引玉,歡迎大家展開聯(lián)想。
區(qū)塊鏈的名詞解釋就不多說了,百科上有的是,谷哥百度隨便一搜就好,往下看前最好先做點(diǎn)基礎(chǔ)閱讀。不過真想要理解還真不容易,網(wǎng)上的報道感覺都是想搞個大新聞,對于想究根問底的IT人來說用處不大,看論文,那密碼學(xué)的東東又把人引入另一個技術(shù)深淵;玩玩比特幣,那經(jīng)濟(jì)學(xué)家都弄不明白的貨幣政策能把人繞暈。
所以這里想通過通谷易懂的類比的手法,跟IT人聊聊什么是區(qū)塊鏈,主要是它的意義,本人接觸區(qū)塊鏈半年多,非專家,繆誤難免,不過最喜歡大家來批判討論。OK,ACTION...
做IT多少懂點(diǎn)電腦以及它的歷史,就它了,我要說區(qū)塊鏈就相當(dāng)于電腦里的那塊硬盤,這是一種狹義的說法,如果看報道的話,里面說的區(qū)塊鏈指的是裝有硬盤的電腦,這是廣義說法。但在以下說到區(qū)塊鏈,我是說狹義的說法。
一臺大電腦
由于互聯(lián)網(wǎng)把全世界聯(lián)接起來了,可以把全世界看成一臺大“電腦”,互聯(lián)網(wǎng)是這臺電腦的“主板”是數(shù)據(jù)總線,可是在區(qū)塊鏈(相當(dāng)于硬盤)之前,這是一臺沒有持久化存儲的設(shè)備的電腦,類似90年代的8086機(jī)器甚至是單板機(jī),很原始的那種。稍微先進(jìn)一點(diǎn)的是這臺“電腦”可以有很多終端,大家通過終端屏幕和鍵盤可以同時使用同一臺電腦。由于沒有持久化存儲(硬盤),每次來上機(jī)幾乎都要從零開始,這點(diǎn)太煩人了,記得當(dāng)年學(xué)校上機(jī)時(APPLEII),剛敲完一個游戲代碼進(jìn)去玩沒幾分鐘就下課了,下次課又得從頭敲。互聯(lián)網(wǎng)剛開始時也是沒有存數(shù)據(jù)的,如ICQ是不負(fù)責(zé)存聊天記錄的,后來的QQ才存了聊天記錄,這相當(dāng)于“電腦”升級了一點(diǎn),可以用自帶磁盤了,QQ這種土壕還把自已的磁盤掛上去給大家用,當(dāng)然先提是你要用QQ這個軟件才行,不過QQ說我這磁盤空間有限只保留最近一年的記錄數(shù)據(jù),而且要是哪天土壕鬧情緒,把磁盤一拔,大家的數(shù)據(jù)就全沒了。很快做銀行的這些個大土壕也出手了(互聯(lián)網(wǎng)金融),他們各自把磁盤往上一掛,說大家都來我這開戶吧,你的賬戶數(shù)據(jù)就存我這了,我這用的是3寸盤,比QQ那5寸盤安全多了。云計算云存儲這個超級土壕也來了,我這容量超大速度超快(相當(dāng)于硬盤吧),大家隨便用。可是再大的土壕也有沒落的時候,大小只是沒落的機(jī)率不同而已(沒聽說過銀行擠兌風(fēng)波嗎?),到時土壕一拔磁盤,大家就血本無歸啊。得找靠譜點(diǎn)的土壕,最好是老師(ZF)能管教到的,到時找老師鬧一鬧多少能要回點(diǎn)本錢。
于是有人說咱們不能這樣下去了,光靠土壕太讓人郁悶了,咱們大家不都有磁盤嗎,咱們自已存數(shù)據(jù)好了;張三說,不行吧?我這程序得訪問李四的數(shù)據(jù)才能跑,要是李四沒來上機(jī)咋整?這時有個網(wǎng)名叫中本聰?shù)耐瑢W(xué)開發(fā)了一套“區(qū)塊鏈”的技術(shù),解決了這個問題,基本套路是大家磁盤上都要存一份一模一樣的數(shù)據(jù),對這份數(shù)據(jù)大家都有相同訪問權(quán)限,這樣就不用糾結(jié)別人上沒上線了。為了保證這份數(shù)據(jù)的安全,區(qū)塊鏈要求這份數(shù)據(jù)只能追加不能更改更不能刪除,有點(diǎn)類似于磁帶這種順序?qū)懙脑O(shè)備,不同的是可以隨機(jī)讀;同時為了寫安全,要求所有寫進(jìn)去數(shù)據(jù)前要所有參與的同學(xué)用一段公認(rèn)的代碼校驗(yàn)過才行,但所有同學(xué)不可能都同時在線,所以實(shí)際上是由一名同學(xué)寫進(jìn)去,然后同步給其他同學(xué);為了防止某些同學(xué)惡作劇改代碼亂動數(shù)據(jù),這名負(fù)責(zé)寫數(shù)據(jù)的同學(xué)是不確定的,是通過一個算法定期?抓鬮決定,寫完以后還要同步給其它同學(xué)進(jìn)行校驗(yàn),是不是抓到鬮的同學(xué)寫的。抓到鬮的同學(xué)還能獲得一定量虛擬幣(比特幣)的獎勵。
區(qū)塊鏈的技術(shù)特色是分布式,去中心化,平等開放訪問,這些先不展開了,有興趣的同學(xué)去看看中本聰同學(xué)的論文。
一個良心網(wǎng)游
其實(shí)一開始只是中本聰和他的幾個好同學(xué)在用,后來大家覺著好玩,有點(diǎn)象個網(wǎng)游,還能打裝備(挖礦比特幣),于是大家就玩開了,參與的人越來越多。有一天有人找到一個開批薩店的玩家,說我用一萬件裝備換你一個批薩吧,于是成交了第一筆線下交易。這下不得了,因?yàn)楸忍貛乓婚_始就限定了2100萬個的上限,而且越來越難打裝備了,是象黃金一個稀缺的東東,于是同學(xué)們相互借點(diǎn)小錢的時候,也用裝備(比特幣)做抵押,甚至直接拿來賣錢了,后來這種黑市都在這“電腦”上公開了。在這群玩游戲的同學(xué)里這裝備(比特幣)那是扛扛的硬通貨啊,因?yàn)檫@游戲是真正的“裝備全部靠打”(借用某網(wǎng)流廣告語),不象某些土壕出的游戲,那游戲策劃就是天天想著怎么坑你錢,一言不合就印鈔票,打的裝備天天在貶值。銀行這些土壕還好點(diǎn),畢竟老師對他們盯得緊,而且學(xué)校飯?zhí)谜J(rèn)可他們的裝備(RMB)可用來打飯買菜,可飯?zhí)靡灿锌嘀裕鞣N小店競爭激烈,時不時也要超發(fā)一輪裝備來緩解一下。
錢這東西很容易招賊,各種坑蒙拐騙防不勝防,老賴多不勝數(shù),這時區(qū)塊鏈顯示他的好處了,因?yàn)閿?shù)據(jù)只能追加不能改,而且這賬本誰都能看得到,想賴賬是不可能的。對于喜歡簽合同的同學(xué)更有一項(xiàng)優(yōu)勢,你可以把合同的執(zhí)行邏輯寫到這份數(shù)據(jù)里,而且只要有滿足條件的數(shù)據(jù)出現(xiàn),就能自動執(zhí)行合同,當(dāng)然這合同也跟其它數(shù)據(jù)一樣只能追加不能改,大家都能看到,合同違約后的強(qiáng)制執(zhí)行一直是法院都沒法100%保證的事,在區(qū)塊鏈里就不是個事,抓到鬮的同學(xué)的代碼一定且必定會按合同忠實(shí)地自動執(zhí)行,這就是所謂智能合約。
去中心化
再說MySQL,NOSQL這些數(shù)據(jù)庫的差別,這些都是只能存儲訪問自已磁盤上數(shù)據(jù)的工具,管理的是私有的數(shù)據(jù),區(qū)塊鏈管理的是共享的數(shù)據(jù)。要說把MySQL的數(shù)據(jù)庫訪問接口共享不也一樣嘛?這是土壕的套路,區(qū)別是大家心里有沒有底啊。
有人說這里說的區(qū)塊鏈明明是磁盤嘛,怎么是硬盤了呢?硬盤可認(rèn)為是“電腦”里不可(不輕易吧)拆卸的部件,即使只有你一個人上機(jī)也能看到全部的數(shù)據(jù),幾乎是永久保存的數(shù)據(jù)。這里比喻是用的是磁盤介質(zhì),但是加持了區(qū)塊鏈技術(shù)后其特性也相當(dāng)于不可拆卸的完整的永久保存的,起到了現(xiàn)在硬盤的作用。當(dāng)然磁盤契硬盤比,訪問速度和容易都差得很多,這也是如今區(qū)塊鏈的毛病。
那電腦升級有了硬盤,是不是區(qū)塊鏈就沒用了呢?否!因?yàn)閰^(qū)塊鏈技術(shù)非常強(qiáng)調(diào)去中心化,這個圈子對土壕(權(quán)威,中心)是?嫉惡如仇,硬盤雖是計算中心負(fù)責(zé)維護(hù)比較靠譜,那也是中心,總比不了在自已磁盤上的數(shù)據(jù)令人安心,這段時間不是一堆云盤被封。另外還有個特性是硬盤比不了的,去中心化后區(qū)塊鏈的數(shù)據(jù)可以用“野火燒不盡,春風(fēng)吹又生”來形容,安全性級高,就算整個世界的電腦都崩潰了,只要還有一張磁盤在,就可以在電腦恢復(fù)后的幾個時內(nèi)遍地重生。比如本校的電腦關(guān)機(jī)維護(hù)了,可以帶上磁盤到其它學(xué)校去用,以后還可以回來再繼續(xù)用,這是硬盤比不了的,可以說區(qū)塊鏈上的數(shù)據(jù)是打不死的小強(qiáng)。
不過去中心化也有問題,比如兩個學(xué)樣的電腦上同時有人寫數(shù)據(jù),把別校的磁盤帶回本校后發(fā)現(xiàn)數(shù)據(jù)有沖突(數(shù)據(jù)鏈分叉),以哪個為準(zhǔn)呢?是個難題,目前的解決辦法比較粗爆,哪個磁盤上寫的次數(shù)多就以哪個為準(zhǔn),其它的作廢。于是有人想打這個的壞主意了,一件裝備兩邊賣,最后只有一邊會成功,相當(dāng)于改歷史數(shù)據(jù)了,只是成本比較高,要買很多上機(jī)票來拼命地寫數(shù)據(jù)。然而這招被中國班的一群實(shí)誠的發(fā)燒友給破了,由于該班為學(xué)校建機(jī)房出了不少力(建水電等基礎(chǔ)設(shè)施),給打了很大折扣(電費(fèi)便宜),他們就拼命地收集上機(jī)票來打裝備賣錢,搞得80%的上機(jī)位(三大礦池80%算力)都掌握在他們手中,他們花了不少成本打了一大堆裝備可不想讓人搞破壞,要知道只有掌握51%以上的機(jī)位才有可能作弊。
虛擬機(jī)
中本聰?shù)谋忍貛磐娴娜嗽絹碓蕉啵绊懘笃饋恚渌瑢W(xué)深受啟發(fā),然后開發(fā)出更快一點(diǎn),容量更大一點(diǎn)的區(qū)塊鏈網(wǎng)絡(luò),比較有名的如萊特幣。特別是有個叫以太坊的平臺,它把智能合約這塊做得更強(qiáng)大了,可以支持非常復(fù)雜的合同,它上面打的裝備叫以太幣,號稱是區(qū)塊鏈2.0版(這個是不是類似于U盾了?研究不深,待定)。這些個裝備現(xiàn)在有個統(tǒng)一的名稱叫數(shù)字貨幣。利用這些貨幣數(shù)據(jù),還開發(fā)了不少工具以方便同學(xué)們使用,比如數(shù)字錢包,方便不懂技術(shù)不怎么會玩的同學(xué)來進(jìn)行支付。
有數(shù)據(jù)存儲(區(qū)塊),有運(yùn)算能力(智能合約),有輸入輸出(區(qū)塊鏈應(yīng)用),這些組合起來,就有點(diǎn)虛擬機(jī)的味道了。比特幣虛擬機(jī),萊特幣虛擬機(jī),以太坊虛擬機(jī),它們都是建立在互聯(lián)網(wǎng)這臺宿主電腦里,虛擬機(jī)內(nèi)部自成體系,虛擬機(jī)之間,虛擬機(jī)與宿主機(jī)之間在底層完全隔離,只有通過應(yīng)用層的輸入輸出經(jīng)過嚴(yán)格檢驗(yàn)后才能互通,是松耦合關(guān)系。
銀行清算
各家銀行各有各的賬本存在各自磁盤里,如果是同一賬本里的賬戶間轉(zhuǎn)賬,銀行自已記完賬務(wù)數(shù)據(jù)就完成了;但跨行轉(zhuǎn)賬就出事了,銀行A的張三(賬戶)要轉(zhuǎn)1塊錢給銀行B的李四(賬戶),兩個銀行的磁盤都得記賬才行,但銀行B決不信任銀行A讓它來寫自已的磁盤,這樣吧,銀行A寫個證明有這筆交易蓋上鋼印,銀行B驗(yàn)證這個證明后自已寫到磁盤里記李四的賬,后來這個證明電子化了變成交易數(shù)據(jù)包,還有銀行用紙鈔發(fā)行了現(xiàn)金,張三存到銀行A的現(xiàn)金也得交給銀行B啊,要不李四來取錢銀行B可拿什么給啊。就是這個證明出了很多鬼,證明傳遞中丟了,被偽造,記重復(fù)了,所以后面還得進(jìn)行每天對賬;對賬完后,還得算算銀行A得銀行B轉(zhuǎn)交多少現(xiàn)金,完了還得運(yùn)鈔車給運(yùn)過去,這過程大家它叫清算。夠麻煩的吧,這還沒完,銀行有很多家啊,每兩家銀行間都得建立信任然后清算,一張大大的蜘蛛網(wǎng),所以后來出現(xiàn)了清算中心機(jī)構(gòu)(如銀聯(lián)、人行、SWIFT)幫忙清算,但是各銀行要給清算中心交保證金(頭寸),每筆交易還要收手續(xù)費(fèi),具體細(xì)節(jié)還有很多,這里不多說了,反正挺復(fù)雜又麻煩還不安全容易出錯成本還不小,過程復(fù)雜了少不了還要多等幾天,客戶體驗(yàn)真是不好。
那么,所有銀行都只用一個賬本不就好了嗎?但是這賬本存在哪個銀行的磁盤上,別家也不放心啊,萬一他跑路,全世界就完了;給老師(ZF)管磁盤?就算老師能且愿意干這活,別的班的老師(國家)也不放心吧。放比特幣那磁盤上?打不死的小強(qiáng)還支持記賬,可他們有自已的貸幣也只支持一個賬本,銀行沒法發(fā)行自已的貸幣記自已的賬啊。把他們的技術(shù)(區(qū)塊鏈)學(xué)了,咱們銀行聯(lián)合起來自己搞一個虛擬機(jī),我的地盤我作主,于是一個叫R3的聯(lián)盟成立了。