比特币的所有节点都需要遵守统一的规则,主要包括工作量证明和最长链机制。共识算法就是为了保证总账的安全可靠。工作量证明可以简单的理解为你做了一定量的工作的证据。这就相当于检测一个学生整个学习过程是比较低效率的,而直接通过考试来检测则相对比较高效一样。
工作量证明系统需要花费计算机一定量的工作时间,这种系统最主要的特征就是不对称的,对于工作方来说,工作是刚好合适的,对于验证方来说是方便快速的。矿工通过不断构造出区块数据,检验每次计算出来的结果是否符合网络的难度是否满足工作量的要求。而区块头就是工作量证明的输入数据。难度值会根据全网的算力来调整使得大约每10分钟能够产生一个区块。
工作量证明主要分为以下几步:第一步,生成奖励矿工的交易coinbase交易,然后与其他交易一起打包成交易列表,使用算法Merkle tree生成Merkle root hash;第二步,把Merkle root hash和其他的一些组成部分一起组装起来形成80个字节的区块头,再将这个区块头作为工作量证明的输入;第三步,不断的改变区块头组成成分之一随机数,然后再对整个区块头进行两次SHA-256哈希运算,将结果进行哈希反转然后与网络中的目标值的十进制类型的字符串进行比较,如果小于目标值,则工作量完成。
挖矿所做的主要工作就是比特币的工作量证明。
由于区块链中的每一个区块都必须引用它的前一个区块,所以最长链一定是最难以推翻的链。只有在最长链上的区块才会获得系统的认可。打包的区块如果想要获得奖励,必须保证在所打包的区块后面再链入99个区块才能获得。
由于区块链解决了点对点的直接支付,没有第三方机构的存在,那么对于区块链来说或者比特币来说,最重要的一件事情就是要避免双花现象的发生。例如比特币系统中就规定,一笔交易在被确认六次以后才能算交易的完成。
如果攻击者拥有整个区块链网络中51%的算力,那么攻击者就可以随意改变已经确认的交易,这样双花现象就会成为可能,这就是所谓的51%算力攻击现象。但是往往这种攻击所带来的收益会小于拥有51%算力所带来的成本,所以一般的算力拥有着还是会选择老老实实的工作。
领取专属 10元无门槛券
私享最新 技术干货