區塊鏈:查爾斯·霍斯金森的建議

查爾斯·霍斯金森(Charles Hoskinson)建議咱們從比特幣的 SHA256 轉換爲更新的 SHA3 (或者更準確地說,是 keccak256)。儘管有過一段時間爭議,但經過與加文、安德魯以及其餘人進行討論,咱們仍是確立了棧中的值的大小應該被限制在 32 Byte。而另外一種替代方案——無限制整數——則仍在考慮當中,由於該方案存在一個問題,即咱們很難計算出執行家加法、乘法以及其餘操做到底須要多少燃料。算法

 

回到 2014 年 1 月,咱們最初想到的挖礦算法是一個叫 匕首 (Dagger) 的東西。優化

 

匕首是根據有向無環圖 (Directed Acyclic Graph, DAG) 命名的。DAG 是一種用在算法中的數學結構,其思想是每隔 N 個區塊,就會有一個新的 DAG 由種子僞隨機生成。而且,DAG 的底層將會是一個須要用幾十億字節來存儲的節點的集合。然而,在 DAG 中,生成任意一個獨立的值只須要計算計算幾千個條目。一次匕首計算包含在這種底層的數據集中的任意位置得到必定數量的值,而後將這些值一塊兒進行哈希運算。這意味着存在一種快速的方式能夠進行匕首計算——已經將數據存儲在內存中,而後以一種緩慢但不會致使內存緊張的方式——從新從 DAG 中生成你須要從頭開始獲取的每個值。內存

 

這個算法的目的就是和當時流行的算法同樣擁有相同的內存受限屬性,就像 Scrypt 算法,可是仍然對輕客戶端友好。礦工會使用快速的方法,因此他們的挖礦將受限於內存帶寬 (理論上,消費者級別內存的優化程度已經足夠高了,所以用 ASIC 對其進行進一步優化十分困難),但輕客戶端可使用內存寬鬆且緩慢的方式進行驗證。快速方法可能只需幾微秒,而慢速且內存寬鬆的方法可能須要幾毫秒,因此這對輕客戶端依然是可行的。數學