以太坊的挖矿

共识挖矿

以太坊目前使用的POW共识机制,这个和比特币的POW又有些区别,确切的说以太坊目前的共识机制称为Ethash算法,该算法是为了解决挖矿中心化的问题。 

听过比特币挖矿的朋友肯定知道ASIC挖矿,那么ASIC(application specific integrated circuit)特殊应用的集成电路。那么Ethash是为了抵制ASIC而出现的。


以太坊的挖矿_第1张图片

以太坊挖矿者在区块链状态中获取随机数据,计算一些从区块链最后的N个区块中随机选择的交易,然后返回结果散列。 

先来看看以太坊的挖矿流程:

每一个区块中,通过区块头来生成一个seed,这个seed称为种子,种子只和当前的区块有关。

种子产生一个16MB的伪随机缓存。

基于上述的缓存,那么再生成一个1GB的DAG数据集。缓存和数据集存在依赖关系,一般来说数据集依赖缓存的某些元素,那么简单来说的话,就是只要有缓存,即可计算出数据集DAG中指定位置的元素。

矿工所做的事情,就是在数据集DAG中随机去选择元素,且对其进行散列的一个过程。就个比特币中区寻找nonce一样的模式。

那么对比比特币的挖矿,以太坊目前只需要验证者花费一定数量的缓存即可,验证指定元素的散列是不是小于某个散列值。

缓存和数据集DAG每增加30000个区块更新一次,故矿工的精力应该是在读取数据集上而不是去改变。

这种方式的优点,以太坊中的智能合约会有任何种类的计算,这样ASIC就是一个提供计算的的专门的集成电路。就类似一个全球计算机的CPU。然后挖矿中要求保存全节点完整的区块链。

以太坊在计划过度到POS机制,那么以太坊的POS机制先用V神的一段话来说明:POS协议分钟,每个人都是“矿工”,因此,除非他们选择通过放弃以太币来违反规则,否则每个人都必须承担确认和验证交易的责任,从本质上来说,这才是去中心化的管理模式,能够提高利益相关者在网络中的参与度。


以太坊的挖矿_第2张图片

POS有两种模式:一种是POS、一种是BFT(Byzantine fault tolerant)风格的POS。 

POS:基于链的POS,那么在每个时间阶段从验证者集中选择一个验证者,给与区块创建的权力,但必须要求验证者要指向最多的块,最长链上。 

BFT-POS:分配给验证者一定的权利,那么他们通过提出块生成,对提出块进行投票。就是一个投票机制,每一轮中对一个新块进行投票,在线的验证者最后商量块的生成添加,且这个意见结果不可改变。 

当然以太坊的POS机制还是带有惩罚机制。 

以太坊的casper:区块链中难免会出现相互竞争的链,那么为了保证大多数验证者都在主链上去生成区块,那么必须要有一个机制来保证,之前的POS机制是没有惩罚的,一旦出现攻击者,那么区块链就存在可能无法共识,甚至没有出现攻击者,也有可能因为准主链的选择而会出现分歧。那么假设在验证在不同的区块链准主链上,在事后的一个时间节点对验证错误行的记录行为包含在区块链中并给与一定的惩罚,或者直接惩罚验证者的在错链上出块的行为,casper采用抵押一定代币的验证人,那么这些验证人去投票,最后根据投票的结果形成大多数人的意见,对之前投票的人有效用户给与押金退还且给予奖励,对那些攻击或者出错用户将没收押金。

参考:《以太坊技术详解与实战》

你可能感兴趣的:(以太坊的挖矿)