POW工作量证明

Proof of work,工作量证明,是比特币中使用的共识机制。主要依靠节点的算力,即通过不断计算尝试寻找随机值使得整个区块头的哈希值满足预定的难度要求。其具有去中心化、大规模节点支持、节点自由进出的优点,但是其造成大量资源浪费,且效率较低。

POW(Proof of work,工作量证明),去中心化、大规模节点支持、效率低、资源消耗高

在每一个新打包的区块头后面添加一个特殊的数字,对整个区块头使用双SHA256,通过不断尝试改变这个特殊数字可以使得整个区块头的输出哈希值开头有一定数量的零。

每个节点所要找的随机数可能都不同,由于交易记录到达每个节点的时间不同,打包进区块的交易可能数量、顺序都不同,所以找的随机数也不同,存在随机性。

POW将主链定义为最长的且难度系数最高的,即累计工作量最大的那一条。

 比特币交易的合法性是由整个网络合力验证的,只有大多数参与者认同某笔交易, 该交易才被视为有效. 然而, 在这种机制下, 假身份的问题凸显出来,即敌手可能发起女巫攻击(Sybil attack).交易发起方可以伪造多个身份, 随后对自己的交易进行确认,由于“大多数人”都认同这笔交易, 即便是双重支付,接收方也会相信并接受该交易. 基于控制系统中大部分算力比控制大部分实体难得多的假设, 比特币协议使用工作量证明来防止女巫攻击. 在确认交易前, 参与者需要做一些工作来证明他们的真实实体身份, 这项工作是解决一个密码学难题, 人为地提高了确认交易的计算成本. 因此, 验证交易的能力取决于算力,而不是实体身份数量.

比特币系统中不断产生新交易, 节点需要将合法交易放进一个区块中. 区块头由版本号、前一个区块哈希值、Merkle 根、时间戳、难度目标和随机数六部分组成, 参与者需要寻找随机数使区块头哈希值小于或等于难度目标. 比特币协议中使用SHA-256 哈希算法, 除非算法被攻破, 否则最有成效的方法是尝试不同随机数, 直到满足目标, 例如, 难度目标为二进制哈希值以48 个0 开头, 则平均要经过248 次尝试才能解决难题.

难度目标每经过2016 个区块后会进行调整, 使区块的平均速度保持在每10 分钟一个, 因此每两周(2016*10min)难度目标会更新, 新难度值T 的计算公式为:

其中, Tprev 是旧难度目标,t_actual是最近产生的2016 个区块的实际花费时间. 难度目标值越小, 寻找到满足条件的随机数就越困难, 如果t_actual小于两周时间, 意味着区块确认速度加快, 网络算力提升, 因此新难度值将变小(实际难度变大)使区块平均生成时间延长从而保持系统稳定性.

该算法的优点是易实现节点间无需交换额外的信息即可达成共识,破坏系统需要投入极大的成本。缺点是浪费能源区块的确认时间难以缩短

猜你喜欢

转载自blog.csdn.net/Black_BearB/article/details/83215074