聊聊區塊鏈的創新技術

阿坨發表於2020-12-18

區塊鏈技術源於2008年一位署名為“中本聰”的學者發表的論文《比特幣:一種點對點電子現金系統》。時至今日,“中本聰”的真實身份仍然無人知曉,但區塊鏈的江湖一直有他的傳說,由其奠基的區塊鏈技術火爆全球。

何為區塊鏈,人們提到區塊鏈會想到近年火爆的比特幣,心裡會不自覺地把區塊鏈和比特幣掛鉤,但區塊鏈並不等於比特幣,比特幣只是區塊鏈技術應用的一個子集。區塊鏈是一個分散式的共享賬本和資料庫,具有去中心化、不可篡改、全程留痕、可以追溯、集體維護、公開透明等特點。這些特點保證了區塊鏈的“誠實”與“透明”,為區塊鏈創造信任奠定基礎。有人對區塊鏈做了一個概括:區塊鏈是一個去中心化的信任機制。區塊鏈底層依賴於數學、密碼學、網際網路和計算機程式設計等很多科學技術,主要解決了交易的信任和安全問題,並且針對這個問題提出瞭如下四大創新技術:分散式賬本、非對稱加密和授權技術、共識機制和智慧合約,這些創新技術和理念是跨時代的。

  • 分散式賬本。即交易記賬不再是傳統的中心化記賬,而是去中心化記賬(分散式記賬),記賬由分佈在世界不同地方的多個節點共同完成,每一個節點都儲存的是完整的賬本。

    何為中心化記賬:舉個簡單的例子,就是去淘寶購物,買賣雙方所發生的一切交易都需要一個權威的第三方機構來介入——支付寶,支付寶記錄了雙方的交易往來,當我們看好一件物品,下單購買的時候,錢首先會到達支付寶,當我們收到貨物確認收貨後,錢才會真正的從支付寶轉到商家的手裡。交易市場上商家鱗次櫛比,在人人都無法確認與之交易的商家是否可以信任的時候,支付寶介入兩方的交易當中,起到了一個非常重要的擔保作用,來解決交易雙方的信任問題。但中心化記賬是否絕對可信?答案是不一定,一旦這個記賬中心出現問題,如被篡改、被損壞、出現故障,整個系統會面臨危機乃至崩潰。當記賬中心崩潰,整個交易系統都會崩潰,所有的交易往來都會糾纏不清,這是一個典型的“單點故障”問題。為解決中心化記賬的“單點故障”問題並保證交易的可信任性,去中心化記賬橫空出世——區塊鏈的特點。

    何為去中心化記賬:即人人皆可記賬,交易網路中的所有節點都有對賬本的記賬權,每個節點儲存都是獨立的、地位等同的,每個節點依靠共識機制爭奪對每一筆交易的記賬權並保證賬本儲存的一致性(每個節點都單獨儲存著整個賬本),這也便解決了中心化記賬的“單點故障”問題。如果有非法節點要篡改賬本,至少要篡改全網51%以上的賬本才能篡改成功,賬本被非法篡改基本是不可能發生的,這也保證了交易的安全性。

  • 非對稱加密和授權技術

    儲存在區塊鏈上的交易資訊是公開的,但是賬戶的身份資訊是高度加密的,只有在資料擁有者授權的情況下才能訪問到,從而保證了資料的安全和個人的隱私。下面簡單談談非對稱加密演算法。

    非對稱加密演算法需要兩個金鑰:公開金鑰(簡稱公鑰)和私有金鑰(簡稱私鑰)。公鑰與私鑰是一對,如果用公鑰對資料進行加密,只有用對應的私鑰才能解密。因為加密和解密使用的是兩個不同的金鑰,所以這種演算法叫作非對稱加密演算法。

    非對稱加密演算法實現資訊加密交換的基本過程是:甲生成一對金鑰並將公鑰公開,需要向甲傳送資訊的其他人(比如乙)使用該公鑰(甲的公鑰)對機密資訊進行加密後再傳送給甲;甲再用自己私鑰對加密後的資訊進行解密。甲想要回復乙時正好相反,使用乙的公鑰對資料進行加密,同理,乙使用自己的私鑰來進行解密,這一過程保證了通訊資訊的祕密性。

    非對稱加密演算法除了用於資訊的加密傳輸,還有一個常見的應用場景,即身份驗證。

    舉個非對稱加密演算法用於身份驗證的例子,有一天課上,嘉嘉要給琦琦傳一張小紙條,紙條上內容寫著

    琦琦,我是嘉嘉,我喜歡你
    

    如果要向琦琦證明紙條確實是嘉嘉所寫,且內容未經其他人篡改(防止其他人起鬨),嘉嘉需要

    1. 將小紙條的內容進行Hash,得到摘要。
    2. 用自己的私鑰,加密摘要,生成簽名。
    3. 讓同班同學傳遞這個小紙條和生成的簽名。

    琦琦收到紙條和簽名後,需要

    1. 用嘉嘉之前給的公鑰,對簽名解密,得到摘要1。

    2. 對紙條內容進行Hash,得到摘要2。

    3. 對摘要1和摘要2進行對比,如果摘要1 == 摘要2 則說明紙條確實由嘉嘉所寫,且內容未經改動。

    為什麼說只有摘要1 == 摘要2,就能說明紙條確實由嘉嘉所寫,且內容未經改動?因為只有嘉嘉才能持有嘉嘉的私鑰,用私鑰加密的內容(簽名)只有對應的公鑰才能解開;如果紙條內容在傳遞過程中改變,根據雜湊演算法的特點,得到的摘要1一定與摘要2不同。

  • 共識機制

    所有記賬節點之間怎麼達成共識,去認定一個記賬記錄的有效性,這既是認定的手段,也是賬本防止篡改的手段,這也就是共識機制。區塊鏈的共識機制具備“少數服從多數”以及“人人平等”的特點,“人人平等”是當節點滿足條件時,所有節點都有權優先提出共識結果、直接被其他節點認同後並最後有可能成為最終共識結果。區塊鏈提出了四種不同的共識機制,適用於不同的應用場景,在效率和安全性之間取得平衡。這裡我們介紹下工作量證明機制(pow)。

    工作量證明(pow):要理解pow,必須先理解雜湊函式,雜湊函式的應用常在於給定一段訊息,通過雜湊函式可以將訊息對映為固定長度的雜湊值(比如sha256,將任意長度的訊息對映為256位的雜湊值)。雜湊函式的運算結果具有兩個特點:“無碰撞”和“不可逆”。

    “無碰撞”即是不同的x對映成不同的y(x的Hash值),我們無法找到相同的y對應於不同的x,這是指雜湊函式運算結果的唯一性;

    “不可逆”即是我們無法從x的Hash值(y)推匯出x,這表明雜湊函式是一個單向函式;

    理解了雜湊函式的運算之後,我們舉個工作量證明的例子,若給定的一個基本的字串”Hello, world!”,我們給出的工作量要求是,可以在這個字串後面新增一個叫做nonce的整數值(nonce還未知),對變更後的字串(新增了nonce的字串)進行SHA256雜湊運算,如果得到的雜湊結果(以16進位制的形式表示)是以”0000”開頭的,則驗證通過。為了達到這個工作量證明的目標。我們需要不停的遞增nonce值,對得到的新字串進行SHA256雜湊運算,這就是常說的窮舉,通過窮舉得到一個滿足要求的答案而爭奪記賬權。

  • 智慧合約:智慧合約與傳統的紙質合約類似,智慧合約即是把生活中的合約數字化,當滿足一定條件後,可以由程式自動執行的技術。智慧合約相對於傳統合約來說有兩個特點:將合約條件的觸發和執行合併為一次原子操作;建立在節點與節點之間(即使用者與使用者之間),無須第三方中心機構的介入。在生活當中的傳統合約一般建立在使用者和機構之間,即使是使用者與使用者之間需要建立一個合約,也會需要一個權威的第三方機構來為雙方作證明,從而防止單方面違約的情況出現。而區塊鏈的出現,解決了兩節點間的相互信任問題,從而導致智慧合約可以在區塊鏈的基礎上得到廣泛的應用。

    目前傳統合約的條件觸發和執行是非同步的,也就是說當人們發現客觀事件已經滿足了合約某條款的觸發條件,然後再人工地去觸發條款的執行,這一過程是低效的,特別是在追責追債中,很容易給違反合約的人一定的時間進行周旋和出逃。而建立起智慧合約則不需要擔心這些問題,舉一個例子,A將自己的汽車出租給B,A和B簽署一份智慧合約,A寫明條款:我的汽車的啟動金鑰在時間xx年xx月xx日前有效,續期需要B轉賬xx比特幣,否則金鑰失效。如果B在規定時間內不進行續費,那汽車金鑰自動失效,他也無法使用租來的汽車。這一智慧合約執行過程完全自動化和原子化,不用擔心B在到截止日期的時候拖欠租金,或是找一些藉口不歸還汽車的問題。

以上即是總結的區塊鏈四大創新技術:分散式賬本、非對稱加密和授權技術、共識機制和智慧合約。由於區塊鏈顛覆式的創新,也有人稱:“區塊鏈是網際網路的第二次革命”。我個人認為之所以稱區塊鏈為網際網路的第二次革命,是因為,在網際網路中新技術(區塊鏈)會催生新的應用,新的應用又催生新的需求,需求又會催生新的技術,在這一環套一環的影響下,網際網路會迎來更大的發展生態,區塊鏈則在其中,起了一個非常重要的奠基的作用。

相關文章