首頁>Club>
6
回覆列表
  • 1 # 百我雜晨

    首先不要把區塊鏈想的過於高深,他是一個分佈在全球各地、能夠協同運轉的資料庫儲存系統,區別於傳統資料庫運作——讀寫許可權掌握在一個公司或者一個集權手上(中心化的特徵),區塊鏈認為,任何有能力架設伺服器的人都可以參與其中。來自全球各地的掘金者在當地部署了自己的伺服器,並連線到區塊鏈網路中,成為這個分散式資料庫儲存系統中的一個節點;一旦加入,該節點享有同其他所有節點完全一樣的權利與義務(去中心化、分散式的特徵)。與此同時,對於在區塊鏈上開展服務的人,可以往這個系統中的任意的節點進行讀寫操作,最後全世界所有節點會根據某種機制的完成一次又依次的同步,從而實現在區塊鏈網路中所有節點的資料完全一致。

    # 問題的由來

    我們反覆提到區塊鏈是一個去中心化的系統,確實,「去中心化」在區塊鏈世界裡面是一個很重要的概念,很多模型(比如賬本的維護、貨幣的發行、時間戳的設計、網路的維護、節點間的競爭等等等等)的設計都依賴於這個中心思想,那到底什麼是去中心化呢?在解釋真正去中心化之前,我們還是先簡單瞭解下什麼是中心化吧。

    中心化?

    回憶一下你在網上購買一本書的流程:

    第一步,你下單並把錢打給支付寶;第二步,支付寶收款後通知賣家可以發貨了;第三步,賣家收到支付寶通知之後給你發貨;第四步,你收到書之後,覺得滿意,在支付寶上選擇確認收貨;第五步,支付寶收到通知,把款項打給賣家。流程結束。

    你會發現,雖然你是在跟賣家做交易,但是,所有的關鍵流程都是在跟支付寶打交道。這樣的好處在於:萬一哪個環節出問題,賣家和買家都可以透過支付寶尋求幫助,讓支付寶做出仲裁。這就是一個最簡單的基於中心化思維構建的交易模型,它的價值顯著,就是建立權威,透過權威背書來獲得多方的信任,同時依賴權威方背後的資本和技術實力確保資料的可靠安全。

    你一定會擺出一個巨大的問號臉 ⊙.⊙?——“透過權威背書來獲得多方的信任,同時依賴權威方背後的資本和技術實力確保資料的可靠安全”,真的可以嘛?!

    假如說,支付寶程式發生重大 BUG,導致一段時間內的轉賬記錄全部丟失,或者更徹底一點,支付寶的伺服器被金三胖的一個導彈全部炸燬了。而我剛剛轉出去的 100 元找誰說理去,這個時候,你就成了刀殂上的魚肉;支付寶有良心,會勉為其難承認你剛剛轉賬的事實,但他不承認你也沒轍,因為確實連他自己也不知道這筆轉賬是否真實存在。

    上述就是中心化最大的弊端——過分依賴中心和權威,也就意味著逐漸喪失自己的話語權。

    去中心化?

    那麼去中心化的形態是什麼樣子呢?還是拿剛才那個例子繼續,我們構建一個極簡的去中心化的交易系統,看看我們是如何在網路上從不認識的賣家手裡買到一本書的。

    第一步,你下單並把錢打給賣家;第二步,你將這條轉賬資訊記錄在自己賬本上;第三步,你將這條轉賬資訊廣播出去;第四步,賣家和支付寶在收到你的轉賬資訊之後,在他們自己的賬本上分別記錄;第五步,賣家發貨,同時將發貨的事實記錄在自己的賬本上;第六步,賣家把這條事實記錄廣播出去;第七步,你和支付寶收到這條事實記錄,在自己的賬本上分別記錄;第八步,你收到書籍。至此,交易流程走完。

    剛才“人為刀俎我為魚肉”的情況在這個體系下就比較難發生,因為所有人的賬本上都有著完全一樣的交易記錄,支付寶的賬本伺服器壞了,對不起賣家的賬本還存在,我的賬本還存在;這些都是這筆交易真實發生的鐵證。

    當然,在這套極簡的交易系統中,你已經發現了諸多漏洞和不理解,比如說三方當中有一個是壞人,他故意記錄了對他更有利的轉賬資訊怎麼辦;又比如說訊息在傳遞過程中被駭客篡改了怎麼辦等等等等。這在以往的計算機概論或者計算機網路書本上中可能都有提及到——“類兩軍”和“拜占庭將軍”問題。這裡就不打算贅述,因為暫時跟主線不相關,感興趣的同學可以去 Google 或者百度一下,你只需要知道,在我們下面即將展開講到的區塊鏈系統中,透過巧妙的設計,足以解決上述存在的 BUG。

    既然話已說到這份上,相信瞭解一點技術、特別是有運維背景的同學大概能夠從極簡交易系統中窺視到了更多區塊鏈的一些影子——

    分散式儲存,透過多地備份,製造資料冗餘讓所有人都有能力都去維護共同一份資料庫讓所有人都有能力彼此監督維護資料庫的行為

    在我看來,你猜測的基本上沒錯。其實這些就是區塊鏈技術最核心的東西,外人看起來高大上、深不可測,但探究其根本發現就是這麼簡單和淳樸。當然,這裡面肯定會有很多很多很多細枝末節的技術需要重構。

    如果你差不多認同上面的觀點,那我們應該基本上可以達成共識,分散式部署肯定是構建去中心化網路理所當然的解決方向——透過 P2P 協議將全世界所有節點計算機彼此相互連線,形成一張密密麻麻的網路;以巧妙的機制,透過節點之間的交易資料同步來保證全球計算機節點的資料共享和一致。

    哈哈,說的輕巧,“交易資料這麼重要的東西,在一個完全不信任的 P2P 網路節點中以一種錯綜複雜的方式傳遞,資料的一致性和安全性誰來保證,如果說互相監督,他們到底怎麼做到?”

    好了,不賣關子了,下面讓我們圍繞這個最最最最直接的問題開始進入到真正區塊鏈的世界,抽絲剝繭看看它到底是如何一步一步形成的,又是如何一步一步穩定運轉。

    # 從全球節點到交易資料

    這張圖的製作的意義為的是幫助你在宏觀上先快速理解區塊鏈中所涉及到的相關名詞以及他們的層級關係。同時,文章的知識結構和設計思路也大抵上也會按照:

    首先,將區塊作為最小單位體,講述極簡區塊鏈系統是如何運轉的;接著,進入到比區塊更小單位體——交易記錄,理解區塊鏈是如何處理資料的;最後,將所有知識點柔和在一起,重回到區塊和區塊鏈,完整講述整個工作流程。

    希望你在這個引導和結構下有一個比較好的閱讀體驗。Let"s go~

    # 區塊,混沌世界的起源

    既然已經達成共識,所以,我們事先構建好了一個去中心化的 P2P 網路;同時,為了讓讀者朋友們聽起來更輕鬆,我先粗暴的規定在這個極簡的區塊鏈系統裡,每十分鐘有且僅產生一筆交易。

    故事繼續,在節點的視野裡,大概每十分鐘會憑空產生一個建立在自己平行宇宙世界的神奇區塊(你可以將區塊想象為一個盒子),這個區塊裡放著一些數字貨幣以及一張小紙條,小紙條上記錄了這十分鐘內產生的那唯一一筆交易資訊,比如說——“小 A 轉賬給了小 B100 元”;當然,這段資訊肯定是被加密處理過的,為的就是保證只有小 A 和小 B(透過他們手上的鑰匙)才有能力解讀裡面真正的內容。

    這個神奇的區塊被創造出來之後,很快被埋在了地底下,至於埋在哪裡?沒有一個人不知道,需要所有計算機節點一起參與進來掘地三尺後才有可能找到(找到一個有效的工作量證明)。顯然,這是一件工作量巨大、成果隨機的事件。但是呢,對於計算機節點來說,一旦從地底下挖出這個區塊,他將獲得區塊內價值不菲的數字貨幣,以及“小 A 轉賬給了小 B100 元”過程中小 A 所支付的小費。同時,對於這個節點來說,也只有他才有權利真正記錄小紙條裡的內容,這是一份榮耀,而其他節點相當於只能使用它的複製品,一個已經沒有數字貨幣加持的副本。當然這個神奇的區塊還有一些其他很特別的地方,後面我們會再細細聊。

    為了更好的描述,我們將計算機節點從地底下挖出區塊的過程叫做「挖礦」,剛才說了,這是一件工作量巨大、運氣成分較多、但收益豐厚的事兒。

    過了一會兒,來自中國上海浦東新區張衡路上的一個節點突然跳出來很興奮的說:“ 我挖到區塊了!裡面的小紙條都是有效的!獎勵歸我!” 。雖然此刻張衡路節點已經拿到了數字貨幣,但對於其他計算機節點來說,因為這裡面還涉及到其他一些利益瓜葛,他們不會選擇預設相信張衡路節點所說的話;基於陌生節點彼此不信任的原則,他們拿過張衡路節點所謂挖到的區塊(副本),開始校驗區塊內的小紙條資訊是否真實有效等等。在區塊鏈世界裡,節點們正是透過校驗小紙條資訊的準確性,或間接或直接判斷成功挖出區塊的節點是否撒謊。(如何定義小紙條資訊真實有效,後面會講解,這裡暫不做贅述)。

    在校驗過程中,各個節點們會直接透過下面兩個行為表達自己對張衡路節點的認同(準確無誤)和態度:

    停止已經進行了一半甚至 80%的挖礦程序;將張衡路節點成功挖出的區塊(副本)追加到自己區塊鏈的末尾。

    你可以稍微有點困惑:停止可能已經執行了 80%的挖礦行為,那之前 80%的工作不是就白做了嘛?!然後,區塊鏈的末尾又是個什麼鬼東西?

    對於第一個困惑。我想說,你說的一點沒錯,但是沒辦法,現實就是這麼殘酷,即便工作做了 80%,那也得放棄,這 80%的工作勞苦幾乎可以視為無用功,絕對的傷財勞眾。第二個困惑,區塊鏈和區塊鏈的末尾是什麼鬼?這裡因為事先並沒有講清楚,但是你可以簡單想象一下:區塊是週期性不斷的產生和不斷的被挖出來,一個計算機節點可能事先已經執行了 N 次“從別人手上拿過區塊 -> 校驗小紙條有效性”的流程,肯定在自己的節點上早已經存放了 N 個區塊,這些區塊會按照時間順序整齊的一字排列成為一個鏈狀。沒錯,這個鏈條,就是你一直以來認為的那個區塊鏈。如果你還是不能夠理解,沒關係,文章後面還會有很多次機會深入研究。

    # 走進區塊內,探索訊息的本質

    上面我們構建了一個最簡單的區塊鏈世界的模型,相信大多數同學都已經輕鬆掌握了。但是別驕傲也彆著急,這還只是一些皮毛中的皮毛,坐好,下面我們準備開車了。

    前面我們說到“大概每十分鐘會憑空產生一個神奇的區塊,這個區塊裡放了一張小紙條,上面記錄了這十分鐘內產生的這唯一一筆交易資訊”。顯然,十分鐘內產生的交易肯定遠不止一條,可能是上萬條,這上萬條資料在區塊鏈世界是如何組織和處理的呢?另外,為什麼在紙條上記錄的只是某一次的交易資訊,而不是某一個人的餘額?餘額好像更符合我們現實世界的理解才對。

    既然存在這樣那樣的疑問。現在我們就把視線暫時從“區塊”、“區塊鏈”這些看起來似乎較大實體的物質中移開,進入到區塊內更微觀的世界裡一探究竟,看看小紙條到底是怎麼一回事,它的產生以及它終其一生的使命:

    發起交易的時候,發起人會收到一張小紙條,他需要將交易記錄比如說“盜盜轉賬給張三 40 元”寫在紙上。說來也神奇,當寫完的那一剎那,在小紙條的背面會自動將這段交易記錄格式化成至少包含了“輸入值”和“輸出值”這兩個重要欄位;“輸入值”用於記錄數字貨幣的有效來源,“輸出值”記錄著數字貨幣發往的物件。剛剛建立的小紙條立馬被標記成為“未確認”的小紙條。從地下成功挖出區塊並最終連線到區塊鏈裡的小紙條一開始會被標記為“有效”。若這條有效的小紙條作為其他交易的輸入值被使用,那麼,這個有效的小紙條很快會被標記為“無效”。因為各種原因,區塊從鏈上斷開、丟棄,曾經這個區塊內被標記為“有效”的小紙條會被重新標記為“未確認”。區塊鏈裡面沒有賬戶餘額的概念,你真正擁有的數字資產實際上是一段交易資訊;透過簡單的加減法運算獲知你數字錢包裡的餘額。

    上面的 1、2、3 僅僅作為結論一開始強行灌輸給你的知識點,其中有幾個描述可能會有點繞,讓你覺得雲裡霧裡,沒有關係,因為我們立刻、馬上就開始會細說裡面的細枝末節。

    上圖就是從無數打包進區塊內的小紙條中,抽取出來的一張,以及它最終被格式化後的縮影。單看右側的圖可能很容易產生誤會,雖然看起來有多行,但實際上就是“盜盜轉賬給張三 40 個比特幣”這一條交易資料另外的一種呈現形態。因為區塊鏈世界裡面這麼規定,每一條交易記錄,必須有能力追溯到交易發起者 發起這筆交易、其中所涉及金額的上一筆全部交易資訊;即這筆錢從何而來的問題。這其實很容易理解,在去中心化的網路中,透過建立交易鏈、和透過交易鏈上的可溯源性間接保證資料安全和有效。

    我們繼續看,在區塊鏈世界裡,我們是如何僅透過“盜盜轉賬給張三 40 個比特幣” 這條交易資訊完成轉賬流程的。其實跟現實中你在路邊買一個包子的流程大抵上相同。

    第一步:判斷是否有足夠的餘額完成交易

    這裡我們再一次重申,區塊鏈世界是沒有餘額的概念,餘額是透過簡單數字的加減最終獲得,你擁有所謂的數字貨幣實際上是因為你擁一條交易記錄,即 “盜盜轉賬給張三 40 個比特幣”!這裡,我們還是拿這條記錄說事:

    追溯“輸出值”是“盜盜”相關的全部有效交易記錄作為,對有效交易中的數字進行簡單求和,判斷是否大於等於 40,如果確實大於等於,則將這些有效的交易記錄合併形成一條新的交易記錄(如下圖)。如果小於 40,其實可以不需要再繼續往下探討。

    就上圖的例子,我們追溯到曾經轉賬給盜盜的有效交易記錄有“小 A 轉賬給盜盜 10 btc”、“小 B 轉賬給盜盜 20 btc”、“小 C 轉賬給盜盜 25 btc”,我們需要將這三條交易記錄合併成一條更復雜描述的交易記錄,即 “( 小 A 轉賬給盜盜 10 btc + 小 B 轉賬給盜盜 20 btc + 小 C 轉賬給盜盜 25 btc ) 轉賬給張三 40 btc ”

    第二步:判斷是否需要找零

    對追溯到的有效交易數字求和,如果發現大於需要支付的金額,需要將多出的數字重新支付給自己,相當於找零。對應生成了一條全新的交易記錄(如下圖)。

    就上圖例子來說,我們最後合併成的交易記錄 “( 小 A 轉賬給盜盜 10 btc + 小 B 轉賬給盜盜 20 btc + 小 C 轉賬給盜盜 25 btc + 盜盜轉賬給盜盜 15 btc ) 轉賬給張三 40 btc ” 事實上等同於“盜盜轉賬給張三 40 btc”。其中“盜盜轉賬給盜盜 15 btc”就可以理解找零。

    第三步:發出去,讓全球節點認同和備份小紙條

    這條內部重新處理過的複雜交易記錄被塞進區塊,埋到地下,等待節點挖出來,一旦區塊被挖礦成功,並且該區塊最終被連在了區塊鏈的主鏈上。張三將最終擁有了這條交易記錄,而先前的“小 A 轉賬給盜盜 10 btc” 、“小 B 轉賬給盜盜 20 btc” 、“小 C 轉賬給盜盜 25 btc”都將被視為已經使用過的交易記錄——從此被貼上“無效”的標籤,意味著這些交易記錄將永遠不會再被追溯到。

    我們最後一次重申,只是希望讓你加深印象:擁有數字貨幣=擁有交易記錄!

    透過設計巧妙的精巧密碼學保證資料安全

    記錄著交易資訊的小紙條藉助區塊這個載體,在分散式的網路中以不同的軌跡錯綜複雜的傳遞,我們前面說了,你真正擁有的數字資產實際上是一段交易資訊,而不是你常規意義上理解的貨幣。所以這個過程就需要重點解決兩個問題:

    接受到的這條交易記錄在傳輸過程沒有被其他人所篡改接受到的這條交易記錄確實是由發起交易的人所創造

    在這裡,我們需要事先引入兩個知識點,可能稍微有點難消化,但都是計算機領域較為成熟的和基礎的概念。

    第一個知識點:Hash()函式。你只需要知道,任意長度的字串、甚至檔案體本身經過 Hash 函式工廠的加工,都會輸出一個固定長度的字串;同時,輸入的字串或者檔案稍微做一丟丟的改動,Hash() 函式給出的輸出結果都將發生翻天覆地的改變。注意,Hash()函式是公開的,任何人都能使用。

    第二個知識點:非對稱加密。你也只需要瞭解,任何人手裡都有兩把鑰匙,其中一把只有自己知道,叫做“私鑰”,以及一把可以公佈於眾,叫做“公鑰”;透過私鑰加密的資訊,必須透過公鑰才能解密,連自己的私鑰也無解。公鑰可以透過私鑰生成多把。

    有了這些知識點的加持,上面兩個問題開始變得有解。下面我們來看下內部是如何扭轉和工作的吧,這裡拿“小 A 轉賬給了小 B 100 元錢” 舉例:

    第一步:小 A 會先用 Hash 函式對自己的小紙條進行處理,得到一個固定長度的字串,這個字串就等價於這張小紙條。第二步:小 A 使用只有自己知道的那一把私鑰,對上面固定長度的字串進行再加密,生成一份名叫數字簽名的字串,這份數字簽名能夠充分證明是基於這張小紙條的。你可以這麼理解,在現實中,你需要對某一份合同的簽署,萬一有人拿你曾經在其他地方留下的簽名複製貼上過來怎麼辦?!最好的辦法,就是在你每一次簽名的時候,故意在字跡當中留下一些同這份合同存在某種資訊關聯的小細節,透過對小細節的觀察可以知道這個簽名有沒有被移花接木。步驟一和步驟二的結合就是為了生成這樣一份有且僅針對這條小紙條有效的簽名。第三步:小 A 將「明文的小紙條」、剛剛加密成功的「數字簽名」,以及自己那把可以公佈於眾的「公鑰」打包一起發給小 B。第四步:當小 B 收這三樣東西,首先會將明文的小紙條進行 Hash()處理,得到一個字串,我們將其命名為“字串 1”。然後,小 B 使用小 A 公佈的公鑰,對發過來的數字簽名進行解密,得到另外一個“字串 2”。透過比對“字串 1”和“字串 2”的一致性,便可充分證明:小 B 接受到的小紙條就是小 A 發出來的小紙條,這張小紙條在中途沒有被其他人所篡改;且這張小紙條確實是由小 A 所編輯。

    可以看得出來,加解密的過程幾乎是一環套一環,中途任何環節被篡改,結果都是大相徑庭。藉助這一連串的機制,其實已經能夠很好的在公開、匿名、彼此不信任的分散式網路環境中解決數字交易過程中可能遇到的很多問題。這個環節可能確實有點難理解,現在,我需要你停下來,靜下心,花上幾分鐘閉目慢慢回味其中設計精湛的地方。

    掌握了這部分知識以後,我們在這裡回答一下前面沒有解釋清楚的問題,「節點對區塊的檢驗」檢驗的到底是什麼?實際上就是:

    檢驗區塊內的交易記錄簽名是否準確(是否被篡改)檢驗區塊內的交易記錄輸入值是否“有效”(是否使用過)檢驗區塊內的交易記錄輸入值的數字之和是否大於等於輸出值的數字…

    # 重回“區塊”和“區塊鏈”的世界

    好了,對小紙條和交易記錄的研究我們點到為止,其實資訊量已經是巨大的了,讓我們合上蓋子,重回較大實體、繼續聊聊“區塊”和“區塊鏈”的話題。還記得,咱們在一開始講到關於區塊的特徵嗎?區塊創造後被埋在地下,需要經過節點們馬不停蹄的挖採、而且是憑運氣的挖採才有可能獲得——不僅僅如此,事實上他還有其他很多神奇的地方,比如說:

    憑空產生的區塊在剛剛建立的時候會形成一股強大的黑洞效應,它會嘗試將這段時間全世界各個節點上產生的所有小紙條(交易記錄)統統吸進來;在合上區塊蓋子之前,同時會在區塊內放上一些數字貨幣以及其他一些東西。區塊擁有一個唯一的 ID,但它只會在這個區塊被節點成功從地下挖出來之後建立。這個 ID 至少會跟「區塊內所有小紙條的集合」、「即將與之相連的上一個區塊 ID」以及「挖礦節點的運氣值」等因素相關。既然前面我們已經簡單瞭解了“Hash()函式”這個東西,這裡不妨透露給大家:“區塊 ID = Hash(‘區塊內所有小紙條的集合’+’即將與之相連的上一個區塊 ID’+‘挖礦節點的運氣值’+’…’)” ;基於先前掌握的知識,然後你應該知道區塊內任意一張小紙條的資訊稍微做改動、或者節點挖礦運氣好一點壞一點等等,當前區塊的 ID 都會 “ biu~ ”的發生改變。

    基於上述 1、2 點,如果閱讀足夠仔細的同學可能會有些頭大。在文章開頭為了更好的描述,我在設計簡化區塊鏈系統的時候故意模稜兩可了幾個概念,這也許已經誤導到了部分同學。這裡不得不停下來和你一起修正下之前在你大腦中已經構建的區塊鏈世界觀。我們前面講道,“在節點的視野裡,大概每十分鐘會憑空產生一個建立在自己平行宇宙世界的神奇區塊”。如何正確去理解這句話呢?——擁有上帝之眼的你,可以這麼拆解問題、看待問題:

    同一個週期內,全網並不是產生唯一的一個區塊等待挖掘;每個節點事實上都在週期性的創造區塊和挖出區塊;只是在某一個節點的視野裡,它不能感知到另外一個節點上區塊的產生。為何這裡要特別強調“在某一個節點的視野裡”,就是因為我們剛剛講到,從區塊的視角來說,區塊的憑空產生,是基於即將與之相連的上一個區塊 ID;而從節點的視角來看,區塊的憑空產生是基於當前節點區塊鏈末尾的那個區塊 ID 產生的。全網會盡力控制在一個週期內只有一個節點能夠成功挖出區塊,但是不能夠完全避免多個節點同時挖出區塊的可能性;如何盡力控制?比如說,當大夥挖礦的熱情高漲、工作效率提高,區塊會被埋在更深更廣的地方等。簡而言之,透過提高工作難度,來維持這個平衡。另外,值得注意的:產生區塊、挖出區塊、校驗區塊,他們的時間週期近乎相同。挖礦,本質是透過與或運算,去碰撞一個出一個滿足規則的隨機數。這個部分要細講的話,估計又可以寫出兩三千字來。我覺得到目前為止,並不影響主軸知識點的講解,這一塊會作為後續知識結構的完善被撰寫(計劃 1 月 24 日前完成)。感興趣的同學可以 Google 百度查閱下什麼叫“挖礦”、“工作量證明 POW”等。

    分叉

    現在,我們終於對“區塊”這個概念有了更全面的認識,文章開頭講的故事就可以繼續展開來絮叨絮叨:

    假如幾乎同一時間,「中國上海浦東新區張衡路」上的節點和「美國紐約曼哈頓第五大道」上的節點異口同聲喊出來:“我挖到區塊了!裡面的小紙條都是有效的!獎勵歸我!”。其他節點也幾乎同時參與了對這兩個區塊的校驗,結果發現這倆都沒毛病,各節點也開始犯困,因為在他們的視野裡他們並不清楚最後哪一個區塊應該會被主連結納。算了!都連在自己區塊鏈尾巴上吧,這時尷尬了,區塊鏈硬生生的被分叉了!

    你肯定在想,那還得了,這種情況繼續下去,每個節點的區塊以及他們整理維護的小紙條都將變得不一樣,這已經嚴重違背了區塊鏈世界裡第一大最基本原則——所有節點共同維護同一份資料。所以,為了解決這個問題,區塊鏈世界引入了一條新的規則——擁有最多區塊的支鏈將是真正被認可有價值的,較短的支鏈將會被直接 Kill 掉。

    我們大夥都知道挖礦的過程存在巨大的工作量(如果沒有任何難度,把區塊扔在人群中,必然同一時間發現區塊的節點數量將大大增加,也就會產生無數的支鏈,透過這個例子,你大概也就能夠明白,區塊鏈世界為什麼需要設定工作難度了吧),並且在計算機的矽基世界裡,不可能出現所謂 “同時” 的概念,哪怕納秒的差別,那也總是會有先後順序。所以理論上,“分叉”的這種僵局很快會在下一個區塊被挖掘出來(以及校驗區塊)的時候被打破,實在不行下下個,或者下下下個……總之機制可以讓整個分叉的區塊鏈世界迅速穩定下來。

    “分叉”這種僵局在確認下一個區塊(以及校驗小紙條)的時候被打破,從而整個區塊鏈世界迅速穩定下來

    就上圖而言,所有基於張衡路節點挖礦獲得的區塊以及後續區塊的那條分支被視為有價值,最終會全部保留了下來;其他節點會統一效仿那個擁有更長分支鏈的節點所做的決策。另外,值得一提的是,同一時間,較短分支上的區塊會立即丟棄,而裡面的小紙條也會隨之釋放出來,被重新標記上“未確認”。

    “雙花”與“51% 攻擊”

    你可能已經開始困惑或者有點興奮,末尾幾個區塊的排序在修復過程中,因為時間差肯定會產生一些模稜兩可的地方,這往往會給資料安全埋下一顆雷。一個最簡單的假設——我記錄的一張小紙條很不巧地被歸在了一條較短的支鏈上,這條支鏈在競爭過程中理所當然輸掉了比賽,區塊被丟棄、小紙條被無情的貼上“未確認”的標籤。在等待下次區塊重新確認的過程中,這個時間差內,我,好像、似乎可以做點什麼壞事 ԅ(¯﹃¯ԅ) ,就比如說“雙花”(雙花,花兩次,雙重支付的意思)

    你腦海中也許很快浮過的這樣的構想,可不可能透過下面這種方法觸發雙花問題的產生,從而讓我不勞而獲:

    假設有一個名叫 X-Man 的壞傢伙,他控制了一個計算機節點,這個節點擁有比地球上任何一個節點算力都強大的計算機叢集。首先,X-Man 事先創造了一條獨立的(不去廣而告之)、含有比較多區塊的鏈條。其中一個區塊裡放著“X-Man 轉賬給 X-Man 1000 元”的紙條。接著,X-Man 跟張三購買了一部手機,他在小紙條上記錄下“X-Man 轉賬給張三 1000 元”;這條資訊被三次確認後(即三個區塊被真實挖出、校驗和連線),然後,張三把手機給了 X-Man。X-Man 拿到手機之後,按下機房的開關,試圖將先前已經創造的區塊鏈條連線在自己這個節點區塊鏈的末尾。大功告成,X-Man 擁有了一條更長的區塊鏈條,那些較短、存放著“X-Man 轉賬給張三 1000 元”的區塊鏈,以及在區塊鏈世界裡那則真實轉賬行為被一同成功銷燬。(?)

    事實真的如此嗎?在這裡我可以很負責任的說,too young too simple,區塊鏈世界規則的制定遠比我們想象的要健全很多,還記得我們之前講的“區塊的 ID 至少會跟區塊內所有小紙條的集合、即將與之相連的上一個區塊 ID 以及挖礦節點的運氣值等因素相關”。 在這裡,正是因為打算連線到主鏈的時候,事先準備的鏈子會意識到馬上要連線上的那個區塊 ID 發生了改變,隨之而來的是後面所有區塊 ID 都瞬間。節點不得不重新對後續區塊的解鎖以及對區塊內小紙條的校驗。

    在區塊鏈的世界,重新計算的行為等同於把自己(節點)置身於同一個起跑線,跟世界上其他所有的節點一同競爭挖礦。你會說,我擁有更強大的計算能力,但是對不起,跟你競爭的物件並不是第五大道、南京西路、香榭麗舍大道上的某一個節點,而是全球所有算力的集合,在這個集合中,你擁有的算力永遠都只是一個很小的子集。所以,根據區塊鏈算力民主、少數服從多數的基本原則,這個構想將永遠不會成立。

    除非....

    你控制著全球 51%的算力,這也就是區塊鏈世界裡另外一個著名的概念,叫做“51% 攻擊”,但這也僅僅是一個理論值,在真實世界裡這樣的攻擊我個人覺得是很難發動起來的,這裡面就牽涉到很多經濟、哲學甚至政治的因素。舉個最簡單的例子:X-Man 為了回滾剛剛發生的一筆交易記錄,成功發起了 51% 攻擊,這意味著很快整個區塊鏈系統將會崩盤,因為這次攻擊已經嚴重傷害到人們對這套系統的信任,接著比特幣開始暴跌至幾乎一文不值;但是這個擁有 51% 算力的 X-Man 原本完完全全可以透過挖礦的方式獲取更多收益,購買無數的 iPhone 手機。那他不是腦袋不是壞了還能是啥?對 51% 攻擊話題感興趣的同學可以閱讀這篇文章《什麼是比特幣 51% 攻擊?》。

    至此,我覺得區塊鏈最基礎、最核心的知識已經全部講完了(除了挖礦內部實現原理,作為一個遺憾留在這裡,有時間會完善掉),相信你已經對它有了一個宏觀的認識。另外,由於這篇文章採用了適當抽象、類舉的敘事方式,中間或多或少有些地方會跟區塊鏈底層嚴謹的技術實現有出入,歡迎大家來糾錯。另外,也是受限於自己知識結構的缺失,這篇文章會隨著我對區塊鏈更深入認識後,隨時進行修訂,最後更新時間可參考該回答下方的時間戳。

    --

    問答部分

    去中心化的系統中,到底是誰在發行貨幣?是無限量發行嗎?

    比特幣的貨幣是透過挖礦(工作量證明)來發行的,總數量是透過程式寫死了 2100 萬個,而第一筆區塊獎勵也是硬編碼寫死的。礦工挖出一個區塊所獲得的獎勵,每隔 21 萬個區塊將減少一半,按照平均 10 分鐘挖出一個區塊的執行效率,也就就說差不多每四年會銳減一次。2009 年 1 月起每個區塊獎勵 50 個比特幣,2012 年 11 月減半為每個區塊 25 個比特幣,2016 年 7 月減半為 12.5 個比特幣。基於這個規則,到 2140 年,所有比特幣(20,999,999,980)將全部發行完畢,之後不會再有新的比特幣產生。

    礦工節點的收益除了挖出區塊以外還有哪些?

    礦工節點的收益主要由兩部分組成:1)挖出新區塊的獎勵;2)挖出新區塊內所含交易的交易費。但就目前來說,一個區塊內的交易費大概只佔到礦工總收入的 0.5%甚至更少,大部分收益主要還是來自於挖礦所得的比特幣獎勵。然而,隨著挖礦獎勵的遞減,以及每個區塊中包含的交易數量增加,交易費在礦工收益中所佔的比重將會逐漸增加。在 2140 年之後,所有的礦工收益將完全由交易費構成。

  • 2 # 泡泡的威武霸氣

    你說的應該是區塊鏈吧!

    區塊鏈是分散式資料儲存、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。所謂共識機制是區塊鏈系統中實現不同節點之間建立信任、獲取權益的數學演算法[1] 。區塊鏈(Blockchain)是比特幣的一個重要概念,火幣網聯合清華大學五道口金融學院網際網路金融實驗室、新浪科技釋出的《2014—2016全球比特幣發展研究報告》提到區塊鏈是比特幣的底層技術和基礎架構[2] 。本質上是一個去中心化的資料庫,同時作為比特幣的底層技術。區塊鏈是一串使用密碼學方法相關聯產生的資料塊,每一個數據塊中包含了一次比特幣網路交易的資訊,用於驗證其資訊的有效性(防偽)和生成下一個區塊。[3]

    一般說來,區塊鏈系統由資料層、網路層、共識層、激勵層、合約層和應用層組成。 其中,資料層封裝了底層資料區塊以及相關的資料加密和時間戳等基礎資料和基本演算法;網路層則包括分散式組網機制、資料傳播機制和資料驗證機制等;共識層主要封裝網路節點的各類共識演算法;激勵層將經濟因素整合到區塊鏈技術體系中來,主要包括經濟激勵的發行機制和分配機制等;合約層主要封裝各類指令碼、演算法和智慧合約,是區塊鏈可程式設計特性的基礎;應用層則封裝了區塊鏈的各種應用場景和案例。該模型中,基於時間戳的鏈式區塊結構、分散式節點的共識機制、基於共識算力的經濟激勵和靈活可程式設計的智慧合約是區塊鏈技術最具代表性的創新點

    區塊鏈的進化方式是:▪ 區塊鏈1.0——數字貨幣▪ 區塊鏈2.0——數字資產與智慧合約

    ▪ 區塊鏈3.0——IFMChain,區塊鏈正式連結移動終端

    其實這些問題,LZ你完全可以先百度搜一下看看,如果百度可以解決,就儘量百度解決

  • 3 # web秀

    區塊鏈是分散式資料儲存、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。所謂共識機制是區塊鏈系統中實現不同節點之間建立信任、獲取權益的數學演算法 。區塊鏈(Blockchain)是比特幣的一個重要概念,火幣網聯合清華大學五道口金融學院網際網路金融實驗室、新浪科技釋出的《2014—2016全球比特幣發展研究報告》提到區塊鏈是比特幣的底層技術和基礎架構 。本質上是一個去中心化的資料庫,同時作為比特幣的底層技術。區塊鏈是一串使用密碼學方法相關聯產生的資料塊,每一個數據塊中包含了一次比特幣網路交易的資訊,用於驗證其資訊的有效性(防偽)和生成下一個區塊。

  • 4 # 沙河小二

    區塊鏈:是一個分佈在全球各地,能夠協同運轉的資料儲存系統,任何有能力架設伺服器的人都可以參與其中。它沒有公司,沒有管理員,是徹底無中心的。區塊鏈的資料安全,作為無人管理的分散式資料庫,從2009年開始已經運行了8年,沒有出現任何異常問題,這證明它還是有可行性的。但是,區塊鏈也有它自己的弊端。第一是效率,資料寫入區塊鏈,最少要等10分鐘以上,所有節點都同步資料,則需要更多的時間;第二是能耗,區塊的生成需要礦工進行無數無意義的計算,這是非常耗費能耗的。

    簡單點說,就是它沒有發行公司和管理公司,不是說像Q幣一樣,有發行商有服務商。如果你有更權威專業的區塊鏈見解,非常樂意和大家一起關注交流學習。
  • 5 # 迷失的羔羊

    我就不去複製一些不疼不癢的解釋了,再多術語對我們來說意義不大。

    這麼給您解釋吧,比特幣想必有所瞭解吧,區塊鏈是比特幣的一個重要概念,算比特幣的底層技術。

    現在剛剛起步,早一步玩玩沒有壞處,萬一星球火了呢,會不會火現在誰也說不好!

  • 6 # qi個猴兒

    什麼是區塊鏈

    區塊鏈有兩個主要部分:區塊和鏈。但大道至簡,它的本質就是一串鏈子把區塊串起來,然後資料被劃分成連續的多個區塊的形式,在電腦裡儲存。

    區塊鏈的資料並不是只存在於一臺電腦上的,他的資料是在存在於所有接入區塊鏈網路的電腦上的,每個電腦上的資料都是一樣的,因為每當你加入區塊鏈網路,你的電腦就會下載所有區塊,如果某人篡改了他的版本,網路就會判斷是否可信,它的策略是相信大多數人的版本。

    舉例說一下,

    A給B付房租,月月拖欠,B沒辦法。應用了區塊鏈之後,

    A,B,銀行三者相當於三個區塊,有了同一份協約,每月1號0點A給B付房租***元, 到了時候自動就完成協約。

    A想拖欠怎麼辦,想方設法修改自己區塊的協約,他能做到把自己的區塊協約修改了,但是做不到把B的和銀行的區塊一起修改,那麼A的協約與B和銀行的協約不匹配,則按少服從多的原則,協約有效,繼續完成付款交易。

    因此,區塊鏈是安全的,不可篡改的,他會慢慢普及應用到社會各個領域,這將會是一場新的秩序和規則的變革。

  • 7 # 天之塵

    感謝邀請!區塊鏈是一種去中心化的資料結構,資訊更加保密,每個人產生的行為資料資訊都會產生區塊鏈,比特幣是區塊鏈的具體體現形式,現在各個網際網路都在發力區塊鏈,從而形成區塊鏈雲,從而放大它的商業價值,區塊鏈是大資料的進一步發展,網際網路細分更精確,區塊鏈時代你應該行動!謝謝!

  • 8 # 追尋真相

    在認識區塊鏈之前,我們先來看下我們登入網站是個人的資訊是怎麼記錄到伺服器上的。

    這就是我們在訪問某個網站時個人資訊的儲存方式。大家看到的中央節點在現實的網路中就是伺服器,所有的使用者資訊都是儲存在一個伺服器上的。所以這種方式的一個最大額弊端就是一旦伺服器被駭客攻克,那麼他的所有使用者資訊都會被盜。雖然在現實的網路中每個公司都會購買各種昂貴的裝置去防止這種事的發生,但是總體的結構就決定其無法最大限度的保護使用者的資訊。這種儲存資訊的方式就是我們所說的中心化。

    我們再來了解一下區塊鏈的技術皮毛。

    這張圖大家一看便知,這是一個沒有中心的像漁網一樣的結構。這就是一個區塊鏈儲存資訊的模式----“去中心化”。當然它還有很多好聽的名字:分散式資料儲存、點對點傳輸、共識機制。

    現實生活中我們經常用到這樣的技術。例如:你女朋友要你像全世界宣佈說你愛他。這就把你愛她的資訊儲存到全部的節點上。到時你想抵賴也沒辦法了。哈哈哈!但是依據現在的資訊模式,後面的就你們腦補了。

  • 9 # 遠99557

    區塊鏈是分散式資料儲存、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。 這麼說可能有點專業化了。很多人看不懂。其實要想理解什麼是區塊鏈,只要明白區塊鏈技術為什麼會受到追捧就行了。為什麼這麼說呢?因為一個事物之所以受追捧肯定就說明它本身具有一些專屬特性。而這些專屬特性就是它區別其它事物根本。同時也是對自身的最好說明。比如說我們形容一個人的長相,就不會說這個人有兩個鼻子兩個眼,而是要具體到他自身一些別人不具備的特性。一旦這些特性描述清楚了。我們也就基本知道這個人的長相了。但還有些人缺乏想象力,僅僅透過這些描述還是不能知道。那怎麼辦呢?其實還可以找一個參照物。找出一副人物畫像來。然後描述跟這個畫像的區別。並且標註過來。那麼就很容易知道這個人的長相了。知道了長相。我們也就基本認識這個人了。

    那麼描述區塊鏈也一樣。為了讓大家更好的理解。我們可以拿他跟傳統的網際網路做比較,也就是拿傳統的網際網路做參照物。

    1.去中心化:網際網路是中心化的連結。如圖

    它有中心機構處理、儲存和輸出資訊。但區塊鏈是去中心化的。如圖

    它的資料處理、儲存和不輸出不需要中心化。

    2.開放性:由於第一個特性。網際網路是中心記賬。而區塊鏈由於沒有中心,所以它是全網記賬。是開放性的。

    3.自治性:網際網路的演算法是由中心化機構專有的。其它節點只是運用中心化機構的儲存資訊,而區塊鏈採用基於協商一致的規範和協議,全網使用同一演算法。任何人無法干預。所以區塊鏈具有自治性。

    4.資訊不可篡改性:網際網路有中心化機構,就等同於各節點有協商化機構。在協商一致的情況下資訊可篡改。但對於區塊鏈,因為是去中心化,所以一旦它的資訊經過驗證並新增至區塊鏈,就會永久的儲存起來,除非能夠同時控制住系統中超過51%的節點,否則單個節點上對資料庫的修改是無效的,因此區塊鏈的資料穩定性和可靠性極高。

    5.隱匿性。網際網路有中心化機構,中心化機構有資訊處理協商作用,而要發揮這些作用中心化機構必須要保證資料交換是要各方相互信任。所以交易各方必須公開身份以獲取信任。但對於區塊鏈而言由於節點之間的交換遵循固定的演算法,其資料互動是無需信任的(區塊鏈中的程式規則會自行判斷活動是否有效),因此交易對手無須透過公開身份的方式讓對方自己產生信任,對信用的累積非常有幫助。

    透過這些對比相信你應該能大概理解什麼是區塊鏈了。

  • 10 # 比特幣鮑富

    區塊鏈專業術語挺難理解。這裡準備透過兩方面(術語、俗語)來具體解釋下區塊鏈。百度百科給出的定義是“ 區塊鏈是分散式資料儲存、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。”那麼我們來一一看這些科學術語。

    1:“分散式資料儲存”,分散式”是指分佈在不同的地方、各節點分開。“資料儲存”顧名思義儲存資料的地方,比如資料庫。這麼說,大家肯定還不明白。那麼我們先把問題簡單化,用借錢舉個例子,講講分散式資料儲存的工作原理,以及好處。拿銀行做例子。我們每個人都需要與銀行打交道,都有銀行卡,銀行卡里面都有金額。無論你是個位數,還是五位數+。其實呢,銀行把這些資料都集中存放在自己的 資料庫裡。比如貴陽某地資料庫。那麼這樣其實是有問題。比如哪一天機房火災,所有資料丟失。怎麼辦呢?銀行說沒事,我們還是備份資料庫。那麼假如那個地方同時也出現問題。當然發生機率很小,但並不代表沒有機率。又比如某人利用職務之便,修改資料庫裡面的資料,又怎麼辦?這個是發生過的。某某行長利用職務之便。一直以來,我們都是透過國家公信力來相信自己的金錢不會受到損失。那麼區塊鏈技術可以解決這些問題痛點。比如你存了100元,使用區塊鏈技術你會把交易資訊廣播給全網節點,接著各節點再去驗證。透過驗證的資訊一旦記在區塊鏈上,就很難篡改。最形象的說法有人說最早使用區塊鏈技術是打麻將。那為什麼是你廣播,而不是銀行去廣播?節點協助記賬,是為了防止欠債人耍賴等損害信任的情況出現;一般來講,誰把錢存進去,誰到最後可能遭受財產損失,誰廣播。也就是點對點傳輸。

    2:“共識機制”,何為共識,大家都同意,都認可舉一個更加接近的例子好了。在傳統的金融系統裡,A向B轉賬了一筆錢,這個行為會被儲存在銀行資料庫裡,也就是交易資料的真實性由銀行這樣的傳統機構保證,以他們的記錄為準。但是在區塊鏈系統中,可能有的節點記錄了A向B轉賬的事情,有的節點沒有記錄,那到底有沒有轉賬這回事呢?於是透過一個合適的共識機制,讓整個系統能做出統一的決定,就很重要了。BTC採用的是POW(Proof of Work)共識機制。

    3:“加密演算法”主要是加密學與計算機技術相結合。簡單而言就是透過一種演算法手段將對原始資訊進行轉換,資訊的接收者能夠透過秘鑰對密文進行解密從而得到原文的過程。加密演算法的最終目的就是保護資料安全。比如比特幣採用的是非對稱加密技術。

    最後簡單提下比特幣,比特幣是區塊鏈第一個實際應用。結合上面,全網節點參與記賬,為什麼要參與,參與計算了,沒有好處,這樣下去,誰會幹呢?於是,一個叫中本聰大神,發明了比特幣,誰參與了節點計算,並最先計算到。就獎勵幣。這個幣有很長的發展史,區塊鏈產生了比特幣,比特幣讓區塊鏈技術被越來越多人關注,至於未來,對我們會有什麼影響,不可而知。套用李笑來老師的話,改變世界,全方位參透各個領域。

    如果大家理解的還不是很清楚,可以找下劉潤老師的影片,對這些有很仔細通俗的解釋。得到裡面有,如果誰需要這個影片,可以私我。我提供給大家。

  • 中秋節和大豐收的關聯?
  • 定製衣櫃門用實木多層還是橡木指接好?