簡介
哈希算法就是上面提到的區塊鏈中保證交易信息不可篡改的單向密碼體制。該算法的思想是接收一段明文,以一種不可逆的方式將它轉化成一段長度較短、位數固定的輸出散列。這個加密過程是不可逆的,這就意味著無法通過輸出散列的內容推斷出任何與原文有關的信息。任何輸入信息的變化,哪怕僅僅是一位數字的更改,都將導致散列結果的明顯變化。基於輸出散列與輸入原文一一對應的特性,哈希算法可以被用於驗證信息是否被修改。
通過哈希算法可對一個交易區塊的所有交易信息進行加密,並把記賬內容壓縮成一串數字和字母組成的字元串,這個字元串無法反推出原來的內容。區塊鏈的哈希值可以唯一、準確地標識一個區塊,並且任何節點通過簡單地對區塊頭進行哈希計算都可以獨立地獲取該區塊哈希值。如果想要確認區塊的內容是否被篡改,那么利用哈希算法重新進行計算,記賬信息沒有變化,計算出的哈希值也將不會產生變化。
在區塊鏈中,通常使用SHA一256的哈希算法進行區塊的加密,該算法的輸出長度為256位.即生成長度為32位元組的隨機散列。
以比特幣為例,它採用的是SHA256算法,本質上是一種加密算法,這個算法基於的數學原理導致其是隨機分布的,即每一個節點“散落”在不同的網路里。
就像你抓起一把紅豆,然後將其灑在盤子或者餅上,每一顆紅豆都是隨機出現,並且是分散在整個餅上的。
因而理論上,世界上的所有人都可以持有比特幣節點(算力)。
但是,這個原理在真實實現的過程中,並沒有完全吻合理想狀態。
比特幣選擇的算法被攻擊的可能性是存在的,且破解比特幣的挖礦程式也是存在的,但是挖礦是靠交易鏈來保證的,交易一旦確定,要靠偽造的交易鏈來實現,必須保證在新的交易產生之前能快速的運算出結果,但是現有的計算機是不可能做到的。
舉例來看,現在每1秒都有新的交易產生,所以破解算法的人就要在1秒內,趁著新的交易沒有產生的那一瞬間,快速運算出破解程式的結果,從而實現篡改。
而以目前計算機的能力來看,攻擊所用的時間比正常的交易時間多得多,所以基本不可能偽造成功。除非利用量子計算機,可以實現對現有計算機算力的“碾壓”,從而實現篡改。
於是現在,另一種可行的篡改比特幣的方式,就是偽造假冒比特幣算法,而要實現算法的偽造,持有者必須擁有全部節點中超過51%個節點的部分。
中本聰認為這是很難的一件事,事實上,要把隨機散落在各個網路中的節點找到並收集一半以上,這確實是很難的一件事,尤其對於最早發行的比特幣來說。
所以是不是現在就沒有人擁有超過50%以上的算力呢?
答案是否定的,以比特大陸這家公司為例,它有幾萬台礦機,能夠挖出大量的比特幣,因此它擁有現在全球最多的比特幣算力,不過對於比特幣而言,超過50%很難。
但是,區塊鏈技術是可以延伸的,所以比特大陸沿用了原來的算法,然後在其基礎上開發新的貨幣,如比特現金。
比特現金是比特幣的分支,但是因為它們基於的算法原理都是一樣的,所以我們可以認為是一種算法,兩種幣。
因此,在比特現金這個數字貨幣算力的持有上,因為比特大陸集中了很大的算力去挖比特現金,所以比特現金超過一半的算力在比特大陸手上,因而比特大陸就擁有篡改比特現金的能力。
解釋
什麼是區塊鏈的不可篡改性,通過下面的例子就會明白。
微信群里記錄的是聊天記錄,聊天記錄不可篡改。而區塊鏈也是存著一些特定的“聊天記錄”,這些記錄在區塊鏈世界裡有獨特的名字——交易。這些歷史交易使用區塊鏈的方式保存就不可篡改。
其原理是和微信群是一樣的,就是所有玩這個區塊鏈的人(被稱為節點錢包)都完整地保留一份交易的歷史記錄。這樣任何單個人想修改這些歷史記錄,別的人都可以拿出自己的那一份備份,來證明這些心懷不軌的人試圖作弊。只要發現這樣作弊的人,其他人就會將這個人孤立掉,直接踢出這個網路。