国产一区二区三区国产一区|国产乱伦免费视频|久章草在线无码视频观看|日韩精品无码一级毛片免费

  • <rt id="eoskm"><noscript id="eoskm"></noscript></rt>
    <dl id="eoskm"><small id="eoskm"></small></dl>
  • <abbr id="eoskm"><acronym id="eoskm"></acronym></abbr>
    <rt id="eoskm"><small id="eoskm"></small></rt><rt id="eoskm"><abbr id="eoskm"></abbr></rt>
  • <tbody id="eoskm"><cite id="eoskm"></cite></tbody>
  • 您當(dāng)前的位置 :首頁 > 數(shù)字貨幣 > 區(qū)塊鏈  正文
    關(guān)鍵詞:

    區(qū)塊鏈?zhǔn)鞘裁?,如何簡單易懂地介紹區(qū)塊鏈?

    深圳信息港     www.hnyueyi.com.cn  

    區(qū)塊鏈?zhǔn)鞘裁?,如何簡單易懂地介紹區(qū)塊鏈?

    事情是這樣的,最近我的室友Hasaki一直在問我區(qū)塊鏈和比特幣的事情,我嘗試了很多種不通的姿勢以求簡單通俗形象生動地跟他解釋什么是區(qū)塊鏈技術(shù),但是最后都失敗了。因此我萌生了要寫一篇BlockChain for Babies(又名:如何向你的弱智室友解釋區(qū)塊鏈)的想法,以求能簡單直觀生動形象地向?qū)^(qū)塊鏈技術(shù)不了解但是想知道區(qū)塊鏈?zhǔn)鞘裁吹娜私榻B區(qū)塊鏈技術(shù)或者比特幣


    因?yàn)槊嫦虻淖x者是不想知道具體技術(shù)實(shí)現(xiàn)只想了解區(qū)塊鏈的人群,因此本文避開了一些底層和算法細(xì)節(jié),采用比較主觀的方式來展示筆者對區(qū)塊鏈技術(shù)的感性認(rèn)識。如果你只是對區(qū)塊鏈感興趣,并沒有深入學(xué)習(xí)的打算,或者只是想像我一樣在別人問起來的時(shí)候裝逼,本文應(yīng)該是一篇很好的“導(dǎo)論”。


    總覽

    區(qū)塊鏈本質(zhì)上是一個(gè)去中心化的分布式賬本數(shù)據(jù)庫(感謝@程劍宇指出:在與比特幣相關(guān)的區(qū)塊鏈應(yīng)用中可使用這一術(shù)語,但區(qū)塊鏈技術(shù)可能并不包含“賬本”)。其本身是一串使用密碼學(xué)相關(guān)聯(lián)所產(chǎn)生的數(shù)據(jù)塊,每一個(gè)數(shù)據(jù)塊中包含了多次比特幣網(wǎng)絡(luò)交易有效確認(rèn)的信息。

    這是區(qū)塊鏈的定義,因此要逐步了解區(qū)塊鏈,我們需要一步步了解如下東西。


    去中心化

    先來考慮一個(gè)中心化集中式處理的過程。你要在某寶上買一部手機(jī),交易流程是:你將錢打給支付寶-支付寶收款后通知賣家發(fā)貨-賣家發(fā)貨-你確認(rèn)收貨-支付寶把錢打給賣家。


    圖1: 中心化集中式交易模式

    在這個(gè)過程中,雖然你是在和賣家交易,但是這筆交易還牽扯到了除了你和賣家的第三方,即支付寶,你和賣家的交易都是圍繞支付寶展開。因此,如果支付寶系統(tǒng)出了問題便會造成這筆交易的失敗。并且雖然你只是簡單的買了一個(gè)手機(jī),但是你和賣家都要向第三方提供多余的信息。因此考慮極端情況,如果支付寶跑路了或者是拿了錢不卻不承認(rèn)你的交易或者是支付寶所在的城市因?yàn)殚_G20把所有人都趕走了(?),那么你就悲劇了。


    而去中心化的處理方式就要顯得簡單很多,你只需要和賣家交換錢和手機(jī),然后雙方都聲稱完成了這筆交易,就OK了。


    可以看出在某些特定情況下,去中心化的處理方式會更便捷,同時(shí)也無須擔(dān)心自己的與交易無關(guān)的信息泄漏。


    其實(shí)如果只考慮兩個(gè)人的交易并不能把去中心化的好處完全展示出來,設(shè)想如果有成千上萬筆交易在進(jìn)行,去中心化的處理方式會節(jié)約很多資源,使得整個(gè)交易自主化、簡單化,并且排除了被中心化代理控制的風(fēng)險(xiǎn)。


    去中心化是區(qū)塊鏈技術(shù)的顛覆性特點(diǎn),它無需中心化代理,實(shí)現(xiàn)了一種點(diǎn)對點(diǎn)的直接交互,使得高效率、大規(guī)模、無中心化代理的信息交互方式成為了現(xiàn)實(shí)。


    當(dāng)然,上述的例子有一個(gè)很大的潛在問題:沒有了權(quán)威的中心化代理,怎樣保證每筆交易的準(zhǔn)確性和有效性呢?比如:如果沒有了權(quán)威的中心化代理,張三某一天借了我100塊錢,但是不還錢還不承認(rèn)怎么辦?這里就引出了區(qū)塊鏈的其它特性。


    兩個(gè)基礎(chǔ)難題

    在去中心化以后,整個(gè)系統(tǒng)中沒有了權(quán)威的中心化代理,信息的可信度和準(zhǔn)確性便會面臨問題。


    問題1:類兩軍問題

    第一次聽說這個(gè)問題居然是在TCP的課上,大致說的是有兩個(gè)相距很遠(yuǎn)的軍隊(duì)要傳遞信息,紅軍派遣一個(gè)信使去跟藍(lán)軍說:“你他娘的把意大利炮拿出來!”。藍(lán)軍收到信息后又派了一個(gè)信使去紅軍說:“收到指令!”。然后紅軍又派一個(gè)信使去藍(lán)軍說:“知道你收到指令了!”。然后藍(lán)軍又派一個(gè)信使去紅軍說:“知道你知道我收到指令了!”。然后紅軍又派一個(gè)信使去藍(lán)軍說:“知道你知道我知道你收到指令了!”……然后就沒完沒了了。


    圖2:在分布式計(jì)算中在異步系統(tǒng)和不可靠的通道上達(dá)到一致性是不可能的

    在這種情況下,因?yàn)槭屈c(diǎn)對點(diǎn)的通信,雙方不可能在這種情況下達(dá)到信息的一致性。嚴(yán)謹(jǐn)一點(diǎn),就是“在分布式計(jì)算上,試圖在異步系統(tǒng)和不可靠的通道上達(dá)到一致性是不可能的”。


    問題2:拜占庭將軍問題

    拜占庭羅馬帝國在軍事行動中,采取將軍投票的策略來決定是進(jìn)攻還是撤退,也就是說如果多數(shù)人決定進(jìn)攻,就上去干。但是軍隊(duì)中如果有奸細(xì)(比如將軍已經(jīng)反水故意亂投票,或者傳令官叛變擅自修改軍令),那怎么保證最后投票的結(jié)果真正反映了忠誠的將軍的意愿呢?


    拜占庭將軍問題反映到信息交換領(lǐng)域中來,可以理解為在一個(gè)去中心的系統(tǒng)中,有一些節(jié)點(diǎn)是壞掉的,它們可能向外界廣播錯(cuò)誤的信息或者不廣播信息,在這種情況下如何驗(yàn)證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。


    區(qū)塊鏈技術(shù)的誕生

    現(xiàn)在讓我們來一步一步在去中心化的系統(tǒng)中解決這些問題,見證區(qū)塊鏈技術(shù)雛形的誕生。


    1

    我們先來建立一個(gè)去中心化的系統(tǒng),為了方便理解,我們來看一個(gè)簡單的去中心化借貸模型:如果A借了B 100塊錢,這個(gè)時(shí)候,A在人群中大喊“我是A,我借給了B 100塊錢!”,B也在人群中大喊“我是B,A借給了我100塊錢!”,此時(shí)路人甲乙丙丁都聽到了這些消息,因此所有人都在心中默默記下了“A借給了B100塊錢”。你看,這個(gè)時(shí)候一個(gè)去中心化的系統(tǒng)就建立起來了,這個(gè)系統(tǒng)中不需要銀行,也不需要借貸協(xié)議和收據(jù),嚴(yán)格來說,甚至不需要人與人長久的信任關(guān)系(比如B突然又改口說“我不欠A錢!”,這個(gè)時(shí)候人民群眾就會站出來說“不對,我的小本本上記錄了你某天借了A100塊錢!”)。


    圖3:去中心化借貸模型

    2
    可能你已經(jīng)發(fā)現(xiàn)了,在上述的模型中,所謂的“100塊錢”已經(jīng)不重要了。換句話說,任何東西都可以在這個(gè)模型中交換,甚至你可以憑空杜撰一個(gè)東西,只要大家承認(rèn),你就可以讓你杜撰的東西流通。比如:我在人群中高喊一聲“我創(chuàng)造了10個(gè)查克拉!”,我甚至不需要知道查克拉是什么,也不需要關(guān)心世界上是不是真的有查克拉,只要大家都聽到,然后在自己的小本本上記下“LaiW3n有10個(gè)查克拉”,于是我就真的有100個(gè)查克拉了。從此以后,我便可以聲稱我給了某人1個(gè)查克拉,只要路人甲乙丙丁都收到并且承認(rèn)了這一信息,那我就算完成了這次交易,哪怕世界上沒有查克拉。


    你現(xiàn)在腦海中是不是浮現(xiàn)出了三個(gè)字——“比特幣”?由于真正的區(qū)塊鏈和比特幣比我上述的模型復(fù)雜太多,細(xì)節(jié)也豐富太多,因此以下還是以查克拉舉例,畢竟本文是Blockchain for Babies.(笑)


    3
    假設(shè)過了很長一段時(shí)間,我憑空創(chuàng)造的查克拉已經(jīng)在這個(gè)系統(tǒng)中流通了起來,大家都開始認(rèn)可了查克拉。但是這個(gè)系統(tǒng)中一共就只有10個(gè)查克拉,于是有人動了壞心思,他在人群中高呼“我有10個(gè)查克拉!”怎么辦?大家是直接在本本上記下他有10個(gè)查克拉么,這樣不是人人都可以偽造查克拉了么?


    為了防止這種現(xiàn)象發(fā)生,我決定在我創(chuàng)造查克拉的時(shí)候給我的查克拉打上標(biāo)記(更準(zhǔn)確地說,我是給我喊的那句“我創(chuàng)造了10個(gè)查克拉”打上標(biāo)記,比如標(biāo)記為001),這樣以后在每一筆交易的時(shí)候,我在高喊“我給了某某1個(gè)查克拉!”的時(shí)候,會附加上額外的一句話:“這1個(gè)查克拉的來源是記為001的那條記錄,我的這句話標(biāo)記為002!”。我們再抽象一點(diǎn),某人喊話的內(nèi)容的格式就變成了:“這句話編號xxx,上一句話的編號是yyy,我給了某某1個(gè)查克拉!”,這樣就解決了偽造的問題。其實(shí)上述模型就變成一個(gè)簡化的中本聰?shù)谝话姹忍貛艆^(qū)塊鏈協(xié)議:


    圖4:查克拉模型和中本聰?shù)谝话鎱^(qū)塊鏈協(xié)議對比圖

    好了,看到這里你基本已經(jīng)能夠生動形象又不涉及任何細(xì)節(jié)地向你的弱智室友解釋區(qū)塊鏈了。但是也許你的室友是一個(gè)有打破沙鍋問到底精神求是學(xué)子,因此你最好繼續(xù)準(zhǔn)好回答以下這幾個(gè)問題。


    1. “憑啥?”

    你室友可能會問:“憑啥你喊一句話我就幫你記?我的小本本不要錢么?”。為了激勵(lì)大家?guī)臀覀髟捄陀涃~,我決定給第一個(gè)聽到我喊話并且記錄在小本本上的人一些獎(jiǎng)勵(lì):第一個(gè)聽到我喊話并記錄下來的人,你就憑空得到了1個(gè)查克拉,這個(gè)查克拉是整個(gè)系統(tǒng)對你幸苦記賬的報(bào)酬,而你記錄了這句話之后,要馬上告訴其它人你已經(jīng)記錄好了,讓別人放棄繼續(xù)記錄這句話,并給你自己的記錄編號讓別人有據(jù)可查,然后你再把我的話加上你的記錄編號一起喊出來,供下一個(gè)人記賬。


    當(dāng)這個(gè)規(guī)則定下以后,這個(gè)系統(tǒng)中一定會出現(xiàn)一批人,他們開始豎著耳朵監(jiān)聽周圍發(fā)出的聲音,以搶占第一個(gè)記賬的權(quán)利。對的,你腦海中是不是又浮現(xiàn)出了“比特幣挖礦”的字眼?


    值得一提的是,關(guān)于比特幣挖礦, @玲瓏邪僧舉了一個(gè)很形象的例子:

    單身汪們要找女票,國民岳母說我有好多女兒,這樣吧我給你們出點(diǎn)題目,解出一個(gè)就給其中一個(gè)姑娘的微信號。

    單身汪們瘋狂競爭,想破腦袋去解題。只要其中一只汪解出一道題,就立馬得意洋洋地昭告天下,示威全部單身汪,這個(gè)姑娘是我的啦,你們放棄吧。其他單身汪們即使不服也沒有辦法,惆悵懊惱也不是個(gè)事兒啊,還是麻溜地立馬去解下一道題目吧。這只喜贏姑娘的幸運(yùn)小汪被岳母認(rèn)可后還能得到25個(gè)貨幣單位的彩禮,簡直人生贏家。


    2. “聽誰的?”

    在這個(gè)系統(tǒng)中,如果我和另一個(gè)人C幾乎同時(shí)地喊出一句:“為了艾澤拉斯!”。由于聽眾所處的位置不同,一定會有人先聽到我說的那句話,而另外一些人則先聽到C的那句話,如果我們規(guī)定只能有一個(gè)人說出這句話,那到底這句話是誰說的?


    如果不加任何條件,那么上述的情況一定會這樣發(fā)展:一部分人認(rèn)為這句話是我說的,在聽到這句話之后開始記賬,之后他們所做的所有事情都是基于這個(gè)事實(shí),并且隨著這個(gè)信息一次次的傳下去,這條信息鏈會越來越深;而另外一群認(rèn)為是C先說這句話的人,也會按照這樣的趨勢發(fā)展。這樣,原本是一條唯一的信息鏈,在我們喊出“為了艾澤拉斯”這句話之后,分叉了???


    圖5:“區(qū)塊鏈”分叉


    這會導(dǎo)致怎樣的情況呢?按照我們的設(shè)想,應(yīng)該每個(gè)人的小本本上記錄的東西都是一樣的,都是一條可以把所有信息串聯(lián)起來的鏈條。但是在這一刻,他們小本本上記錄的東西不一樣了!這還玩毛???以后還怎么確定交易和信息的真實(shí)性???


    為了解決這個(gè)問題,我又追加了新的規(guī)則:每個(gè)人在記錄小本本的時(shí)候,需要脫鞋然后用腳拿筆,在小本本上用正楷體書寫!有了這個(gè)規(guī)定,由于用腳寫字難度很大,每個(gè)人至少需要10分鐘才能寫完,而且由于每個(gè)人用腳寫字的熟練度不通,寫完這句話所用的時(shí)間也不同,因此一定會有人先寫完然后高呼“我寫完了!那句話是LaiW3n喊的!”,這樣其它正在寫這句話的人便會停筆,然后在小本本上重新開始寫“那句話是來文寫的,上一句的編號是xxx”。


    如果你對上述我的解決方法感興趣,你可以對照我上面的比喻去了解以下知識:

    “聽誰的”——中本聰破解“拜占庭將軍問題”的算法

    “在小本本上記錄”——比特幣挖礦

    “脫鞋用腳寫字”——比特幣挖礦難度

    “脫鞋寫字速度”——算力

    “新的規(guī)則”——工作量證明鏈


    3. “雙花”問題

    這個(gè)時(shí)候你的室友可能又要問:如果我同時(shí)宣布我給了A一個(gè)查克拉和我給了B一個(gè)查克拉,但是我只有一個(gè)查克拉,那咋整?是A和B都收到了查克拉還是咋地?


    這個(gè)時(shí)候你只需要托起他的下巴,溫柔地看著他的眼睛,用手刮刮他的鼻子,說:“小妖精,你把這種情況帶到上面的規(guī)則中去試試?”


    --------------

    一些私信問題討論:


    1. 為何目前還鮮有區(qū)塊鏈和實(shí)體商業(yè)業(yè)務(wù)對接的案例?

    從理論上:區(qū)塊鏈?zhǔn)且婚T新技術(shù),保守大眾(包括我)還處在觀望階段,只有少數(shù)激進(jìn)或者目標(biāo)明確的實(shí)體開始向區(qū)塊鏈進(jìn)軍,而這些少數(shù)的實(shí)體在現(xiàn)階段發(fā)聲的強(qiáng)度還不夠。

    從應(yīng)用上:區(qū)塊鏈技術(shù)要與實(shí)體商業(yè)對接,在技術(shù)和規(guī)則上還需要進(jìn)一步開拓,區(qū)塊鏈解決的所謂“不信任”問題其對象也只局限于區(qū)塊鏈上的數(shù)據(jù)。因此如果區(qū)塊鏈要與實(shí)體業(yè)務(wù)對接,還需要進(jìn)一步推動實(shí)體與數(shù)據(jù)之間跨域的“游戲規(guī)則”的建立。


    2. 虛擬加密貨幣最終是否會走向龐氏騙局?

    這個(gè)問題我也不太好回答,畢竟我是一個(gè)技術(shù)人員而非這個(gè)領(lǐng)域的弄潮兒。我個(gè)人的看法是:對于普通人,不建議長期持有某種數(shù)字貨幣,應(yīng)將數(shù)字貨幣作為法幣之間轉(zhuǎn)換的橋梁;對于投機(jī)者,“炒幣”需謹(jǐn)慎,應(yīng)將風(fēng)險(xiǎn)控制在自己能夠承受的范圍內(nèi)。PS:其實(shí)我真的不關(guān)心這個(gè)問題。


    3. 為什么聽你一講,感覺區(qū)塊鏈很弱智的樣子?

    我在文中已經(jīng)說明,這只是一篇關(guān)于區(qū)塊鏈技術(shù)的新人導(dǎo)論,其目的在于幫助你快速對區(qū)塊鏈有一個(gè)感性的認(rèn)識;如果真的想了解區(qū)塊鏈技術(shù)細(xì)節(jié),請閱讀相關(guān)文獻(xiàn)或訪問區(qū)塊鏈社區(qū)。


    4. 工作機(jī)會

    感謝各位熱情的HR,但我現(xiàn)在暫無跳槽的打算。


    5. 轉(zhuǎn)載

    個(gè)人可以轉(zhuǎn)載,請注明來源并告知我一聲;商業(yè)組織或作為商業(yè)用途,請私信。

    編輯于 2016-09-29
    4.3K
    ?386 條評論
    ?分享
    ?收藏?感謝收起
    maxdeath
    maxdeath
    信息論博士,區(qū)塊鏈博士后
    770 人贊同了該回答
    首先要搞清一個(gè)問題——比特幣是區(qū)塊鏈,但是區(qū)塊鏈并不是比特幣。

    于是,在區(qū)塊鏈的這個(gè)問題回答里,提到“礦工”,“挖礦”,“最長鏈”,“分叉”等等詞的,其實(shí)都不準(zhǔn)確。

    寫一點(diǎn)上個(gè)月講課的內(nèi)容——個(gè)人覺得大部分的回答,包括google搜出來的或者wiki的,都不能很好地解釋區(qū)塊鏈?zhǔn)莻€(gè)什么東西。因?yàn)橹v比特幣的人很多,懂比特幣的人也很多,但是具體到區(qū)塊鏈,現(xiàn)在并沒有一個(gè)很清楚的定義說什么是區(qū)塊鏈,基本上所有的介紹里都是這樣的:

    比特幣——〉區(qū)塊鏈?zhǔn)潜忍貛诺牡讓蛹夹g(shù)。

    或者

    比特幣——〉比特幣是一種區(qū)塊鏈。

    具體到什么是區(qū)塊鏈的問題,目前沒有看到很好的定義和介紹,更多的是大而化之地講區(qū)塊鏈的意義在哪里的空泛文章,要不然就是一水的礦工和挖礦。所以我來從純理論角度說一下我個(gè)人對區(qū)塊鏈的定義:

    1,區(qū)塊鏈?zhǔn)且粋€(gè)放在非安全環(huán)境中的分布式數(shù)據(jù)庫(系統(tǒng))。

    2,區(qū)塊鏈采用密碼學(xué)的方法來保證已有數(shù)據(jù)不可能被篡改。

    3,區(qū)塊鏈采用共識算法來對于新增數(shù)據(jù)達(dá)成共識。

    具有以上三個(gè)性質(zhì)的系統(tǒng),就是區(qū)塊鏈。

     

    1,區(qū)塊鏈?zhǔn)且粋€(gè)放在非安全環(huán)境中的分布式數(shù)據(jù)庫(系統(tǒng))。

    這里的要點(diǎn)有兩個(gè):(1)分布式,(2)非安全環(huán)境。

    首先,這是一個(gè)分布式的,去中心化的系統(tǒng)。所以,有一個(gè)中心服務(wù)器或者節(jié)點(diǎn)的,不是區(qū)塊鏈。節(jié)點(diǎn)都是安全的,無惡意的,那這不是區(qū)塊鏈。同理,從應(yīng)用的角度講,如果你的應(yīng)用必須要使用中心節(jié)點(diǎn)(例如要用超級計(jì)算機(jī)做深度學(xué)習(xí))或者沒必要考慮節(jié)點(diǎn)不安全的情況(例如某個(gè)安全的工廠里的傳感器),那么并不需要考慮區(qū)塊鏈技術(shù)。

    至于后面的詞“數(shù)據(jù)庫”,目前大部分成熟的區(qū)塊鏈都是數(shù)據(jù)庫,例如比特幣就是一個(gè)分布式賬本,而賬本其實(shí)就是數(shù)據(jù)。然后,根據(jù)數(shù)據(jù)的格式,又可以分三種——1,數(shù)據(jù)是完全不相關(guān)的,只是達(dá)成的共識,沒有有效無效之分;2,數(shù)據(jù)有某些邏輯結(jié)構(gòu),例如賬本中,一筆交易實(shí)際上除了金額,還有輸入和輸出,連接到之前的交易,這些數(shù)據(jù)需要通過邏輯驗(yàn)證(例如交易中,節(jié)點(diǎn)需要驗(yàn)證輸入的交易是否有效);3,數(shù)據(jù)擁有圖靈完備的邏輯,而驗(yàn)證的時(shí)候需要通過節(jié)點(diǎn)使用算力運(yùn)算,每筆交易可以有不同的輸出和狀態(tài),每個(gè)節(jié)點(diǎn)要做的不僅僅是驗(yàn)證交易的真實(shí)性和輸入的正確性,還要根據(jù)交易里的邏輯讀入數(shù)值,進(jìn)行驗(yàn)算然后再驗(yàn)證結(jié)果。

    比特幣的系統(tǒng)就是第二種,又叫分布式賬本;以太坊是第三種。第三種可以支持智能合約。

    用比特幣舉例的話,1,它是一個(gè)完全去中心化的系統(tǒng),2,它放在一個(gè)非安全的環(huán)境,它并不要求所有使用比特幣的人都沒有惡意。


    2,區(qū)塊鏈采用密碼學(xué)的方法來保證已有數(shù)據(jù)不可能被篡改。

    這個(gè)是誤解最多的部分,因?yàn)楹芏嗳艘惶岬絽^(qū)塊鏈就只覺得是這個(gè)。誠然,這部分很重要,而且確實(shí)區(qū)塊鏈也因此得名,但這只是區(qū)塊鏈的定義的一部分。

    這個(gè)部分的兩個(gè)核心要點(diǎn)是:(1)密碼學(xué)哈希函數(shù),(2)非對稱加密。

    兩個(gè)都是密碼學(xué)的基礎(chǔ)概念,網(wǎng)上都有非常清晰的定義,我只簡單說下:

    (密碼學(xué))哈希函數(shù):一個(gè)函數(shù)Y=H(X),有如下性質(zhì):1,有X可以很容易算出Y;2,有Y不可能算出X;3,有Y不可能找到另一個(gè)X'使得H(X')=Y;3.5,如果X和X'相差很小,H(X)和H(X')則完全不相關(guān)。

    這東西主要用于驗(yàn)證信息完整性——在一個(gè)信息后面放上這個(gè)信息的哈希值,這個(gè)值很小,例如256bit,而且計(jì)算方便。收到信息之后收信人再算一遍哈希值,對比兩者就知道這條信息是否被篡改過了。如果被篡改過,哪怕只有一bit,整個(gè)哈希值也會截然不同。而根據(jù)哈希函數(shù)的性質(zhì),沒有人能夠偽造出另一個(gè)消息具有同樣的哈希值,也就是說篡改過的數(shù)據(jù)完全不可能通過哈希校驗(yàn)。

    非對稱加密:這東西很好理解——對稱加密就是有個(gè)密鑰,可以理解成保險(xiǎn)箱鑰匙,你把消息加密變成密文,沒有人能看懂這是啥,然后同一把鑰匙解密成原來的消息。

    非對稱加密就是有兩把鑰匙,一把叫公鑰,一把叫私鑰,用其中一把加密的話,只能用另一把解密,反之亦然。另一個(gè)重要的性質(zhì)是,給你密文,明文和其中一把鑰匙,你還是解不出來另一把鑰匙是啥。原理基本上是基于一些困難數(shù)學(xué)問題,例如因數(shù)分解和離散對數(shù),常用的有RSA,Diffie-Hellman和ECC(橢圓曲線),比特幣用的是橢圓曲線。

    非對稱加密除了和對稱加密一樣用于信息加密之外,還有另一個(gè)用途,就是身份驗(yàn)證。因?yàn)橥ǔG闆r我們假設(shè)一對公私鑰,公鑰是公開的,而私鑰只有本人有,于是一個(gè)人如果有對應(yīng)的私鑰,我們就可以認(rèn)定他是本人。其中一個(gè)重要的應(yīng)用就是數(shù)字簽名——某個(gè)消息后面,發(fā)信人對這個(gè)消息做哈希運(yùn)算,然后用私鑰加密。接著收信人首先對消息進(jìn)行哈希運(yùn)算,接著用相應(yīng)的公鑰解密數(shù)字簽名,再對比兩個(gè)哈希值,如果相同,就代表這個(gè)消息是本人發(fā)出的而且沒有被篡改過。


    以上是基礎(chǔ)知識,至于區(qū)塊鏈怎么實(shí)現(xiàn)的,很簡單:

    交易(數(shù)據(jù))寫在區(qū)塊里。

    第一個(gè)區(qū)塊叫創(chuàng)世區(qū)塊,寫啥都行。

    從第二個(gè)區(qū)塊開始,每個(gè)區(qū)塊的第一部分有前一區(qū)塊的哈希值。此外,區(qū)塊里的每一筆交易(數(shù)據(jù)),都有發(fā)起人的數(shù)字簽名來保證真實(shí)性和合法性。于是,先前區(qū)塊里的任何數(shù)據(jù)都不可被篡改,原因見上。


    到這為止有人可能會問:為什么要弄個(gè)鏈啊?直接所有數(shù)據(jù)加個(gè)哈希值不就行了?

    因?yàn)?mdash;—這個(gè)數(shù)據(jù)庫并不是靜止的啊。

    數(shù)據(jù)庫的數(shù)據(jù)是會增加的,而每次增加的數(shù)據(jù),就是一個(gè)區(qū)塊,于是這些生成時(shí)間不同的區(qū)塊,就以這種形式鏈在一起了。

    至于如何增加區(qū)塊,就涉及到第三個(gè)部分——共識算法。


    3,區(qū)塊鏈采用共識算法來對于新增數(shù)據(jù)達(dá)成共識。


    共識算法的目的,就是讓所有節(jié)點(diǎn)對于新增區(qū)塊達(dá)成共識,也就是說,所有人都要認(rèn)可新增的區(qū)塊。對于有中心的系統(tǒng),這事很簡單,中心說什么大家同意就好了,但是放到去中心化系統(tǒng)里,尤其是當(dāng)有些節(jié)點(diǎn)有惡意的時(shí)候,這東西非常復(fù)雜,計(jì)算機(jī)科學(xué)里有個(gè)相應(yīng)的問題,叫做“拜占庭將軍問題”或者“拜占庭容錯(cuò)”(BFT)。

    有很多用Lamport給出的那個(gè)例子來講BFT的東西,我在這里換一個(gè)角度。

    Lamport大神當(dāng)年提出這個(gè)問題的時(shí)候在斯坦福研究中心給NASA做項(xiàng)目,他提出這個(gè)問題的原因并不是考慮類似比特幣的應(yīng)用場景(整個(gè)互聯(lián)網(wǎng)成千上萬個(gè)用戶),而是考慮特殊背景下的一個(gè)簡單的系統(tǒng)——

    航天飛機(jī)的控制系統(tǒng)。

    如果有航空背景的同學(xué)可能知道,飛機(jī)有三套獨(dú)立的控制系統(tǒng),為什么呢?因?yàn)槿魏蜗到y(tǒng)都不可能完全不出故障,就算飛機(jī)控制系統(tǒng)的故障率已經(jīng)極低了,還是有飛到一半這東西壞了的可能。于是我們可以弄兩套獨(dú)立的系統(tǒng),同時(shí)壞掉的幾率就會大大降低。

    可是兩套獨(dú)立的系統(tǒng)還是不足以容下一個(gè)系統(tǒng)的錯(cuò)誤——一架飛機(jī)迎面飛來,兩套系統(tǒng)一個(gè)說要躲,一個(gè)說不躲,那到底是躲還是不躲呢?所以我們需要三臺獨(dú)立的系統(tǒng),這樣,如果有一個(gè)系統(tǒng)有故障了,還有兩臺能正常工作,能少數(shù)服從多數(shù)給出正確的結(jié)果。學(xué)過糾錯(cuò)碼的同學(xué)對這個(gè)應(yīng)該不陌生,這個(gè)系統(tǒng)的輸出之間的漢明間距是3,所以可以糾正一位的錯(cuò)誤。

    然而,對于航天飛機(jī),在冷戰(zhàn)的背景下,萬一某個(gè)系統(tǒng)不是壞掉了,而是被敵人控制了呢?三套系統(tǒng)還夠嗎?

    答案是否定的,因?yàn)椴煌趩渭冎皇菈牡舻墓?jié)點(diǎn),惡意節(jié)點(diǎn)可以做一些別的事來阻止整個(gè)系統(tǒng)達(dá)成共識。

    這個(gè)部分略復(fù)雜要講的話要單開一帖,所以我們只說最簡單的情況(無簽名同步系統(tǒng))。

    我們管三個(gè)系統(tǒng)叫ABC,正常工作流程是三個(gè)人每次得出結(jié)果就互相告訴一下,然后每個(gè)人選多數(shù)人同意的結(jié)果。這是個(gè)沒有中央節(jié)點(diǎn)的分布式系統(tǒng),也就是說三人不能聚在一起開個(gè)會啥的,仨人只能兩兩通信。這個(gè)時(shí)候,假設(shè)C有惡意,它的目標(biāo)是破壞這個(gè)系統(tǒng)。于是,假設(shè)正確的讀數(shù)是1,A和B都得出了1這個(gè)結(jié)果,這個(gè)時(shí)候C這個(gè)小婊砸告訴A說“我的結(jié)果是0,B也覺得是0”,同時(shí)打個(gè)電話跟B說“哎我覺得是0,A也這么說”,于是A和B就懵逼了。假設(shè)你是A,你聽到了兩個(gè)不同版本的B的答案,B說自己選了1,C說B選了0,可是A這個(gè)時(shí)候沒法知道B和C誰才是那個(gè)騙了自己的小婊砸,因?yàn)槿绻鸅真的告訴A選了1然后告訴C是0,他聽到的結(jié)果和現(xiàn)在是一模一樣的。

    于是結(jié)論是,拜占庭容錯(cuò),也就是需要容下一個(gè)惡意系統(tǒng)而非錯(cuò)誤系統(tǒng),需要4個(gè)獨(dú)立系統(tǒng)。

    (當(dāng)然,簽名可以解決這個(gè)問題,但是這只是同步系統(tǒng)的情況,在異步系統(tǒng)里這問題會變得更加復(fù)雜,原因是正常節(jié)點(diǎn)的回答有延遲,而惡意節(jié)點(diǎn)可以不回復(fù),所以,正常節(jié)點(diǎn)一方面要等另一個(gè)節(jié)點(diǎn)的回復(fù),但是它又不知道對方會不會回復(fù)因?yàn)閷Ψ接锌赡軙袗阂?,而在收到回?fù)之前,它完全沒法判斷對方是正常節(jié)點(diǎn)還是惡意節(jié)點(diǎn),這個(gè)問題叫異步BFT,也是BFT的最復(fù)雜的情況,這里不再做更多的解釋,下文提到的BFT算法,其實(shí)都是異步BFT的算法)

    Lamport提出這個(gè)問題之后,有無數(shù)的算法被提出來,統(tǒng)稱BFT(拜占庭容錯(cuò))算法,其中最有代表性的叫PBFT,然后由于最近區(qū)塊鏈的熱度,無數(shù)針對區(qū)塊鏈應(yīng)用場景優(yōu)化過的BFT算法也涌現(xiàn)出來,但是一個(gè)重要的問題是,所有目前的BFT算法,都只能應(yīng)用在小型網(wǎng)絡(luò)里。原因很簡單——因?yàn)锽FT這個(gè)問題是設(shè)計(jì)給類似于航天飛機(jī)控制系統(tǒng)這樣的場景的,早期的算法考慮的也主要是這種場景。PBFT論文里考慮的就是一個(gè)5個(gè)節(jié)點(diǎn)的系統(tǒng)。就算算上新提出的BFT算法,也最多應(yīng)用在不超過100個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)里。

    這個(gè)問題被擱置了很久,直到比特幣的誕生——中本聰從某種意義上簡化了這個(gè)問題,在比特幣中,同樣是共識問題,中本聰引入了一個(gè)重要的假設(shè)——獎(jiǎng)勵(lì),他之所以能這樣做的原因是,他考慮的是一個(gè)數(shù)字貨幣,也就是說共識這個(gè)東西是有價(jià)值的。

    于是在這樣的系統(tǒng)上,他提出了工作證明機(jī)制。

    所有挖礦,礦工,最長鏈,分叉等等等等,都可以歸結(jié)為一句話:

    說話是要有代價(jià)的,說真話是有好處的,說假話是要扣錢的……

    這就是目前兩類共識算法的核心區(qū)別:

    BFT共識模型:惡意節(jié)點(diǎn)可以干任何事。

    比特幣共識模型:模型中有公認(rèn)的“價(jià)值”,每個(gè)節(jié)點(diǎn)說話都需要一定代價(jià),誠實(shí)節(jié)點(diǎn)會受到獎(jiǎng)勵(lì),而惡意節(jié)點(diǎn)由于只付出代價(jià)而收不到獎(jiǎng)勵(lì),變相受到了懲罰。

    也就是說,BFT共識模型其實(shí)涵蓋了比特幣共識模型的場景,比特幣共識其實(shí)放寬了BFT共識模型的限制。

    比特幣共識對于BFT的優(yōu)勢在于,由于給惡意節(jié)點(diǎn)的能力做了限制,惡意節(jié)點(diǎn)所能造成的破壞大大降低了,尤其是對于異步系統(tǒng)——BFT共識里惡意節(jié)點(diǎn)可以一直拒絕相應(yīng)而誠實(shí)節(jié)點(diǎn)還需要一直等它(因?yàn)椴恢浪遣皇菒阂獾模?,而對于比特幣共識,隨你便,你不響應(yīng)就沒有獎(jiǎng)勵(lì)可拿。于是,比特幣共識算法可以應(yīng)用于成千上萬個(gè)節(jié)點(diǎn),而且,任何人隨時(shí)都可以加入,不需要預(yù)先在網(wǎng)絡(luò)里注冊自己的身份(而BFT算法里,網(wǎng)絡(luò)中節(jié)點(diǎn)的數(shù)量和身份都必須是已知的)。

    但比特幣共識的缺陷在于,首先,得有個(gè)有價(jià)值的東西,也就是說放在比特幣里這東西還行,以太坊的話現(xiàn)在可能也湊合,但是其他數(shù)字貨幣嘛……BFT共識有個(gè)嚴(yán)格的限定,就是惡意節(jié)點(diǎn)不能超過總數(shù)的1/3,然而其實(shí)比特幣共識沒有這樣的限制,唯一的限制就是假定大部分節(jié)點(diǎn)都是理性的,是逐利的,也就是會采用最佳的策略來賺取最大的價(jià)值。所以,嚴(yán)格來說,自私挖礦這種行為在比特幣共識里是允許的,而多數(shù)攻擊,其實(shí)也算不上一種攻擊,因?yàn)檫@些都沒有突破比特幣共識的框架——如果這個(gè)價(jià)值無限大,比特幣共識是非常可靠的。然而這并不是事實(shí),因?yàn)椴⒉皇敲總€(gè)虛擬貨幣都和比特幣一樣值錢,而在價(jià)值不高的情況下,比特幣共識的前提就站不住腳了——當(dāng)損失可能是幾千上萬塊錢的時(shí)候,假定每個(gè)人都是理性的是合理,但是如果損失就幾分錢這個(gè)假設(shè)就相當(dāng)扯淡了,事實(shí)上也發(fā)生過一個(gè)比特幣礦池跑到另一個(gè)貨幣惡意挖礦搞垮對手的情況。

    此外,比特幣共識是最長鏈共識,也就是說最長鏈-->大多數(shù)-->理性,于是分叉是允許的。于是導(dǎo)致了一些附帶的問題,例如,如果網(wǎng)絡(luò)有延遲,你怎么知道你手里那條鏈?zhǔn)钦麄€(gè)網(wǎng)絡(luò)里當(dāng)前的最長鏈呢?于是,如果需要傳輸?shù)臄?shù)據(jù)多,那么延遲加大。延遲加大,那么越多的人手里的鏈并不是全網(wǎng)絡(luò)的最長鏈。于是,全網(wǎng)絡(luò)的最長鏈,就沒法代表大多數(shù)。這就打破了比特幣共識的根本,這也是為什么比特幣區(qū)塊頻率是10分鐘一塊的原因。比特幣目前有個(gè)著名的7幣交易每秒的上限,而現(xiàn)在擴(kuò)容鬧得很厲害,以太坊的交易格式不同,也用了新的工作證明,想要改成權(quán)益證明,但這些都不本質(zhì)。真正本質(zhì)的是,在目前的網(wǎng)絡(luò)條件下,如果適用全網(wǎng)的話,比特幣共識的交易量基本上超不過100筆交易每秒這個(gè)量級。

    上面這幾段有可能太深了,簡單來說,BFT共識和比特幣共識的區(qū)別可以這么理解:


    BFT共識:來,大家開個(gè)會討論一下集思廣益啊,討論出大家都滿意的結(jié)果為止。

    問題:開會的效率大家都懂,人越多越不容易出結(jié)果。只能用于少數(shù)節(jié)點(diǎn),用于上千個(gè)節(jié)點(diǎn)的話……大家想象一下一天開一次人大的場景。


    比特幣共識:你的詩念得不錯(cuò),組織已經(jīng)決定了,今天就你來當(dāng)領(lǐng)導(dǎo)了,做得好有獎(jiǎng),做不好扣錢。

    問題:獎(jiǎng)勵(lì)幾千塊錢還好,獎(jiǎng)勵(lì)幾分錢誰好好干?

     

    而區(qū)塊鏈也就因此被分成了涇渭分明的兩類,很多人都聽過什么公有鏈私有鏈聯(lián)盟鏈,但是,如果你們以為這是根據(jù)應(yīng)用區(qū)分的就大錯(cuò)特錯(cuò),其實(shí),這兩種區(qū)塊鏈最本質(zhì)的區(qū)別,還是因?yàn)楣沧R模型或者說算法不同——BFT算法沒法應(yīng)用于大量節(jié)點(diǎn),所以用BFT算法的就沒法做公有鏈。而比特幣共識得有個(gè)價(jià)值體系,這東西去做私有鏈聯(lián)盟鏈就很不靠譜,因?yàn)橐粋€(gè)單純逐利的人的假設(shè)還算靠譜,但是如果對象是公司的話,公司的利益就太復(fù)雜了,不能簡單認(rèn)為他們只追逐區(qū)塊鏈上那點(diǎn)價(jià)值。

    1,公有鏈,以比特幣,以太坊和所有虛擬貨幣為代表,都采用比特幣共識,共識算法基本上都采用工作證明機(jī)制,也就是挖礦那些,這種機(jī)制其他回答里已經(jīng)講得夠清楚了,就略過。工作證明一切都好,除了費(fèi)電……費(fèi)多少電呢?比特幣的話,差不多和一個(gè)百萬人級別的城市那么多。此外以太坊的創(chuàng)始人特別喜歡權(quán)益證明,似乎很快要小范圍投入使用(100個(gè)區(qū)塊里一個(gè)用權(quán)益證明)。但是目前為止,大家對這東西的可靠性還持觀望態(tài)度。

    2,私有鏈和聯(lián)盟鏈。以IBM的hyperledger-fabric,以及一大堆其他的類似于tendermint,甚至R3 corda和ripple為代表,都用BFT共識。其實(shí)這方面的應(yīng)用已經(jīng)很多了,問題是,1,目前基本上所有應(yīng)用給人的感覺都還是為了做區(qū)塊鏈而區(qū)塊鏈,真的覺得這東西好到不可或缺的應(yīng)用還基本沒有。2,由于為了區(qū)塊鏈而區(qū)塊鏈,其實(shí)很多場景的安全性和可靠性還值得懷疑,這點(diǎn)經(jīng)常被被公有鏈的支持者詬病。

    原文網(wǎng)址:http://www.hnyueyi.com.cn/html/42011.html
    信息首發(fā)區(qū)塊鏈?zhǔn)鞘裁矗绾魏唵我锥亟榻B區(qū)塊鏈?
    區(qū)塊鏈
    請聯(lián)系網(wǎng)站管理員

    ●【往下看,下一頁更精彩】●投稿或合作、請聯(lián)系QQ:22559528

    深圳學(xué)車考駕照3個(gè)月包拿證!

      深圳學(xué)車考駕照3個(gè)月包拿證!

      芒果學(xué)車(綜安駕校)鄭重承諾:不做虛假宣傳!誠信經(jīng)營,服務(wù)至上,規(guī)...

    王寶強(qiáng)老婆馬蓉的胸 馬蓉是什么杯罩

      王寶強(qiáng)老婆馬蓉的胸 馬蓉是什么杯罩的

      照片中,馬蓉穿著波點(diǎn)低胸?zé)o袖長裙,頭上戴著鮮紅色花朵,手拿棒...

    張?bào)阌耆梭w藝術(shù)寫真 張?bào)阌甏蟪叨热?/a>

      張?bào)阌耆梭w藝術(shù)寫真 張?bào)阌甏蟪叨热梭w藝術(shù)

      張?bào)阌辏?986年6月6日-),MET-ART國產(chǎn)人體模特,出生于中國東北的黑...

    劉鑾雄為什么塞關(guān)之琳乒乓球,關(guān)之琳

      劉鑾雄為什么塞關(guān)之琳乒乓球,關(guān)之琳被某富商塞高爾夫球真相圖片

      當(dāng)年變態(tài)富豪劉鑾雄塞關(guān)之琳乒乓球的事件一度轟動香港娛樂...

    女大學(xué)生稱還款被“逾期” 遭“裸照

      女大學(xué)生稱還款被“逾期” 遭“裸照”要挾

      我給你幾張圖,把你腦袋移上去,你選一下吧。如果沒有,那就別怪...

    關(guān)于我們 | 網(wǎng)站地圖 | 免責(zé)聲明 | 招賢納士 | 廣告服務(wù) | 網(wǎng)站合作 | 幫助中心 | 投稿指南 | 聯(lián)系我們 | 活動QQ群 | 粵ICP備15086532號-1
    深圳信息港 深圳企業(yè)信息 深圳新聞 深圳百姓網(wǎng)民最喜愛的深圳都市網(wǎng)絡(luò)媒體!Copyright © 2008- All Rights Reserved
    合作QQ:22559528 投稿QQ22559528 深圳同城活動群:284059377深圳吃喝玩樂群:284059377