首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块与共识(一):竞选记账权

昨天我们讲到了双花和拜占庭将军问题,其实本质是共识问题。如果一个去中心化网络不能解决共识问题,那就一文不值。

回到昨天说的案例:A同时将1个比特币发给B和C。要解决这个问题,就是要让全网的所有节点都认为A发给了B,或者都认为A发给了C,这样就不怕那些“坏”节点捣乱了,你可以双花,但我们大家只认一个。

其实在前面已经用过一个办法,那就是先收到哪一笔就认哪一笔,但因为比特币节点分布全球,每个节点先收到的交易是不一样的,所以这个办法行不通。那我们能不能找一个权威的节点,以他收到的信息为准,然后大家都向他索要真信息?这是可以的,但我们又回到了“中心化”的老路子上去了,中心化的缺点之前说过了,这里就不多说了。

那么中本聪是怎么解决这个问题的呢? 他的办法也是找一个权威的节点,但是这个权威的节点是变动的,不是固定某一个节点,这样就避免了“中心化”。

具体怎么实现的呢?比特币网络大概每10分钟就竞选一次记账权,每个节点都会先在自己的电脑上记账,把他收到的交易信息记到一个账本上,俗称“打包”。但是,只有拿到记账权的人,他记的账本大家才会认,他会把这个账本广播给所有节点。这里的账本就是区块。于是,整个过程完成,比特币这条区块链上又增加了一个新的区块。

这个方法说来简单,但其实要解决好几个问题:

1、要给记账人一些好处,要不谁吃饱了撑的跑来记账。

好处有两个,一是比特币网络凭空“创造”出一些比特币奖励给记账人,这个奖励每4年减半,现在一个区块奖励12.5个(所有的比特币最初都是这么凭空产生的);二是从他打包的交易里收一点手续费。但是这个手续费,交易的发送者是可以自主决定出多少的。出得多当然交易速度就快,出得少交易就慢,因为区块是有大小限制的,记账人肯定优先把手续费出得多的交易打包,如果区块里还有空间,再考虑出得少的,如果没空间了,出得少的就只能往后排了,最后很有可能这个记账人不记,那个记账人也不记,一个个的10分钟就这么过去了,交易当然就慢了。

2、不给好处没人记,但给了好处,肯定又一堆人抢着记,这时候的问题就变成了用一个什么办法选出一个记账人。

办法就是解题,谁先解出来谁就负责记账,拿到奖赏。每次的题型都是一样的,考的都是哈希,但题目不一样。我们在讲哈希的那一篇说过,把一堆信息哈希出一串固定长度的数据很容易,但反过来从哈希值反推原始值是不可能的,只能用笨办法找各种原始值一个个去试,谁试得快谁就有优势,所以解题拼的是CPU的蛮力,这个蛮力也叫“算力”。每个区块里都有一个“难度系数”,这个难度系数决定了下一个区块的题目有多难,如果全网的算力太高了,那就把难度调高一点,反之则调低一点,反正就是保证全网在10分钟左右解出这道题,也就是保证大概10分钟出一个块。这样就保证了比特币产出的稳定,既不会因为太快而通货膨胀,又不会因为太慢而通货紧缩。

这样就行了吗?当然不是,还有一个问题要解决,我们下篇接着学习。

不投资毋宁死

自由,就是拥有选择的权利,而每一次选择都是一次投资。

谢谢阅读

✬如果你喜欢这篇文章,欢迎分享到朋友圈✬

评论功能现已开启,灰常接受一切形式的吐槽和赞美☺

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券