《这就是区块链》之区块链基础(6)


在前面的文章中,我们以加密系统和去中心化为核心,讲了区块链的技术基础。笔者认为:技术和共识构成了区块链。现在思考几个问题:1.如果有多个打包节点,那会不会导致区块链分叉?2.如果诚实节点的工作无法得到激励,那会不会导致诚实节点越来越少?3.如果系统中的51%节点都是恶意节点,那会不会导致整个区块链系统陷入被操纵的境地?为了解决这三个问题,我们将以比特币为例,介绍当前最火的公有链运行机制:工作量证明。

区块链系统会根据某种资源的占有量来选取打包的节点,如果这个资源是计算能力,那么这种方式便被称为工作量证明(POW),如果这个资源是币的拥有量,便称作权益证明(POS),如果这个资源是可以授权的股份,便称为股份授权证明(Dpos)。

工作量证明

那么计算能力到底是怎么反应工作量的呢,对区块链节点来讲,其实单纯的打包和上传数据是非常简单的,只是需要系统选择某一个特定的节点来处理这件事情而已,为了避免所有节点都在打相同的包而导致分叉,比特币通过哈希穷举增加打包难度来延长打包时间,简单说就是每一个节点需要在10分钟之内找到一个随机数,保证这个随机数加上之前区块的哈希值组合经过哈希运算之后能够满足一定的规律(比如第一位为1,第三位为5,第四位为8等等,保证满足条件的结果只处于所有结果中的很小一个范围内)。解决这个问题的办法之后一个,就是不断的尝试新的随机数,在2014年的时候,产生一个区块需要10的20次方 次哈希运算,也就是说,这个目标范围仅仅是1/100000000000000000000。随着计算机计算能力的增强,要保证区块产生的时间(10分钟),那么只能不断的修改计算的难度,难度增加则需要的计算次数增加,难度减少则计算次数减少,在比特币规则里面,就有修改难度这一项,所以,现在要获取到一个这样的随机数,需要计算的次数要远远高于这个数字,如果说你幸运的找到了这样一个随机数,那么你就可以作为打包节点进行打包,当然在比特币刚出来的时候,我们可以用个人电脑去计算,现在个人电脑已经不可能完成这项任务了。

关于哈希穷举的可以参考后面的配图(比特币工作量证明示意图)

使用哈希穷举来实现工作量证明有两点优势:

a.随机性,即使知道想要的目标范围,每个节点依然只能通过不断的尝试去获取随机值。

b.易验证性,如果有人声明找到了随机数,其他节点可以很快的通过哈希运算来验证这个数的正确性。

打包激励

如果只有工作量,没有奖励,节点可不愿意干这件耗时耗资源的事情,所以,比特币设计了两种对打包节点的激励方式:打包奖励和交易费。

1.打包奖励

打包奖励是创建区块的节点可以获取到一定数量的比特币,其实这只是在区块中增加了一项指向自己地址的交易,交易的金额来源具有特殊性。对于比特币来讲,每生成21万个区块,比特币的奖励数量就会减半,目前比特币的奖励数量为25个。由于比特币会通过更改难度去控制打包的时间为10分钟,也就控制了4年奖励数量减半一次。

2.交易费

比特币在设计之初便规定了其总量为2100万个,所有比特币都是通过奖励的形式产生,如果比特币发放完成(大约2140年,经过前面的概念,您现在应该可以自己算算这个时间有没有问题),那么交易费将是支持打包者(矿工)工作的一个重要因素。交易费是指比特币的每一笔转账都需要由转账者支付打包者一定的费用。如果您有使用过比特币进行转账, 那么您不会对交易费陌生。

简单说,这种进行工作量证明并获取打包奖励的行为就叫挖矿,比特大陆部署在鄂尔多斯的5个厂房里面放满了挖矿的矿机,每天就重复的干着这件事情,大家有兴趣的话可以去了解下这5个厂房的算力以及算力的占有比例,也可以了解下这5个厂房每天的电费,这些都是研究区块链可以参考的东西。

在工作量证明中,为了获取奖励,每个人都希望自己被选中为打包节点。从目前比特币的运行情况来看,算力分布相对比较分散,这在一定程度上保证了工作量证明的公平性,继而保证区块链系统的正常运行。但是由于大量的电力和硬件资源被用于哈希函数穷举,这种穷举方式除了选择节点外是没有任何资源转化价值的,这也成为了比特币被一些人诟病的原因。仁者见仁智者见智,希望读者都可以客观的看待这个问题。

 

 

加入《这就是区块链》学习群:

或者添加好友:xiaomingqkl

分享到