大家好,链团之声带您走进区块链的那些事儿,今天呢,我们进行技术篇的最后一个部分的讲解,工作量证明与挖矿。
工作量证明
区块链是分布式系统,新区块的产生由所有参与者集体决定,如果有人利用虚拟IP注册大量僵尸账号,来声称自己有10个账号可以投票10次,进而影响舆论的话,该怎么办呢?
王酵链告诉我们:这个时候可以规定任何一个账号必须完成一定的运算任务才能参与决策,大量的僵尸账号由于没有实际的设备支持,是完不成任务的,每个账号只有完成一定的运算任务才有投票权!这就是工作量证明。
嗯我大概听懂了,小九说那区块链中的工作量证明又是如何实现的呢,先请酵链带着我们来分析工作量证明需要具备的三个特性,然后看如何去实现它们。
首先是完成困难,任务需要消耗一定的计算能力,否则起不到工作量证明的作用。第二呢是验证容易,要很容易验证工作是否完成,第三难度可调,能根据全网的计算能力调节难度,使之一直处在合理范围内。
回到区块链,我们先简单看看一个新区块的生成过程。一个新区块的生成过程可以分为四步。这是一个首尾相接的循环过程,前一个区块的最后一步就是下一个区块的第一步。下面我们来一步一步解释。1. 收集交易记录2.寻找Nonce 3.广播4.审核通过
网络中的各个节点收集新广播出来的交易记录,以及上一个区块的哈希值,组成一个候选的区块,这一过程是由每个节点单独进行的。这个时候新区块的Nonce还是空缺的,下一步每个节点开始为自己构建的区块寻找Nonce,谁最先找到谁就是赢家。Nonce是工作量证明的核心,因为他没有任何实际含义,一个没有含义的数字有什么用呢。妙就妙在这里,正因为Nonce没有任何含义,所以我们可以随意修改它。它的用处就是 “凑数” ,区块链工作量证明的任务是:不断改变Nonce值,直到碰巧遇到一个Nonce,让整个区块的哈希值具有特定格式,如由若干个0开头。根据哈希算法的无序性,Nonce值的变化会导致哈希值无规律变化,结果不可预测。
根据哈希算法的单向性,不可能通过目标哈希值推导出Nonce,唯一的办法就是不断尝试更多的值,暴力破解。因此这个任务也符合“完成困难”的特性。一旦找到合格的Nonce,这个Nonce的发现者就会把这个候选区块广播到全网,交由其他节点审核。
而其他节点在收到候选区块后会做两件事: 1.检查交易记录是否合法: 2.对候选区块求哈希值,看它是不是由足够的0开头。根据哈希算法的单向性,求哈希值是个相对容易的运算,因此符合“验证容易”的要求。如果一切都合格,这个节点就会对候选区块表示支持。支持的方式就是将该区块的哈希值放入下一代候选区块中。如果网络中大多数节点都这样做,那么这个区块的哈希值极有可能出现在下一个“找Nonce”成功的区块中,它也就成功上位,升级为“老前辈”。这样就又回到了第一步,开始下一个循环。
如果有人故意制造一个错误的区块,由于得不到大多数人的支持,这个区块是发展不下去的。
好的,本期呢我们讲了
1.工作量证明的目的是防止僵尸账号捣乱。
2.区块链的工作量证明任务是要寻找一个Nonce,使该区块的哈希值由若干个0开头。
下期我们继续讲挖矿是如何进行的。
还没有评论,快来发表第一个评论!