LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资讯 > 手握近百万比特币,揭秘巨鲸Coinbase是如何管理它们的

手握近百万比特币,揭秘巨鲸Coinbase是如何管理它们的

2020-03-02 巴比特 来源:火星财经


原文标题:《手握近百万 BTC,揭秘巨鲸 Coinbase 是如何管理它们的》(Reliable fee-less Bitcoin transactions in Custody with Child-Pays-for-Parent)
撰文: Andrei Anisimov,Coinbase Custody 工程经理
编译:洒脱喜

根据 chain.info 统计的数据显示,当前由 Coinbase 管理的比特币资产已达到了 970,294.77 BTC (价值约 85 亿美元),而其中有大部分资产是由 Coinbase Custody 在负责保管,而巨额的用户资金,必然要配备最高级别的保管措施及管理方式,因为安全性对于大型机构和高净值个人而言,是他们愿意将大量资产托管给服务商的主要原因。

而在这篇文章中,Coinbase Custody 的工程经理 Andrei Anisimov 介绍了该公司如何使用比特币「父子支付」(Child-Pays-For-Parent)技术来管理他们的钱包。

以下为译文:

安全性是所有托管技术的主要内容,而客户则主要通过可靠性和便利性来判断我们的产品。我们的用户经常会执行一些高价值、高实效性的提款交易,然后期望在区块链的交易确认方面不会有延迟,并且有干净可预测的金额可以到达目的地地址(也就是说,不会从金额中扣除任何费用)。

幸运的是,比特币的先进技术「父子支付」(CPFP)能够帮助我们实现以上的所有要求,即:零费用交易、可靠的确认时间,同时保持安全的冷存储基本属性(每个私钥只严格使用一次)。

比特币费用和冷存储

通常来说,提交给比特币网络的每一笔交易,都需要有一笔支付给矿工的费用,然后矿工会处理该交易,并将其纳入一个区块当中。平均而言,比特币网络每 10 分钟会产生一个区块。当所有待处理交易的大小超过区块大小限制(1MB)时,矿工将优先考虑具有高手续费的交易,同时将低费用交易推迟到下一个区块。这样的过程可能会重复多次,从而导致交易无限期地推迟(直至网络堵塞的情况消除)。

如果你在 2017 年-2018 年进行过比特币交易,你可能还记得,在价格波动剧烈期,以及其它重要事件高峰期间,比特币交易经常会出现数小时甚至数天的延迟。在这段时间里,为了确保交易不被延迟,而支付超 100 倍正常交易费用的情况并不少见。下图显示了比特币费用的波动情况。

图:比特币交易费用历史数据,来自https://jochen-hoenicke.de/queue/#0,all

在 Coinbase Custody,我们意识到了这一障碍,并尝试了一些解决方案,以在客户最需要的时候为他们提供优势。一个显而易见的解决方案,是在广播交易之前,立即计算交易费用,知道当前的网络状况,使得我们能够预测最佳的费用。

不幸的是,冷存储的安全要求,使得在广播之前是很难估算费用的。

冷存储遇到的挑战

冷存储安全模型,要求事先完全了解完整的交易有效载荷(包括金额和目的地),以防止在密钥恢复过程启动后,对有效载荷进行任何的更改。

另一方面,由于交易费用被编码在有效载荷中,因此这意味着必须提早在广播交易前计算费用。如果在该时间间隔内,网络突然变得拥挤,则计算出的费用可能不足以及时确认交易。

父子支付(CPFP)解决方案

比特币 UTXO 模型的一个有趣的特性是,交易是可以捆绑在一起的,然后矿工对费用进行整体评估。例如,如果一项(子项)交易花费了另一项(父项)交易的输出,则子项交易可以同时为这两项交易支付费用,而矿工是别无选择的,如果他们想从子项交易中收取超额费用,他们只能纳入父项交易。这种方法,通常被称为「父子支付」(CPFP)方案。

Coinbase 的客户平台使用该方案来加速提款已经有很长一段时间了,你可以在博客文章中了解到更多的信息,而 Custody 所面临的独特挑战,迫使我们重新考虑该方法,并由此提出了不同的设计。

在 Custody 托管产品中,我们使用「父子支付」(CPFP)技术将费用估算移动到广播之前。此外,我们使用特殊的加油站服务来支付交易费用。逐步的方法如下:

当一笔提款从冷钱包地址发起时,我们会进行初始费用估算,并使用加油站服务向该地址发送 10 倍的估算费用;除了目的地和找零输出之外,当构建取款(父)交易时,我们添加一个输出,将预充的 10 倍费用移动到一个特殊的「费用」地址(该地址为每次取款生成,并且仅用一次)。我们把这个输出称为「CPFP link」。一旦在密钥恢复仪式结束以及广播前签署了主交易,费用将根据当前网络条件重新估算。费用地址会生成一笔子交易,它会花费 CPFP link 输出,支付两笔交易的费用,并将剩余的预充费用发送回加油站。

举例说明

让我们通过一个具体的例子来更好地理解这个解决方案的机制。请注意,为了简单起见,这里省略了一些小细节。

假设我们有一个客户,他账户里的余额是 15 BTC,然后他想从 Custody 账户中提取 12 BTC 到一个外部比特币地址。以下是将要发生的步骤(请注意,聪是比特币中最小的单位,它等于 0.00000001 BTC):

Custody 估计完成这笔交易的费用为 10000 聪;加油站将 10 倍估算费用的 10 万聪发送到冷钱包地址(存放待提取资金的地址);Custody 生成的取款交易有两个主要输出:12 BTC 到目的地地址,3 BTC「找零」返回冷钱包;我们添加了第三个「CPFP-link」输出,将 10 万聪移动到新生成的费用地址(这笔金额稍后将用于支付费用);「密钥恢复」仪式开始。其结果是,一个已签名的交易有效载荷准备好向网络广播;就在广播之前,我们再次估算下费用,事实证明,网络突然变得拥挤,现在的费用是最初估算费用的 2 倍(即 2 万聪);我们创建一笔子交易,该交易花费「CPFP link」输出,支付 2 万聪费用,并将剩余的 8 万聪返回到加油站;我们把这两笔交易广播到网络;

在这之后,目的地地址会接收到完整的 12 BTC 金额。而从用户的角度来看,费用和子交易都是不存在的,它们被抽象了出来,由此实现了可靠的零费用比特币取款。

来源链接:blog.coinbase.com

本文来源:巴比特
原文标题:手握近百万比特币,揭秘巨鲸Coinbase是如何管理它们的

—-

编译者/作者:巴比特

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...