我們知道以太坊的共識(shí)機(jī)制是權(quán)益證明機(jī)制(Proof of Stake,簡(jiǎn)稱POS)自沧,使用的算法是Ethash纵柿。簡(jiǎn)單來(lái)說(shuō)這個(gè)系統(tǒng)主要做兩件事:一是讀取內(nèi)存,二是用加密算法把數(shù)據(jù)混編產(chǎn)生出新的加密數(shù)據(jù)鸯绿。以太坊主要就是通過(guò)運(yùn)行這套算法運(yùn)行的跋破,今天就了解一下以太坊的挖礦原理。
1.以太坊挖礦原理
以太坊使用Ethash的算法,這種算法是對(duì) Dagger-Hashimoto算法的改良版本瓶蝴,流程大概如下:對(duì)于每一個(gè)塊毒返,首先計(jì)算一個(gè)種子(seed),該種子只和當(dāng)前塊的信息有關(guān);然后根據(jù)種子生成一個(gè)32M的隨機(jī)數(shù)據(jù)集(cache)舷手。根據(jù)Cache生成一個(gè)1GB大小的數(shù)據(jù)集合DAG(有向非循環(huán)圖)拧簸,它是一個(gè)完整的搜索空間,挖礦的過(guò)程就是從DAG中隨機(jī)選擇元素(類似于比特幣挖礦中查找合適Nonce)再進(jìn)行哈希運(yùn)算男窟,可以從Cache快速計(jì)算DAG指定位置的元素盆赤,進(jìn)而哈希驗(yàn)證。要求對(duì)Cache和DAG進(jìn)行周期性更新蝎宇,每1000個(gè)塊更新一次弟劲,并且規(guī)定DAG的大小隨著時(shí)間推移線性增長(zhǎng),從1G開(kāi)始姥芥,每年大約增長(zhǎng)7G左右兔乞。
2.以太坊挖礦的過(guò)程
礦工把以太坊的交易數(shù)據(jù)打包到一個(gè)區(qū)塊中。一個(gè)區(qū)塊包含了一系列的交易凉唐,區(qū)塊里每一筆交易都必須要經(jīng)過(guò)一個(gè)驗(yàn)證過(guò)程庸追,每個(gè)區(qū)塊都與它的前一個(gè)區(qū)塊鏈接起來(lái),形成區(qū)塊鏈台囱。
世界各地的礦工都在同一時(shí)間創(chuàng)建和驗(yàn)證區(qū)塊淡溯,礦工在提交一個(gè)區(qū)塊到區(qū)塊鏈上的時(shí)候都會(huì)提供一個(gè)數(shù)學(xué)機(jī)制的“證明”,這個(gè)證明就像一個(gè)保證:如果這個(gè)證明存在簿训,那么這個(gè)區(qū)塊一定是有效的咱娶。為了讓一個(gè)區(qū)塊添加到主鏈上米间,一個(gè)礦工必須要比其他礦工更快的提供出這個(gè)“證明”。通過(guò)礦工提供的一個(gè)數(shù)學(xué)機(jī)制的“證明”來(lái)證實(shí)這個(gè)區(qū)塊是否有效膘侮,證實(shí)了一個(gè)新區(qū)塊的礦工都會(huì)被獎(jiǎng)勵(lì)一定的以太坊幣ETH作為獎(jiǎng)賞屈糊。