区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术集成应用,众人共同维护的一个不可篡改、可追溯的分布式账本。
矿工:负责将交易信息打包进区块链的工作者
为了解决矿工打包交易生产区块的环境不友好问题,区块链使用共识机制,也就是在每一个区块链选择一个矿工生产,其他矿工节点同步区块。
共识机制如何决定选择那个矿工来打包交易:
比特币:POW采用算力共识
比特币区块链每个区块都有一个难度值,该难度值决定矿工需要经过多少次哈希运算才能产生一个合法的区块。矿工通过使用SHA256哈希函数,通过调整随机数,不断的变换区块头进行哈希运算,找出特定规格的哈希值。
即满足:
哈希值
最大目标值为一个恒定值:
以太坊:POS采用委任权益证明
以太坊为了避免POW中浪费电力资源和时间成本,采用以太币权益证明方式,即:
SHA256(SHA256(Bprev),A ,t)≤balance(A)m
这其中,H为某个哈希函数;t为UTC时间戳;Bprev指的是上个区块;balance(A)代表账户A额余额。
使用账户拥有以太币的数量和时间的长短来决定记账的节点,这样就省略了竞争记账造成的资源浪费。
区块链挖矿的难度值是随着区块链当前网络情况变化的:
比特币更新难度值:
根据实际时长与期望时长的比值进行调整(现在比特币每10分钟生成一个区块)
新难度值 = 旧难度值 * ( 过去2016个区块花费时长 / 20160 分钟 )
以太坊难度更新:
难度更新规则的设计目标如下:
•快速更新:区块间的时间应该随着hash算力的增减而快速调整;
•低波动性:如果Hash算力恒定,那么难度不应剧烈波动;
•简单:算法的实现应相对简单;
•低内存:算法不应依赖于过多的历史区块,要尽可能少的使用”内存变量“。假设有最新的十个区块,将存储在这十个区块头部的内存变量相加,这些区块都可用于算法的计算;
•非开发性:算法不应让矿工有过多篡改时间戳或者矿池、反复添加或删除算力的能力,以使他们的收益最大化。
领取专属 10元无门槛券
私享最新 技术干货