當前位置:
首頁 > 最新 > 讀懂比特幣——史上最準的介紹

讀懂比特幣——史上最準的介紹

今天的文章特別干,沒有一點水分~

比特幣所使用的主要技術

1

利用SHA256演算法和非對稱加密演算法製作數字簽名

2

利用區塊鏈中的區塊存儲比特幣交易記錄

3

利用工作量證明爭奪記賬權利

比特幣特點

1

點對點加密數字貨幣

2

去中心化(比特幣轉賬不依賴銀行或其他金融機構)

3

總量不變(比特幣網路內比特幣的總量不超過2100萬個)

4

降低國際交易成本

比特幣的交易實際上是互聯網的記賬過程,通過哈希演算法和非對稱加密演算法保證是記賬者本人簽名,基於區塊鏈技術的分散式賬本存儲和維護交易記錄。下面小編通過比特幣所依賴的技術,詳細介紹比特幣的原理。

數字簽名

如圖1為比特幣交易的工作過程,以A給B支付50個BTC為例說明:A將支付50個BTC的指令發出後,第一步,通過哈希(Hash)演算法SHA256函數將指令轉換為固定位數的字元串,我們稱為哈希值1;第二步,通過加密演算法將哈希值1轉化為加密的哈希值;第三步,通過加密演算法對加密的哈希值進行解密重新得到哈希值1;第四步,B將接受指令通過哈希演算法SHA256轉換為哈希值2;第五步,比較哈希值1和哈希值2是否相同,如相同則記賬成功。那麼,在整個記賬過程中就會用到哈希演算法和非對稱加密演算法製作數字簽名,下面小編再詳細介紹哈希演算法和非對稱加密演算法,大家看完哈希演算法和非對稱加密演算法後就理解上面所講的數字簽名過程了。

01

哈希演算法

為了表徵一個事物的唯一性,產生了哈希演算法。哈希演算法可以將任意長度的輸入通過散列演算法變換成固定長度的輸出,該輸出就是散列值,也被稱為哈希值。這種轉換是一種壓縮映射,也就是散列值的空間可以遠小於輸入的空間。在哈希演算法中要用到哈希函數,目前已有的哈希函數包括MD2、MD4、MD5以及SHA,並且哈希函數有兩個重要的特性:單向性位數固定性。下面我們用一幅圖來表示哈希運算過程,例如,有一個字元串123,通過某一種哈希函數運算,變成了abcdef,即通過哈希運算將一個3位的字元串變成了一個6位的字元串;另一個字元串為abcd1234通過相同的哈希函數運算,變成了efghij,即通過哈希運算將一個8位的字元串變成了一個6位的字元串。在這個變換中,只能從前面的字元串變到後面的字元串,無法從後面的字元串變到前面的字元串。另外,不管前面的字元串多少位,經過哈希運算後都會變為相同位數的字元串。

在比特幣記賬中,採用的是SHA256函數,SHA256函數公認是最安全的哈希函數,目前還沒有發現缺陷。SHA是Secure Hash Algorithm(安全哈希演算法)的簡稱,256代表哈希運算後得到256位的二進位數,即由0和1組成的256位數字,如下圖所示。那麼對於SHA256函數,有2的256次方種組合,這個數有多大呢,小編用MATLAB算完為1.1579e+77。我們做一個對比大家就知道這個數有多大了,宇宙中原子的個數約為10^80,也就是1e+80個,SHA256的組合個數僅比宇宙中原子個數少3個0。大家可以想像一下這個數有多大,因此,目前的計算機還很難攻破SHA256。

02

非對稱加密演算法

非對稱加密演算法與對稱加密演算法對應,是密碼學中常用的加密方式。首先我們來看對稱加密演算法,對稱加密是指加密和解密均使用同一個秘鑰,這個秘鑰被稱為私鑰,常見的對稱演算法包括DES、AES、3DES等。舉例來說明對稱加密演算法運算過程,如下圖所示,A要給B傳輸一個信息,為了不讓別人發現傳輸內容,A通過私鑰k(key)將明文p(plaintext)加密成密文c(ciphertext),B再通過k將c解密成p。A想將123傳給B,私鑰是+1,通過加密後密文為234,B通過私鑰對密文解密後得到明文123。C想要竊聽A、B間的信息,可以通過長期觀察密文計算得到私鑰。因此,對稱加密演算法很容易被攻破,從而產生了非對稱加密演算法。

非對稱加密演算法是指加密和解密採用不同的秘鑰,加密過程使用私鑰,解密過程使用公鑰。常見的非對稱加密演算法包括RSA和ECC演算法。還是舉例來說明非對稱加密運算過程,如下圖所示,A要給B傳輸一個信息,為了不讓別人發現傳輸內容,A通過私鑰k將明文p加密成密文c,B再通過公鑰d將c解密成p。非對稱加密演算法有一個重要的特性是不可逆性,這也保證了其安全性。即從m→k→p→d→m是沒問題的,但無法逆向從m→d→p→k→m。這主要得益於RSA原理的高明,因為要攻破私鑰,需要對1024位二進位數進行質因數分解,目前的計算機還無法做到一一對比一個大數的質因數分解,但量子計算機是可以攻破的。因此,目前RSA演算法仍是安全的。如想了解RSA演算法的,請自己wikipedia或Google。

