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

比特币白皮书解读4

本节是很重要的一章,介绍时间戳的使用,时间戳是信息验证中非常重要的一个环节。

先讲一个悲伤的故事:17年底,我们挖矿收益很好,超出想象,我就很好奇比特币的验证环节,必然绕不过时间戳,what?how?when?我就发出了套路三连问,我们圈的大神谢总沉默良久,答“这个太高深了,你理解不了,不如花心思搞好你手头的工作”

咿,被打击,想想也有道理啊,我又不一定要做区块链啊,再说我一个学新闻的,就这点智商,能研究明白技术吗,能看得懂代码吗,为何要为难自己呢?有那时间都不如读读《唐诗三百首》。

后来看到白皮书,惊为天书,愤愤不平,早点教我嘛,这不是耽误一代女侠的成长。等我自己开始解析白皮书,才发现,人家说的是对的...........

特币白皮书:3,时间戳服务器

本解决方案首先提出一个“时间戳服务器”。时间戳服务器通过对以区块(block)形式存在的一组数据实施随机散列而加上时间戳,并将该随机散列进行广播,就像在新闻或世界性新闻组网络(Usenet)的发帖一样。显然,该时间戳能够证实特定数据必然于某特定时刻是的确存在的,因为只有在该时刻存在了才能获取相应的随机散列值。每个时间戳应当将前一个时间戳纳入其随机散列值中,每一个随后的时间戳都对之前的一个时间戳进行增强(reinforcing),这样就形成了一个链条(Chain)。

作者:大圣2017

链接:https://www.jianshu.com/p/ca0c0a0e0faa

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

附原图

唐诗解读

咱们首先可以把图中Hash再强调一遍,其实用原文hash不要再翻译过来可能更准确一些,反正目前我没见到哪位解析者翻译的更清楚和准确。我认为,把hash作为散列函数,甚至散列的意思并不影响大局,想想hash运算,是散列但是有一定规律的运算方式就可以了。如果这个理解不对,欢迎拍砖。

关于时间戳的时间如何确定,我也很想知道,依靠我自己目前的知识储备明显是说不清楚的,我研究了很多文章,依然很难用自己的语言来把时间的形成说的特别精准,但是在整个区块链中,这个问题,又绕不过去。我查阅了所有关于白皮书的解析,大鱼关于这段技术的解释是很清晰的。我们这次需要引用一部分(如引用让作者感觉受到冒犯,请联络,我们会处理)

“加上时间戳容易,但是如何取得时间呢,如果是加上本机时间,那么每个节点的时间都不统一,况且有人恶意更改本机时间呢。

如果不是本机时间,去网络上取国际标准组织的时间似乎是可行的,但是,这是典型的中心化操作啊,和中本聪倡导的去中心化理念不符。

那么如何获得一个去中心化的时间呢,我也是后来才搞清楚的,其实方法很简单,还是利用“多数人的正义”,时间来自于连接的其他节点(node)时间的中位数(mean,是个数学概念,比平均值更不受极端数字影响),要求连接的节点(node)数量至少为5,中位数和本地系统时间差别不超过70分钟,否则会提醒你更新本机的时间。同时,在接收到新的block时会拒绝时间与自己差距+2小时和-(前11个block时间中位数)的block

由此我们知道了这个时间的正确来源了,还是利用大多数人的机器时间,其实比特币的核心理念一直是认为“多数人是正义”的,我一直在想如果从一开始比特币的系统时间就比实际时间快1年的话,其实对整个系统是没有影响的,原因很简单后加入的节点都会按照前面多数人的时间中位数更改自己的节点时间,最后成为比特币系统自有的时间模式(如果大多数人都光着屁股跑,穿衣服的可能就不正常了,呵呵),好在比特币系统运行刚开始,时间还是比较准确的,不过我一直认为这个时间机制有漏洞可以钻。

详细的了解要看以下的比特币源码了

https://github.com/bitcoin/bitcoin/blob/master/src/util.cpp#L1325

https://github.com/bitcoin/bitcoin/blob/285cf7a1a6cb660b57cbc75f63e49736b51d705e/src/main.cpp#L2056

https://github.com/bitcoin/bitcoin/blob/285cf7a1a6cb660b57cbc75f63e49736b51d705e/src/main.cpp#L2129

了解比特币时间戳的机制后,后面的就容易理解了,将一段时间内,准确的说是,两个区块的产生间隔中的所有交易进行Hash运算,再盖上时间戳,这样我们就有了一个按时间序列产生的所有交易的记录了,区块链就这样形成了。

因为时间是线性增长的,所以区块链是按照时间先后顺序组织起来的,所以核心代码中关于时间的机制异常重要,我认为这是安全上比较脆弱的环节。”

现在我们来再看昨天的那张图,附链接

区块链圣经| 比特币白皮书解读3

联系上下文,这张图上就是一个区块包含的一部分内容或者全部内容。这样来看,只是信息存储的方式用区块来表示,而区块的产生有先后顺序,所有区块形成一条链条,就是区块链。

我们之前说过所有同时计算的区块链条中,最长的一条被大多数计算机确认为有效,其他的链条被丢失废弃。区块链圣经--比特币白皮书解读一

最后有一个问题:每一个区块当中,到底有多少次的交易信息?比如sign要多少次才会形成一个完整的区块?这个问题我问了一些计算机博士,回答不能让我满意。这个问题呢可能没有那么关键,重新跑一边比特币的代码大概就可以知道,反正只要有机会我们就搞清楚。再重申一遍:学无止境。

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券