Coinbase Pro | 关于比特币交易批处理的思考

布鲁克·米勒(Brock Miller) 今年早些时候,Coinbase 推出了比特币交易批处理 。自发布以来,我们已分批100%的Coinbase Consumer和Coinbase Pro客户发送对比特币的请求。 在这段时间里,我们已经实现了75.2%的交易费用节省,并将所有这些节省都转嫁给了我们的客户。我们还将每日交易量减少了95%。在此博客文章中,我们将逐步介绍事务批处理的工作原理,并详细研究其影响。

批量付款如何使我们的客户,内部运营和整个BTC网络受益

布鲁克·米勒(Brock Miller)

今年早些时候,Coinbase 推出了BTC交易批处理 。自发布以来,我们已分批100%的Coinbase Consumer和Coinbase Pro客户发送对BTC的请求。 在这段时间里,我们已经实现了75.2%的交易费用节省,并将所有这些节省都转嫁给了我们的客户。我们还将每日交易量减少了95%。在此博客文章中,我们将逐步介绍事务批处理的工作原理,并详细研究其影响。

事务批处理的工作原理是将许多客户发送的请求打包为一个事务,而不是为每个请求创建一个新的事务。这样,我们可以分摊多个发送请求之间的事务处理开销,从而减少了每个请求的有效事务处理费用。这具有额外的好处,因为每个新区块的可用空间都有限,并且减少了批处理的数量,这使我们能够在较小的空间容纳更多的付款,从而降低了整个BTC网络的负担。

一个简化的例子

让我们看一个简单的例子。BTC交易具有3个主要组成部分:

  • 输入:在交易中花费的硬币。
  • 输出:正在付款,包括收款人的地址和金额。
  • 标头:每笔交易中都包含标准字段,例如版本信息。

BTC中的交易费用实际上是原始交易的虚拟字节大小(或权重单位)的函数,其中较大的大小通常需要支付较大的费用(基于当前的网络费用费率)。出于本示例的目的,我们将虚拟字节(vbytes)视为标准字节(请参阅此处以了解有关虚拟字节和SegWit引入的更改的更多信息)。

上面三个组件中的每一个都有特定的大小,因此以自己的方式为整个交易规模做出了贡献。假设完全是本机SegWit事务,这三个组件的大小大致如下:

  • 每个输入67字节
  • 每个输出31 vbytes
  • 标头为11 vbytes

了解了这一点之后,让我们比较两种方案,一种是带批处理的,另一种是不带批处理的。 (请注意,每个场景中,计算总费用,我们将承担10个网络费率satoshis每vbyte。)

方案1:无批处理

在这种情况下,我们有三个单独的事务。每个事务都有一个输入和两个输出。第一个输出对应于客户的特定发送请求(地址和金额),而第二个输出则将任何多余的更改发送回Coinbase。 (请注意,需要更改输出,因为花费的输入金额与发送的输出金额不同,并且通常还剩一些资金。)

上面的每个事务的总大小为140 vbytes。使用每vbyte 10聪的收费率,我们可以计算出每人的交易费用为1400聪。

方案2:批处理

在这种情况下,我们将所有这三个请求批处理到一个事务中。该事务将仍然只有一个输入,但是,因为我们正在将请求分批处理,所以现在有四个输出。前三个输出对应于我们每个客户的发送请求,而最后一个输出是剩余资金的找零输出。

在上面的批量交易示例中,我们可以看到我们的总大小为202 vbytes,总费用为2020 satoshis。这相当于每个发送请求的有效费用为673聪,或费用减少了52%!随着我们一起分批付款,节省的费用变得更大。

反思1:降低消费者交易费用75.2%

如前所述,自3月12日启动以来,我们已分批100%的Consumer和Pro客户提款。在这段时间内,我们实现了75.2%的交易费用节省,并将其中的100%直接转嫁给了客户。

在下面的图表中,您可以查看过去三个月中针对单个发送请求提供给Coinbase Consumer的BTC交易费用估算(以satoshis为单位)。如您所见,不仅费用大幅减少,而且在活动繁忙期间(例如5月中旬费用增加)波动性也较小。

反思2:每天产生的交易减少95%

从批处理中我们还可以看到,每天产生的总交易数量大大减少了。现在,我们不再为发送请求生成交易,而是每天为发送请求有效地生成恒定数量的交易,而这取决于我们决定分批付款的频率(今天至少每分钟发生一次)。下图通过显示在发布时间的几周内每天广播的独特交易来显示此更改的幅度。

从内部来讲,这对我们来说是一个胜利,因为这意味着我们的服务正在做更少的工作来达到相同的最终结果。这一变化也对整个BTC网络产生了积极影响。通过在较小的空间(更少的事务和更少的块空间)中发出相同数量的发送请求,我们可以提高效率,并减少对网络的总体影响。保守的估计表明,这导致整个网络上每天确认交易的数量减少了10-15%。 减少交易数量对于整个网络都是有益的,并且应该有助于降低所有BTC用户的费用。

反思3:内部警报减少78%

最后,我们还看到了内部运营方面的重大收获。当工程师从事为企业提供关键服务的工作时,我们会不断监控我们的系统,并在服务开始超出正常阈值时提醒工程师。BTC的一个关键指标是发送请求得到处理并作为交易提交到网络所花费的时间。您可以将其视为单击Coinbase Consumer上的“立即发送”按钮与实际在网络上看到交易时间之间的延迟。

在批处理之前,由于BTC网络上活动的增加以及矿工开采区块之间的偶尔延迟,有时这种延迟有时会增加。由于热钱包的工作方式,我们几乎总是在等待前一次交易的更改输出以得到确认,以便我们可以使用这些资金来满足另一个发送请求。当我们为每个请求创建一个单独的事务时,在任何给定时间,这些更改输出都有更多待处理。此问题有时可能会导致后续发送请求的延迟。现在,我们创建的事务减少了95%,等待的变更输出也减少了,这个问题几乎完全消失了。

下图显示了过去6个月内我们的待命团队的相关内部BTC警报,以展示这对我们有多大影响。这一次,我们发现与BTC请求处理和延迟相关的警报数量减少了约78%。

结论

交易批处理是一项非常成功的功能,它使Coinbase客户,内部运营以及整个BTC网络受益。如果您喜欢在充满乐趣,精力充沛的环境中工作,并且想要应对像这样的挑战,请在我们的职业页面上查看我们的空缺职位。我们很乐意听取您的意见。

Coinbase Pro | 关于<a href=BTC交易批处理的思考"/>


关于BTC交易批处理的思考最初发表在Mein上的The Coinbase博客上,人们通过突出并响应这个故事来继续对话。

本文由 五星财经 作者:五星财经 发表,其版权均为 五星财经 所有,文章内容系作者个人观点,不代表 五星财经 对观点赞同或支持。如需转载,请注明文章来源。

0

发表评论