区块链共识机制——Proof Of Work

Proof Of Work,顾名思义,直译过来就是工作的证明,也就是证明你,某人做了一定量工作。这就是这种机制的命名来源。如果希望证明某人做了什么工作的话,那显然,最有力的就是目睹,观测他整个工作的过程,然而,这种方式显然是极为不便的而不可取的。所以,我们只需要这个人提供给我们工作的结果即可,也就是我们关注的对象是结果,而不是过程,从计算机的角度来讲,那就是——我们提供给你输入,你只需要给我们一个输出。例如,我们想知道你能够开车,那我们并不需要大费周章找一辆车让你现场开给我们看,而只需要你出示你的驾照即可。
工作量证明系统就是,让发起者进行一定量的运算之后,向接受方出示正确的运算结果作为运算工作,也就是消耗了一定的计算资源的证明。
哈希现金就是一种工作量机制,一开始是提出来过滤垃圾邮件,抵抗邮件的拒绝服务。这种机制的核心是哈希函数,哈希函数就是将输入的任意长度的字符串x映射成一个新的字符串H(x),这个新的字符串具有固定长度。哈希函数的优点,同时也是哈希函数可以用于作为比特币工作量证明的基础,首先就是他的不可逆性,对于输出结果是无法逆推出下的;其次就是不会冲突,然而理论上来讲对于一个哈希函数来说当有一定程度数量的输入时必定是会存在冲突的,但是比特币使用的是SHA256算法,这种算法会有2的256次方种输出,那么显然当出现比总数多一次的输入时,必然会出现一个重复的结果,但是这种计算量对于一个计算机来说是需要我们难以想象的时间才能完成的,所以我们不需要任何担心。
而当你想要生成一个新的区块的时候,你就必须解决区块链网络给出的谜题,而这个谜题就是使用工作量证明的哈希函数来计算以区块头作为输入数据,以当前网络的算力水平为基础的难度值——也就是,决定了所要做的工作量的大小,也就是所要得出的值的大小的上界,也就是需要得到多少个前导0,然后网络会根据解出谜题的时间调整难度值的大小,以10分钟为标准,小于10分钟加大难度,大于10分钟减少难度。
但是,这里同时也是工作量证明机制的一个缺点,那就是算力高的计算机会不断拉高难度,导致算力低的计算机永远挖不了矿,只要这台计算机的算力达不到网络的平均算力。而同时,这也是工作量证明的一个问题——庞大计算资源的消耗(虽然通过一定的改进,使得计算出来的结果可以在本机得到利用,但是在其他层面上的消耗——例如电力等,显然是无法避而不谈的),以及能源的消耗。并且同时计算出结果导致的分叉问题又需要另外的时间与资源进行确认并且导致额外的复杂度。
我觉得除非从根本上改变算法才能解决这个问题,然而这已经是另外一个算法了,而且我没有能力提出一个新的算法,所以我觉得资源问题可能需要从硬件层面解决,例如开发出专门的区块链设备,或者是能够和其他领域合作,使得计算消耗电力最终这种计算能转化到比较有用的地方,有用的计算结果是一种当前可用的方法,或者是我们能否把一个现实需要解决的问题抽象,映射为一个哈希函数的输入,然后当满足一定的前导零后可以在一定程度上简化问题的解决难度,或者是可以利用通过增加前导0化简问题,这样提交结果可以用于别的任务,而又不会导致算力的损失。

你可能感兴趣的:(区块链共识机制——Proof Of Work)