美文网首页
哈希函数的最酷应用:区块链

哈希函数的最酷应用:区块链

作者: 金融测试民工 | 来源:发表于2020-04-05 16:22 被阅读0次

        区块链是一种分布式数据库,通过网络连接的节点,每个节点都保存着整个数据库所有数据,且任何地点存入的数据都会完成同步。

    区块链

        区块链最本质特征是“去中心化”,所有节点都是平等的,不存在中心控制。区块链由一个个区块(block)组成,block分为头(head)和体(body),区块头记录可元数据和链接到前一个区块的信息,即生成时间、前一个区块(head+body)的散列值,而区块体记录了实际数据。如下图:

    区块结构

        由于散列值具有抗修改性,如果想改动某个区块数据就需要修改所有后续的区块,而且区块链有“工作量证明”机制,这种大规模修改是不可能实现的,除非掌握了全网51%的计算力。

        由于区块链是大规模的分布式数据库,同步较慢,所以新区块的添加速度需要得到控制,例如比特币采用的速度是平均每10分钟生成一个区块。大家不惜付出海量的计算,去抢着算出一个区块的有效散列值,而只有最先算出的“矿工”才有资格把区块挂到区块链中,得到比特币。

    海量计算

        但是散列不是通过哈希算法就非常容易计算吗?为什么需要付出海量计算呢?为什么要抢先?

        其实每个区块设置了一个难度系数Difficulty,用常数targetmax除以它,得到一个target,难度系数越高,target越小。因为很难算出,所以控制了新区块生成的数据,便于在整个分布式网络中进行同步。

    难度系数

        矿工的工作是,找到一个数组Nonce,把它跟整个区块链一起计算散列,这个散列值必须小于target,才是有效的散列值。由于散列值无法回推原值,这个Nonce的寻找只能靠暴力穷举计算工作量+运气是唯一的方法

        例如比特币的信息都是公开的,如下区块的信息:

    比特币

        由于硬件摩尔定律的存在,计算力将持续递增,为了维持每10分钟生成一个区块的速度,难度系数Difficulty也将持续递增。另外,为了保持货币总量不会无限增加,规定每4年奖励的比特币减半。2008年开始是50个,2019年为12.5个。

        工作量证明:

    相关文章

      网友评论

          本文标题:哈希函数的最酷应用:区块链

          本文链接:https://www.haomeiwen.com/subject/itpuphtx.html