昨天我們聊到了,比特幣是一種公共記賬貨幣,每個人都有權利給這種貨幣記賬,而且這個賬本分佈在全世界的每一個角度,每一次記賬的時候需要核對賬本的正確性,這就很麻煩,每天這麼多筆交易,到底怎麼核對的呢?當然如果你要用人工的方式去核實,那幾乎是不可完成的,但是用技術就簡單多了,用什麼技術呢?這種技術就叫做非對稱加密技術。
我們再講非對稱加密之前,我們先要講一個函式叫做雜湊函式,這個雜湊函式並不複雜,非常容易理解,但是它在整個比特幣的系統裡面,在各個重要的環節裡面都起到非常重要的作用。
關於這個雜湊函式的具體工作原理就不需要我們搞明白了,它的變種有很多,常使用的雜湊演算法包括MD5、SHA-1、SHA-256、SHA-384及SHA-512等。比特幣協議中,這個雜湊函式是SHA-256。這個SHA-256被公認為最安全最先進的演算法之一。
那麼這個函式到底有什麼用呢,他的用處也很簡單,就是它能把一種任意的資訊,可以是你的情書,也可以是一份合同、一份遺囑,甚至一本書的全部的內容等等都可以任何的資訊。帶入到這個函式中去,作為這個函式的輸入的內容。經過這個函式的加工就能得到一個簡短的摘要資訊。
它的具體的函式形式是這樣的,雜湊函式用y =hash(x)表示,輸入x進行運算,得到一個雜湊值y。這個y有另一個叫法:摘要,它的數學計算流程也很簡單,它可以把(輸入的)任意長度的資料轉化成(輸出的)固定長度的資料。
比如說,有一個富翁叫巴菲特,他今年已經90了,可能多幾年就要去世了,既然要離開那麼巴菲特就需要寫一份遺囑,那麼這份遺囑就可以作為原始資訊放到這個函數里面去,巴菲特的遺囑說我走了,我走之後,我的財產95%捐給慈善機構,3%給老大,1%給老二1%給老三等等。總之無論巴菲特的這份遺囑有多長,有多少字母,只要經過了雜湊函式一運算就可以得到一個簡短的一串摘要資訊。這就是一個希函式的具體的例子。
這個希函式就有三個基本的特徵。第1個特徵是同樣的原始資訊帶入到同樣的一個希函數里面去,總能西出相同的摘要資訊。也就是說如果是一模一樣的原始資訊。我今天用這個函式放進去,計算一下,會得到摘要,明天換一個人,把同樣的資訊放到這個函式中去,同樣能夠得到相同的摘要資訊,那麼這個可以理解我們做數學題,今天做用這個函式計算出來的結果是一樣的,明天做也是一樣的,這個是可以理解的。
第2個重要的特徵就是原始資訊的任何的微小的變化,都會透過這個函式運算,同樣的一個函式西出一個面目全非的摘要資訊,也就是說原始資訊裡面的任何一點點微小的變化,比如說這個冒號發生了變化,透過同樣的希函式來進行預算,都會得到一個完全不同的摘要資訊。並不是說因為冒號發生一點變化而使得資訊摘要資訊裡面只發生,比如說三發生一個微小的變化,不是這樣的。得出來的摘要資訊會完全不同,面目全非。
第3個特徵就是從摘要資訊是沒有辦法到推出我們的原始資訊的。 這個也不太難理解,如果說原始資訊是非常豐富的,那麼他只得到一個20位的摘要資訊,顯然從短的資訊中很難到推出那麼豐富的資訊的。
這就是我們比特幣系統中,很多地方用到的一個重要的希函式!具體的形式有好幾種,總之都是把原始資訊摘要成一組簡短的資訊。實際上我們可以看到,它相當於用了一組簡短的資訊,來唯一的代表了一個複雜的資訊,並且又不顯露出複雜資訊的原始內容,相當於給原始資訊給了一個指紋加密。
那麼具體到這個例子,那麼希函式有什麼用呢?我們還是舉巴菲特的例子啊。他可以在生前就擬好這個遺囑,並且用希函式運算出來摘要資訊,把他宣佈出去說我的遺囑已經立好了,這是它的希值,1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
好,等走了之後去世之後,他的大兒子二兒子和三兒子分別拿出來一份遺囑,當然了上面的分配方案肯定是不同的,那麼這時候親戚們、朋友們怎麼樣來確定誰的遺囑是真正的遺囑呢?好,就把他們的遺囑拿來,按照富翁生前的交代,把每個人所拿出的遺囑的資訊全部帶入到這個函式中去。每個人代入之後, 都會得到一串摘要資訊,那麼就來看誰的得出來的摘要資訊,跟巴菲特老爺子當初活著的時候所宣佈的材料資訊是一樣的。那麼誰的就是真正的有效的遺囑。這就是雜湊函式。透過這個例子,我們可以看到希函式在我們的日常的應用中,至少有4個基本的功能。
第1個是簡化資訊,他能把任意長的資訊呢簡化成一個你所要求的簡簡訊息,簡化之後,簡短的資訊可以用來標識我們原來的資訊。
第二個是標識資訊,我們剛剛才說過,這個摘要資訊可以看作原資訊的一個指紋,或者說身份。某一個原始資訊可以用摘要資訊來唯一的標識它。
第3個功能就是隱秘資訊,巴菲特生前,可以把摘要資訊公佈出來,但是同時又隱匿了原始資訊的內容,誰都不知道,同時又能證明在事後能夠證明資訊的存在,把原始的資訊隱匿了。
第4個功能驗證資訊,有了摘要資訊,我們就可以驗證原始的資訊是否是形成摘要資訊的資訊。
那麼這4個功能在比特幣的系統裡面,具有有哪些作用呢?我們明天繼續學習。
好下面我們來總結一下今天,學到的東西,第一比特幣系統中所用的的雜湊函式是一種非常容易理解的函式,他的一個變種函式sha256是目前被公認為最安全最先進的演算法之一。
第二:雜湊函式有3個特點,簡化資訊,標識資訊和隱秘資訊。
本文摘自高朋《八分鐘區塊鏈》。