【译】Look-ahead Staking in Qtum - What does that even mean?

在谈到Qtum时 ,我多次提到“前瞻性放样”作为我们“智能放样协议”的一部分。 这听起来像是一种很酷的技术,但究竟是什么呢? 我只会在技术上稍微回答一下。

所以,如果你已经阅读过我的第3版文章的证明 ,那么你知道我们用来维持共识的PoS协议有很多。 然而,这实际上是相当古老的技术,于2015年在Blackcoin推出。 “风险投资者”,即“挖掘”股权证明区块的东西最初很大程度上基于现有的Blackcoin代码。 基本上,它的工作方式是从mempool中的交易中建立一个块,然后检查你的钱包中的每个成熟的UTXO,看看它们中的任何一个对于创建PoS块是否有效,如果没有,那么它就抛弃该进行中的程序段和16秒钟后将再次完成。

这在Blackcoin中有点低效; 它多次处理事务。 然而,这并不是问题,因为Blackcoin的交易基本上与比特币相同,非常便宜,无法验证等。这在Qtum早期就成了问题。 基本上我们正在进行一些测试,看看如果我们将大量慢速合同事务塞入一个块中,如果网络能够处理它,会发生什么。 网络实际上确实处理了它,但是这个网站却没有。 基本上,创建一个块需要很长的时间,在该块已满并且具有有效的证明UTXO的时候,它将不再有效。 另外,在这段时间内,放样造成100%的CPU使用率,基本上是对相同事务进行无限循环的重新处理。

我们通过登陆一个显而易见的想法解决了一些问题,即每次进行每次交易都不会完全重新处理每次交易。 这很容易。 但是,我们发现它严重限制了交易吞吐量,并增加了“过期”股份的比例。 即可能已经制作好的PoS块,但是这个制作人花费了太多的时间创建,所以钱包所有者错过了赌注奖励并且“错过了一个块”。 这不仅影响他们的个人奖励,而且会对整个网络的整体安全产生重大影响。 人们可以制作交易,并在不幸的时间播出,基本上迫使人们放错地块。

这是一个严重的问题,当我们找到解决方案时,它大概在2周左右就严重地让我们担心了。 基本上,所有明显的解决方案都严重限制了交易吞吐量。 然后灯泡熄灭,同时深入探究PoSv3的工作原理(我想这大概是我写博客上发布的PoSv3文章的时候,它最初是作为内部开发人员的参考文档形成的),我们终于达到了使用“前瞻性放样”的想法。 这不是一个容易的改变,但它也不是一件会改变共识模式或以其他方式对交易吞吐量或安全性作出妥协的事情。

因此,对于那些没有阅读我严格技术性的PoSv3文章的人来说,快速回顾一下,基本上,当您尝试创建PoS块时,您遍历所有硬币,查看UTXO是否符合特定条件,然后以特定的方式在块中使用它以创建一个有效的PoS块。 为了安全起见,一个特定的PoS块是有效的,并不关心该块中的事务是什么。 如果那确实很重要,那么人们可以通过不同的交易排序等来进行迭代,以便挖掘类似于工作证明的块。 PoS块的时间要求与工作证明实现相比相当严格。 基本上你可以创建一个有效的PoS块,它将在16秒后(或更少)过期。 在那16秒之后,你的用于创建PoS块的UTXO不再有效,你需要再次检查它们。

现在,也许你会看到我要去的地方。 前瞻性的赌注涉及以下基本的变化,以了解如何实际创建积木:

  • 它通过UTXOs进行检查,以便在生成块或验证任何事务之前首先进行放样。 这样,当你甚至没有有效的PoS块时,你不会浪费时间处理事务。 这个很明显
  • 现在有一个软硬限制的时间限制,只要持有者花费在一个块上的处理交易。 软限期逼近时,它停止处理合约交易。 当硬限制接近时,它将停止处理所有事务,并且认为该块将尽可能满。
  • 不是只检查现在有效的块,而是检查现在有效的块,并在将来达到120秒。

最后一点是重要的一部分。 前两部分提供了一个可行的解决方案,但严重影响了交易吞吐量,只能在不到16秒的时间内完成处理。 尽管今天没有任何块需要16秒才能验证,但是您必须记住,该笔者仍然可能遭受线程切换,CPU速度较慢等。因此,处理事务的时间越多越好。 回到第一次实现时,实际上有一个特定的事务需要30秒来处理(并且达到阻止气体限制),这是由于指数复杂性错误,所以这也是更重要的,但这种方法对于可靠性和吞吐量。

基本上,先行者的核心特征在于,如果当前的钱包具有任何可以创建PoS块的UTXO,它将检查接下来的120秒(在16秒时隙中)。 在某些情况下,它可能会在64秒内看到它。 所以,它用64秒的时间准备块来处理事务处理等等,然后当网络将它识别为一个有效的块时,这个角色就会广播它。

最后,与Blackcoin中使用的老版本相比,我们做了很多优化。 因此,为了将它整理为一个易于理解的清单,这是对我们所做的工作的简要总结,以确保Qtum的作者是最有效的作者:

  • 只有在钱包中的UTXO可以创建PoS块时才处理交易
  • 使用lookahead,以便更长时间的睡眠是可能的
  • 已经强制实施时间限制,以确保错过的风险显着减少
  • Qtum不使用txindex数据库,而是从磁盘读取完整的数据块数据(以及在共识级别验证股权),而是使用速度更快,更优化的UTXO集和“chainstate”数据库,其中只包含块头和一些元数据-数据。
  • Qtum缓存用于确定UTXO是否可以放样的数据。 这意味着需要从磁盘中读取的数据少得多。
  • 由于采用先行模式,可能会让休眠者花费更多的时间休眠,这可能会让您的电脑处于闲置的低功耗模式

我们的实施与原始版本相比有了很大的改进,但仍有一些可行的方法。 目前尚未完成的一件大事是,在创建预测PoS块之后,即使有时间添加交易,也不会再添加任何交易。 这绝对是可行的,但由于比特币区块创建代码的结构有点噩梦。 我们总是接受拉请求,尽管如果这听起来有趣的人:)


https://zhuanlan.zhihu.com/p/26106511

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值