哈希和電子簽名是什么?
哈希的意思就是引入隨機數量的輸入數據,將其加密,然后得出一個固定輸出數據,就叫做哈希。輸入可以是任何數據,只要能代表單個字節,一個MP3文件,整本小說,你的銀行賬單,甚至是整個互聯網。關鍵在于輸入可以無限大。哈希算法可以根據你的需求來進行選擇,現在公開的也有很多種算法。關鍵點在于,這些算法會將無限的輸入,轉換成固定數量的字節。例如,256字節。
那么這個哈希有什么用呢?現在哈希通常的用處就在于指紋識別,同時也被稱為檢測區域。這意味著一個哈希被用來驗證一個文件沒有被任何人更改。假設WikiLeaks發布了使用MD5哈希的文件,任何人下載這些文件,都可以通過MD5哈希驗證文件的來源。如果哈希和WikiLeaks發布的不符合,那么你就知道這個文件肯定是被改過的。
那么區塊鏈是如何使用哈希的呢?區塊鏈使用哈希,來表現整個區塊鏈網絡現在的狀態。輸入則是區塊鏈的整個狀態,也就是說近期完成的所有轉賬,輸出就是哈希代表的區塊鏈現在的狀態。哈希就被用來在區塊鏈網絡中讓各方相信,整個狀態都是相同的。但是這些哈希是怎么算出來的呢?
首個哈希是為第一個區塊或者是創世區塊所計算的,通過區塊內部的轉賬數據得出。初始轉賬的順序被用來計算創世區塊的區塊哈希。后來每挖出的新區塊,之前的區塊哈希也會被使用,同時還有這個區塊的轉賬信息,作為輸入值,來確定區塊的哈希。這就是區塊鏈的形成方式,每個新區塊哈希指向地是之前區塊的哈希。 這種哈希系統保證了任何轉賬記錄都不會被改變,因為如果任何部分的轉賬記錄改變,那么歸屬于這個區塊的哈希值也會改變,那么任何接下來的區塊哈希也會被改變。那么你可以簡單地將哈希對比,就很容易去分辨出哪兒發生了改變。這就非常棒了,因為區塊鏈上的每個人只需要對這256個字節達成共識,就可以代表區塊鏈的狀態。以太坊區塊鏈現在是10MB,但是區塊鏈狀態只有256字節代表的哈希。
那么電子簽名又是什么呢?電子簽名,和真實簽名一樣,為了證明某人的身份,但是使用加密算法,會使得簽名更加安全,不像手寫的那種,可以很容易地修改。數字簽名可以證明這個信息是從某個特定的人那兒來的,而且不是任何其他人,比如黑客。
電子簽名在現今互聯網中也有所應用。不論何時你通過ACTPS訪問網站,你都是在使用SSL,這就是通過電子簽名來保證你和服務器之間的安全性。這意味著當你訪問Facebook.com時,你的瀏覽器可以檢查跟隨頁面的數字簽名,來驗證者確實是從Facebook網頁傳來的,而不是從黑客。
在非對稱的加密系統中,用戶可以獲得秘鑰對,這是由使用某種算法的公鑰和私鑰組成的。公鑰和私鑰是通過數學關系相互連接的。公鑰的意思是公開發布的,作為從其他用戶處接受信息的地址,就類似IP地址或者是家庭住址。私鑰意味著隱秘的信息,用來將簽署電子信息,并發送給別人。簽名包含在信息中,以至于接受者可以驗證發送者的公鑰。這樣地話,接收者就可以保證只有發送者可以發送這條消息。在區塊鏈上創造賬號,就可以獲得秘鑰對,但是并不需要在任何地方進行注冊。而且區塊鏈上的任何交易都是由發送者使用私鑰進行電子簽名后才行。這個簽名保證了只有賬戶擁有者可以轉移其中的資產。
總結來看,區塊鏈不能沒有哈希和電子簽名。哈希使得區塊鏈上的人對現在的整體狀態達成共識,電子簽名卻保證了所有交易都只由正確的人發出。我們依賴于這兩個特性,來保證區塊鏈不會存在任何欺詐和貪污現象。