时间戳服务器

时间戳服务器是确保在线交易时间顺序和防抵赖性的关键,通常依赖于中心化的信任机制。比特币引入了一种分布式的时间戳服务器解决方案,通过区块链的区块哈希来确定交易顺序,而不是依赖于传统的时间戳。每个新区块的创建形成了一条有序的链条,确保了交易的先后顺序。区块链的时间戳并非精确的时间记录,而是通过区块哈希来间接体现先后顺序,从而实现了去中心化的可信时间戳服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时间戳服务器是一款基于PKI(公钥密码基础设施)技术的时间戳权威系统,对外提供精确可信的时间戳服务。它采用精确 的时间源、高强度高标准的安全机制,以确认系统处理数据在某一时间的存在性和相关操作的相对时间顺序,为信息系统中的时间 防抵赖提供基础服务。

时间戳的本意

时间戳,英文叫 timestamp , 最早指的就是一个物理的橡胶戳,扣到一个文件上表示这个文件的发布要早于时间戳上的当前时间。但是本文中我们聊的其实是数字时间戳,后面我们就都简称为时间戳了。时间戳就是计算机生成的一个时间,例如某年月日几点几分,格式有很多种,但是总之就是一个很简短的用来表示时间的字符串。

网上进行交易的时候,时间戳是非常重要的。比如我的一个比特币,我先用私钥签署一下,用它买了一只鸡,紧接着又再签署一下,买了一只羊。同一个比特币花了两次,到底哪一次有效呢?当然可以很容易的规定比较早的那次有效。可是问题就在这里,如何确认哪个交易发生的比较早呢?时间戳如果就是我自己的计算机生成的,那很容易造假的。

其实比特币出现之前,人们就会在网上频繁交易,所以时间戳服务器是早就有解决方案的。大家到网上去搜一下,会发现有很多公司在推销自己的时间戳服务器。这类公司一般都是政府颁发过证书的。我把我的数据发给他们,他们就会给我扣上一个时间戳,这个是有法律效力的哦。但是如何防止我改时间戳呢?毕竟时间戳就是个字符串。各家公司的方案肯定有差别,不过基本原理就是用提供时间戳的公司的私钥去签署一下我们的数据。因为有数字签名在,所有人都可以去验证这个时间戳是那家公司给加上的,同时数字签名签署的数据本身是不能修改的,数据改了,签名就直接作废了。其实数字签名中本身就包含一个时间戳,有些时候用这个自带的时间戳的可以了,不用另外添加了。

总之,时间戳就是个表示时间的字符串,本身没啥学问,但是关键在于保证时间戳的权威性。传统的时间服务器都是采用了基于信任的中心化处理方案,由政府和公司信誉做背书。这个方案肯定是不适合比特币的。

比特币的时间戳服务器

比特币创世论文中明确的有时间戳服务器这部分,其中明确给出了如何实现一个分布式的时间戳服务器的方案。简单来说,比特币创世论文里面说的”时间戳“不是我们上面说的时间戳,而是区块哈希。因为只有块哈希才能真正的保证区块的先后顺序,虽然严格来讲哈希不体现时间,不能算真正的时间戳。

还是要回到区块链的链这个字。经过 POW 算力竞争,每过大概十分钟之后,下一个区块会被创建出来,让整个区块链的长度加一。区块链是一个单向的链条,有了区块链之后当然就名明确的看到那个区块在前那个在后了。只要包含在前面区块的交易,就认为比之后的交易出现的早,而这个顺序跟交易真正的发起时间无关。同时区块顺序甚至也不一定跟区块的时间戳顺序一致,比特币区块链上允许出现在后面的区块的时间戳时间反而比之前的区块早。

所以最终的问题是,区块是如何连成链的呢?首先一个区块的哈希可以用来当这个区块的定位符,类似于可以用文件名找到文件,有了哈希就能找到对应的区块。同时,后一个区块中会包含前一个区块的哈希,所以拿到最新的区块,就可以找到上一个区块,如此反复就能找到区块链上的所有区块了。那么区块链的这条方向顺序都很明确的链,就是这么形成的。注意,实际中比特币的所谓的区块哈希跟我这里描述的有所区别,涉及到更多的细节,所以我们就不展开了,因为不影响后续内容的理解。

这样,只要拿到一个区块的哈希,就能知道这个区块在区块链上的排序位置,就能确定它和另一个区块哪个在前哪个在后。所以比特币中创世论文中所说的“时间戳服务器”中所说的“时间戳”,其实不是指区块时间戳,而是可以粗略的认为是区块哈希。

Chronos,在古希腊语意为时间,是小米公司开发的实现高可用、高性能、提供全局唯一而且严格单调递增timestamp的服务。Chronos 采用主备架构,主服务器挂了以后备服务器迅速感知并接替服务,从而实现系统的高可用。服务端使用Thrift框 架,经测试每秒可处理约60万次RPC请求,客户端单线程每秒可请求6万次(本地服务器),保证高性能与低延时。全局只有唯一的 ChronosServer提供服务,分配的timestamp保证严格单调递增,并且将已分配的值持久化到ZooKeeper上,即使发生 failover也能保证服务的正确性。Chronos依赖ZooKeeper实现与HBase类 似的Leader Election机制,ChronosServer启动时将自己的信息写到ZooKeeper的Master临时节点上,如果主服务器已经存在,那么就记 录到BackupServers节点上。一旦Master临时节点消失(主服务器发生failover),所有备服务器收到ZooKeeper通知后参与 新一轮的选主,保证最终只有一个新的主服务器接替服务。ChronosServer运行时会启动一个Thrift服务器,提供getTimestamp()和getTimestamps(int)接口, 并且保证每次返回的timestamp都是严格单调递增的。返回的timestamp与现实时间有基本对应关系,为当前Unix time乘以2的18次方(足够使用1115年),由于我们优化了性能,所以如果存在failover就不能保证这种对应关系的可靠性。ChronosClient启动时,通过访问ZooKeeper获得当前的主ChronosServer地址,连接该服务器后就可以发送 Thrift RPC请求了。一旦主服务器发生failover,客户端请求失败,它会自动到ZooKeeper获得新的主ChronosServer地址重新建立连 接。 标签:小米
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a soldiers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值