1. 程式人生 > >Git 和 區塊鏈的相似性和差異性比較

Git 和 區塊鏈的相似性和差異性比較

偶爾看到 溫國兵 寫的 從 Git 到區塊鏈,覺得很有意思,但還有點意猶未盡。

於是打算仔細分析一下。

一、相似性

  1. 分散式

Git 確保每個程式碼倉庫在本地保留完整的專案庫,而不僅僅是自己在工作的這個分支和自己的提交歷史。同時也保留了最近這次 pull 下來後的所有快照和索引資訊。

區塊鏈上,每個節點在本地儲存完整資料庫,而不僅僅是自己的交易資訊。

  1. 可追溯性

Git commit 鏈上,每個 commit 物件都包含父級物件(上一次 commit 的物件,除了第一個 commit ),對之前的記錄全部可追溯。

區塊鏈上,每個區塊都包含前一個區塊的索引(除了創世區塊),可以追溯之前所有有效交易。

  1. 不可篡改

Git 的 commit 鏈中,每個物件本身在儲存前都計算校驗和,然後以校驗和來引用。一旦修改,校驗和就會不對, 這意味著不可能在 Git 不知情時更改任何檔案內容或目錄內容。

Git 用以計算校驗和的機制叫做 SHA-1 雜湊( hash,雜湊)。 這是一個由 40 個十六進位制字元( 0-9 和 a-f )組成字串,基於 Git 中檔案的內容或目錄結構計算出來。SHA-1 雜湊看起來是這樣:

24b9da6552252987aa493b52f8696cd6d3b00373

區塊鏈中,每個區塊包含上個區塊 ID,本區塊 ID 兩個 SHA-256 雜湊,這兩個雜湊都是基於區塊內容計算出來。一旦修改內容,則雜湊將變化,和其他節點的鏈不一致,最終不能加入到最長鏈中,因此無法真正篡改內容。

二、差異性

集體共識和中央節點意志: 1 - 區塊鏈是基於集體共識( POW/POS)來 merge,形成最長鏈,最長鏈即為主鏈。

2 - 而 Git 體系裡,通過倉庫託管平臺來進行多節點合作時,是平臺專案的管理者掌握了 merge 的權力,體現的是中央節點的意志。

  1. 密碼學

1 - 比特幣區塊鏈中,密碼學主要用到了以下方式

在比特幣區塊鏈的整個體系中,大量使用了公開的加密演算法,如 Merkle Tree 雜湊數演算法,橢圓曲線演算法、雜湊演算法、對稱加密演算法及一些編碼演算法。各種演算法在比特幣區塊鏈中的作用如下:

a)雜湊演算法

比特幣系統中使用的兩個雜湊函式分別是:1.SHA-256,主要用於完成 PoW (工作量證明)計算; 2.RIPEMD160,主要用於生成比特幣地址。

b)Merkle 雜湊樹

基於雜湊值的二叉樹或多叉樹,在計算機領域,Merkle 樹大多用來進行完整性驗證處理,在分散式環境下,其進行完整性驗證能大量減少資料傳輸和計算的複雜程度。

c)橢圓曲線演算法

比特幣中使用基於 secp256k1 橢圓曲線數學的公鑰密碼學演算法進行簽名與驗證簽名,一方面可以保證使用者的賬戶不被冒名頂替,另一方面保證使用者不能否認其所簽名的交易。用私鑰對交易資訊簽名,礦工用使用者的公鑰驗證簽名,驗證通過,則交易資訊記賬,完成交易。

d)對稱加密演算法

比特幣官方客戶端使用 AES (對稱分組密碼演算法)加密錢包檔案,使用者設定密碼後,採用使用者設定餓密碼通過 AES 對錢包私鑰進行加密,確保客戶端私鑰的安全。

e)Base58 編碼

Base58 是比特幣使用的一種獨特的編碼方式,主要用於產生比特幣的錢包地址,其類似於古典密碼學裡的置換演算法機制,目的是為裡增加可讀性,把二進位制的雜湊值變成了我們看到的地址“ 177rNLTxYAaXqTrrJPRsQNxvR9a1gF5P3K ”。

2 - Git:主要用了 SSH 祕鑰來進行遠端登入驗證,用了 SHA-1 來進行程式碼內容校驗和。

SSH 是 Secure Shell 的縮寫,由 IETF 的網路工作小組( Network Working Group )所制定,是一種專為遠端登入會話和其他網路服務提供安全性的協議。利用 SSH 協議可以有效防止遠端管理過程中的資訊洩露問題。

SSH 傳輸的過程如下: (1)遠端主機收到使用者的登入請求,把自己的公鑰發給使用者。 (2)使用者使用這個公鑰,將登入密碼加密後,傳送回來。 (3)遠端主機用自己的私鑰,解密登入密碼,如果密碼正確,允許使用者登入。

參考:

2.區塊鏈中的密碼學