將哈希演算法與非對稱加密演算法結合就實現了數字簽名過程,哈希演算法的單向性保證了封裝原始數據的不可篡改性,非對稱加密演算法保證了數據的安全性。因此,二者結合就解決了數字簽名的唯一性和不可篡改性。從比特幣交易流程圖中可以發現,簽名時用到私鑰,驗證簽名時用到的是公鑰。驗證簽名時對比的是哈希值而非原始數據,也保證了原始賬戶的安全性。上面介紹的是比特幣的單筆交易過程,那麼如何知道A賬戶中是否有比特幣,怎樣存儲轉賬記錄和維護數據存儲。中本聰採用了區塊鏈技術,並讓所有參與比特幣挖礦和交易的計算機共同記錄和維護交易記錄,那麼就會出現3個一致性方面的問題:如何進行所有計算機記錄同步、如何防止記錄被篡改、如何防止同一筆比特幣收入被重複使用。比特幣利用區塊鏈來解決這3個一致性方面的問題。下面小編將介紹區塊鏈。

區塊鏈

區塊鏈是由一個個區塊按照時間順序串聯構成的一種鏈式數據結構,並以密碼學方式保證的不可篡改和不可偽造的分散式賬本,其結構如下圖所示。區塊中存儲的是經過驗證和檢查的交易記錄。對於比特幣所用的區塊鏈,是單條最長的區塊鏈被認可,其他分叉出的支鏈不被確認,即比特幣的區塊鏈的每個節點都存儲著一個相同的區塊鏈。下面重點介紹比特幣的區塊鏈結構,也就是常說的區塊鏈1.0。

圖中的第0個區塊也被稱為創世區塊,是後面交易和挖礦的基礎,因為後面的區塊必須包含前面一個區塊的所有信息,這樣就必須要有一個初始區塊。當新的交易記錄生成,被放入新的區塊,並且將新的區塊添加到區塊鏈中時,這個新的交易記錄才得到比特幣網路的確認。這些新的交易記錄由礦工進行檢查,新的區塊由礦工生成,礦工負責檢查這些交易記錄的數字簽名是否正確、是否與交易記錄對應、交易記錄是否被使用過等。檢查無誤後製作好新區塊,並把新區塊發送到網路上的各個節點,網路上各個節點再檢查這個新區塊是否滿足要求,如滿足就將其添加到區塊鏈的末尾。由於網路上有很多礦工,那麼就有可能生成許多新區塊,為了保證區塊鏈的唯一性,比特幣採用工作量證明的方式來限制單位時間內生成的新區塊數量。那麼在限制單位時間內誰先找到這個新區塊,所有的節點都會認可,並將其加到區塊鏈末尾。礦工將新的交易記錄放入新區塊後還需要完成一個額外工作,這個額外的工作包括兩步:第一,將新製作的區塊所包含的內容,即前一個區塊的SHA256函數值、這個新區塊的基本信息和這個新區塊所包含的所有交易記錄,組成一個字元串;第二,在組成的字元串末尾添加一個隨機數,組成新的字元串,將新字元串輸入到SHA256函數中生成一個256位的二進位數,如果這個二進位數的前72位全是0,才算完成了這個額外工作。這個額外工作的工作量為是的前72位數全為零的概率為(1/2)^72,也就是計算機平均要計算(1/2)^72才能找到這個隨機數使得SHA256函數生成的二進位數的前72位全是0。目前比特幣的所有礦工加起來的算力平均10分鐘會找到這個這個隨機數,這也保證了新區塊很難被同時生成,只有算力強找到的概率才會大,這個找隨機數的過程也被稱為挖礦。比特幣網路會不斷增加挖礦難度,也就是增加SHA256函數生成二進位數位數是0的個數。當網路上同時生成兩個新區塊時,就有可能發生區塊鏈分叉,這個小編在這裡不再贅述。

介紹完區塊鏈,現在我們就可以回答上面提出的3個一致性問題:第一,如何進行同步,對於比特幣,保留的都是最長的一條區塊鏈,也就是主鏈,大家都以這條區塊鏈為準。那麼長時間沒有聯網或第一次安裝比特幣客戶端,聯網後都會自動向周圍的網路節點請求自己沒有的區塊,檢查無誤後逐一添加到自己已存儲的區塊鏈末尾。第二,如何防止記錄被篡改,由於比特幣網路只認可最長的一條區塊鏈,如果這條鏈中的某個交易記錄被篡改的話,這個區塊的SHA256函數值就會被改變,導致後面區塊所包含的SHA256函數值與這個SHA256函數值不相同,從而導致這條區塊鏈斷裂,那麼這條鏈就不再是比特幣網路中最長的鏈,也就不符合比特幣網路只認可最長一條區塊鏈的要求。那麼篡改者有沒有可能篡改記錄後自己製作區塊並生成最長的區塊鏈,理論上是可以的。即當篡改者的計算能力超過整個網路中其他節點的計算能力總和時,就可以自己製作區塊生成最長的區塊鏈,也被稱為51%算力攻擊。目前加入到比特幣挖礦和交易中的計算機越來越多,這種控制51%算力攻擊的可能性微乎其微。第三,如何防止同一筆比特幣收入被重複使用,在比特幣交易中,礦工如果發現有相同的交易記錄產生時,只會將先發生的交易放到新區塊中,只有被放入區塊中的交易才會被認可,因此,同一筆交易記錄在區塊鏈中只可以使用一次,未被放入區塊鏈中的交易也就不會被確認,也就交易不會成功。

小編通過比特幣所依賴的技術,對比特幣的工作原理進行了解釋和說明,雖然有很多內容都是非常簡單的介紹,但文章依然很長,希望大家能耐心看完!一定會對比特幣的認識加深很多,對於數字資產的購買有很大的指導作用,避免買到空氣幣。

好了,小編今天就嘮叨這麼多,希望對大家有用,有任何問題歡迎大家拍磚!動動您的小指頭,關注小編公眾號,一定不讓您失望!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 砼動生活 的精彩文章:

ofo漲價的一些思考

TAG:砼動生活 |