1. 程式人生 > >什麼是區塊鏈技術,區塊鏈技術是什麼意思

什麼是區塊鏈技術,區塊鏈技術是什麼意思

技術1:區塊+鏈

關於如何建立一個嚴謹資料庫的問題,區塊鏈的辦法是:將資料庫的結構進行創新,把資料分成不同的區塊,每個區塊通過特定的資訊連結到上一區塊的後面,前後順連來呈現一套完整的資料,這也是“區塊鏈”這三個字的來源。

區塊(block):在區塊鏈技術中,資料以電子記錄的形式被永久儲存下來,存放這些電子記錄的檔案我們就稱之為“區塊(block)”。區塊是按時間順序一個一個先後生成的,每一個區塊記錄下它在被建立期間發生的所有價值交換活動,所有區塊彙總起來形成一個記錄合集。

區塊結構(BlockStructure):區塊中會記錄下區塊生成時間段內的交易資料,區塊主體實際上就是交易資訊的合集。每一種區塊鏈的結構設計可能不完全相同,但大結構上分為塊頭(header)和塊身(body)兩部分。塊頭用於連結到前面的塊並且為區塊鏈資料庫提供完整性的保證,塊身則包含了經過驗證的、塊建立過程中發生的價值交換的所有記錄。

區塊結構有兩個非常重要的特點:第一,每一個區塊上記錄的交易是上一個區塊形成之後、該區塊被建立前發生的所有價值交換活動,這個特點保證了資料庫的完整性。第二,在絕大多數情況下,一旦新區塊完成後被加入到區塊鏈的最後,則此區塊的資料記錄就再也不能改變或刪除。這個特點保證了資料庫的嚴謹性,即無法被篡改。

顧名思義,區塊鏈就是區塊以鏈的方式組合在一起,以這種方式形成的資料庫我們稱之為區塊鏈資料庫。區塊鏈是系統內所有節點共享的交易資料庫,這些節點基於價值交換協議參與到區塊鏈的網路中來。

區塊鏈是如何做到的呢?由於每一個區塊的塊頭都包含了前一個區塊的交易資訊壓縮值,這就使得從創世塊(第一個區塊)到當前區塊連線在一起形成了一條長鏈。由於如果不知道前一區塊的“交易縮影”值,就沒有辦法生成當前區塊,因此每個區塊必定按時間順序跟隨在前一個區塊之後。這種所有區塊包含前一個區塊引用的結構讓現存的區塊集合形成了一條資料長鏈。

總結區塊鏈的基本結構:“人們把一段時間內生成的資訊(包括資料或程式碼)打包成一個區塊,蓋上時間 戳,與上一個區塊銜接在一起,每下一個區塊的頁首都包含了上一個區塊的索引資料,然後再在本頁中寫入新的資訊,從而形成新的區塊,首尾相連,最終形成了區塊鏈。”這個結構的神奇之處:區塊(完整歷史)+ 鏈(完全驗證)= 時間戳

“區塊+鏈”的結構為我們提供了一個數據庫的完整歷史。從第一個區塊開始,到最新產生的區塊為止,區塊鏈上儲存了系統全部的歷史資料。

區塊鏈為我們提供了資料庫內每一筆資料的查詢功能。區塊鏈上的每一條交易資料,都可以通過“區塊鏈”的結構追本溯源,一筆一筆進行驗證。

區塊+鏈=時間戳,這是區塊鏈資料庫的最大創新點。區塊鏈資料庫讓全網的記錄者在每一個區塊中都蓋上一個時間戳來記賬,表示這個資訊是這個時間寫入的,形成了一個不可篡改、不可偽造的資料庫。我們認為,時間戳是區塊鏈中一項偉大的技術創新,它可以證明什麼呢?

技術2:分散式結構——開源的、去中心化的協議

我們有了區塊+鏈的資料之後,接下來就要考慮記錄和儲存的問題了。我們應該讓誰來參與資料的記錄,又應該把這些蓋了時間戳的資料儲存在哪裡呢?在現如今中心化的體系中,資料都是集中記錄並存儲於中央電腦上。但是區塊鏈結構設計精妙的地方就在這裡,它並不贊同把資料記錄並存儲在中心化的一臺或幾臺電腦上,而是讓每一個參與資料交易的節點都記錄並存儲下所有的資料。

1.關於如何讓所有節點都能參與記錄的問題,區塊鏈的辦法是:構建一整套協議機制,讓全網每一個節點在參與記錄的同時也來驗證其他節點記錄結果的正確性。只有當全網大部分節點(或甚至所有節點)都同時認為這個記錄正確時,或者所有參與記錄的節點都比對結果一致通過後,記錄的真實性才能得到全網認可,記錄資料才允許被寫入區塊中。

2.關於如何儲存下“區塊鏈”這套嚴謹資料庫的問題,區塊鏈的辦法是:構建一個分散式結構的網路系統,讓資料庫中的所有資料都實時更新並存放於所有參與記錄的網路節點中。這樣即使部分節點損壞或被黑客攻擊,也不會影響整個資料庫的資料記錄與資訊更新。

區塊鏈根據系統確定的開源的、去中心化的協議,構建了一個分散式的結構體系,讓價值交換的資訊通過分散式傳播發送給全網,通過分散式記賬確定資訊資料內容,蓋上時間戳後生成區塊資料,再通過分散式傳播發送給各個節點,實現分散式儲存。

分散式記賬——會計責任的分散化(Distributedaccountability)

