区块链科普篇之理论

区块链是由一个个的区块按照一定的顺序组成的

每个区块都包含以下信息:

时间戳 :当前区块记账的时间戳

交易记录:一系列的转账记录

上一个区块的HASH:每个区块都包含了上一个区块的HASH值(创世区块没有上一个区块的HASH值)

随机数:基于POW工作量证明的随机数(挖矿就是要找到这个随机数)

当前区块HASH:根据当前区块的数据算出的HASH

这里还有一个概念就是创世区块,就是区块链上的第一个区块,所以创世区块没有上一个区块的HASH,或者可以认为创世区块的上一个HASH都是0。

或许大家会问 随机数是什么鬼?是不是随便一个数字都可以?比特币的挖矿和随机数有什么关系?

来,干货哥要开始表演了,请自备板凳了!

说随机数前必须要了解另一个概念,hash算法。

所谓hash算法,简单来讲就是不同内容得到的hash值都是不一样的,而且hash值一般都是定长的,根据hash值也不能反推出原文,当原文中哪怕是只有一个字母的变化,hash值也是发生翻天覆地的变化。但是同样的内容多次计算出来的hash都是相同的。

根据以上hash算法的特点,在一个区块中,时间戳是确定的,交易记录也是确定的,上一个区块的hash值也是确定的,现在就是需要找到这么一个随机数,使得当前区块的hash满足一定的条件,比如 目前比特币的hash需要前面是18个0,所以就需要不停的穷举这个随机数,计算这个随机数的过程就是挖矿。第一个找到这个随机数的就可以得到相应的奖励(俗称挖矿成功)。

根据以上的特点,当有人篡改前面的区块记录时,当前区块的hash就发生了变化,它的下一个区块的hash也得跟着发生变化,同时也得重新计算随机数,而且就算你很幸运的改了下一个区块的随机数和hash(实际上这种情况应该不会发现,无效旷工除了没得到奖励外还要受到处罚),根据共识算法可以确定少数人服从多数人的原则,全网只有你一个人的数据是这样,别人的都不是这样,对不起,你的记录别人不认可。

有同学又开始问了,如果同一时间有2个人同时算出这个随机数怎么办?

那就要看谁的链更长了,以长的链为准。如果很不幸,此时大家的链都一样长,那就都记吧,等到下一次的时候看谁先算出随机数,哪个先算出根据最长链原则,另一个就要被淘汰了。其它旷工也会自觉的只记录最长的链,因为记录短的链是没有任何意义的,除了浪费磁盘网络和内存外没有任何用处。

所以比特币转完账一般需要6次确认(即在后面有6个区块),以太币转完币一般需要12次确认(即在后面有12个区块)。

这里还有个小细节,不管是比特币还是以太币,每个区块的大小都有限制,出块时间也有一定的要求,所以如果你转账给的手续费很低,恰巧此时主网上又要很多帐需要处理时,你的交易记录有可能就要被推迟到下次甚至永远排不上队,就是说转账有可能会失败。

好了,干货哥今天就先讲到这里啦。想及时了解更多干货可以关注干货哥的公众账号:开发者那些事

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180721A1GGKV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券