雜湊遊戲開發,雜湊競猜遊戲系統開發詳解,雜湊遊戲原始碼功能
雜湊演算法是什麼?
區塊鏈的四大核心技術分別是密碼學、分散式賬本、共識機制以及智慧合約。而密碼學作為其中最重要的一部分,可以說是區塊鏈的基石,而其他技術是以密碼學為地基,才能搭建出區塊鏈這座高樓大廈。
區塊鏈主要應用的密碼學演算法有兩個部分:一個雜湊演算法,另一個是非對稱加密。
簡單來說,雜湊演算法就是一種特殊的函式,不論輸入多長的一串字元,只要通過這個函式都可以得到一個固定長度的輸出值,這就好像身份證號碼一樣,永遠都是十八位而且全國唯一。雜湊演算法的輸出值就叫做雜湊值。
雜湊演算法有三個特點,它們賦予了區塊鏈不可篡改、匿名等特性,並保證了整個區塊鏈體系的完整。第一個特點是具有單向性。比如輸入一串資料,通過雜湊演算法可以獲得一個雜湊值,但是通過這個雜湊值是沒有辦法反推回來得到輸入的那串資料的。這就是單向性,也正是基於這一點,區塊鏈才有效保護了我們資訊的安全性。
雜湊演算法的第二個特點是抗篡改能力,對於任意一個輸入,哪怕是很小的改動,其雜湊值的變化也會非常大。它的這個特性,在區塊與區塊的連線中就起到了關鍵性的作用。區塊鏈的每個區塊都會以上一個區塊的雜湊值作為標示,除非有人能夠破解整條鏈上的所有雜湊值,否則資料一旦記錄在鏈上,就不可能進行篡改。
雜湊演算法的第三個特點就是抗碰撞能力。所謂碰撞,就是輸入兩個不同的資料,最後得到了一個相同的輸入。就跟我們逛街時撞衫一樣,而坑碰撞就是大部分的輸入都能得到一個獨一無二的輸出。在區塊鏈的世界中,任何一筆交易或者賬戶的地址都是完全依託於雜湊演算法生產的。這也就保證了交易或者賬戶地址在區塊鏈網路中的唯一性。
一致性hash演算法提出了在動態變化的Cache環境中,判定雜湊演算法好壞的四個定義:
1、平衡性(Balance):平衡性是指雜湊的結果能夠儘可能分佈到所有的緩衝中去,這樣可以使得所有的緩衝空間都得到利用。很多雜湊演算法都能夠滿足這一條件。
2、單調性(Monotonicity):單調性是指如果已經有一些內容通過雜湊分派到了相應的緩衝中,又有新的緩衝加入到系統中。雜湊的結果應能夠保證原有已分配的內容可以被對映到原有的或者新的緩衝中去,而不會被對映到舊的緩衝集合中的其他緩衝區。
3、分散性(Spread):在分散式環境中,終端有可能看不到所有的緩衝,而是隻能看到其中的一部分。當終端希望通過雜湊過程將內容對映到緩衝上時,由於不同終端所見的緩衝範圍有可能不同,從而導致雜湊的結果不一致,最終的結果是相同的內容被不同的終端對映到不同的緩衝區中。這種情況顯然是應該避免的,因為它導致相同內容被儲存到不同緩衝中去,降低了系統儲存的效率。分散性的定義就是上述情況發生的嚴重程度。好的雜湊演算法應能夠儘量避免不一致的情況發生,也就是儘量降低分散性。
4、負載(Load):負載問題實際上是從另一個角度看待分散性問題。既然不同的終端可能將相同的內容對映到不同的緩衝區中,那麼對於一個特定的緩衝區而言,也可能被不同的使用者對映為不同的內容。與分散性一樣,這種情況也是應當避免的,因此好的雜湊演算法應能夠儘量降低緩衝的負荷。