從硬體的角度講,區塊鏈的背後是大量的資訊記錄儲存器(如電腦等)組成的網路,這一網路如何記錄發生在網路中的所有價值交換活動呢?區塊鏈設計者沒有為專業的會計記錄者預留一個特定的位置,而是希望通過自願原則來建立一套人人都可以參與記錄資訊的分散式記賬體系,從而將會計責任分散化,由整個網路的所有參與者來共同記錄。

區塊鏈中每一筆新交易的傳播都採用分散式的結構,根據P2P網路層協議,訊息由單個節點被直接傳送給全網其他所有的節點。

區塊鏈技術讓資料庫中的所有資料均儲存於系統所有的電腦節點中,並實時更新。完全去中心化的結構設定使資料能實時記錄,並在每一個參與資料儲存的網路節點中更新,這就極大的提高了資料庫的安全性。

通過分散式記賬、分散式傳播、分散式儲存這三大“分佈”我們可以發現,沒有人、沒有組織、甚至沒有哪個國家能夠控制這個系統,系統內的資料儲存、交易驗證、資訊傳輸過程全部都是去中心化的。在沒有中心的情況下,大規模的參與者達成共識,共同構建了區塊鏈資料庫。可以說,這是人類歷史上第一次構建了一個真正意義上的去中心化體系。甚至可以說,區塊鏈技術構建了一套永生不滅的系統——只要不是網路中的所有參與節點在同一時間集體崩潰,資料庫系統就可以一直運轉下去。

我們現在已經有了一套嚴謹的資料庫,也有了記錄並存儲這套資料庫的可用協議,那麼當我們將這套資料庫運用於實際社會時,我們要解決最核心的一個問題(問題三)是:如何使這個嚴謹且完整儲存下來的資料庫變得可信賴,使得我們可以在網際網路無實名背景下成功防止詐騙? 方法/步驟 技術3:非對稱加密演算法

什麼是非對稱加密?簡單來說,它讓我們在“加密”和“解密”的過程中分別使用兩個密碼,兩個密碼具有非對稱的特點:(1)加密時的密碼(在區塊鏈中被稱為“公鑰”)是公開全網可見的,所有人都可以用自己的公鑰來加密一段資訊(資訊的真實性);(2)解密時的密碼(在區塊鏈中被稱為“私鑰”)是隻有資訊擁有者才知道的,被加密過的資訊只有擁有相應私鑰的人才能夠解密(資訊的安全性)。

簡單的總結:區塊鏈系統內,所有權驗證機制的基礎是非對稱加密演算法。常見的非對稱加密演算法包括RSA、Elgamal、D-H、ECC(橢圓曲線加密演算法)等。在非對稱加密演算法中,如果一個“金鑰對”中的兩個金鑰滿足以下兩個條件:1、對資訊用其中一個金鑰加密後,只有用另一個金鑰才能解開;2、其中一個金鑰公開後,根據公開的金鑰別人也無法算出另一個,那麼我們就稱這個金鑰對為非對稱金鑰對,公開的金鑰稱為公鑰,不公開的金鑰稱為私鑰。在區塊鏈系統的交易中,非對稱金鑰的基本使用場景有兩種:1、公鑰對交易資訊加密,私鑰對交易資訊解密。私鑰持有人解密後,可以使用收到的價值。2、私鑰對資訊簽名,公鑰驗證簽名。通過公鑰簽名驗證的資訊確認為私鑰持有人發出。

我們可以看出,從信任的角度來看,區塊鏈實際上是數學方法解決信任問題的產物。過去,人們解決信任問題可能依靠熟人社會的“老鄉”,政黨社會的“同志”,傳統網際網路中的交易平臺“支付寶”。而區塊鏈技術中,所有的規則事先都以演算法程式的形式表述出來,人們完全不需要知道交易的對手方是“君子”還是“小人”,更不需要求助中心化的第三方機構來進行交易背書,而只需要信任數學演算法就可以建立互信。區塊鏈技術的背後,實質上是演算法在為人們創造信用,達成共識背書。

技術4:指令碼

指令碼可以理解為一種可程式設計的智慧合約。如果區塊鏈技術只是為了適應某種特定的交易,那指令碼的嵌入就沒有必要了,系統可以直接定義完成價值交換活動需要滿足的條件。然而,在一個去中心化的環境下,所有的協議都需要提前取得共識,那指令碼的引入就顯得不可或缺了。有了指令碼之後,區塊鏈技術就會使系統有機會去處理一些無法預見到的交易模式,保證了這一技術在未來的應用中不會過時,增加了技術的實用性。

一個指令碼本質上是眾多指令的列表,這些指令記錄在每一次的價值交換活動中,價值交換活動的接收者(價值的持有人)如何獲得這些價值,以及花費掉自己曾收到的留存價值需要滿足哪些附加條件。通常,傳送價值到目標地址的指令碼,要求價值的持有人提供以下兩個條件,才能使用自己之前收到的價值:一個公鑰,以及一個簽名(證明價值的持有者擁有與上述公鑰相對應的私鑰)。指令碼的神奇之處在於,它具有可程式設計性:(1)它可以靈活改變花費掉留存價值的條件,例如腳本系統可能會同時要求兩個私鑰、或幾個私鑰、或無需任何私鑰等;(2)它可以靈活的在傳送價值時附加一些價值再轉移的條件,例如腳本系統可以約定這一筆傳送出去的價 值以後只能用於支付中信證券的手續費、或支付給政府等。