主页 > imtoken手机版下载 > 5分钟了解MIT比特币改进程序Utreexo,手机跑全节点不再是梦

5分钟了解MIT比特币改进程序Utreexo,手机跑全节点不再是梦

imtoken手机版下载 2023-05-20 06:32:19

写在前面:

Utreexo 是由闪电网络 (LN) 论文的作者之一 Tadge Dryja 提出的。 它是一种适用于比特币的哈希累加器方案。 目前,该计划主要由麻省理工学院数字货币项目资助。 本文作者 Calin Kim 是该项目的活跃开发者之一。 在这篇文章中,他简单解释了Utreexo的原理,并总结了该方案的4个优点和2个缺点。

5分钟了解MIT比特币改进方案Utreexo,手机运行全节点不再是梦

(图片来自:图冲网)

先说优点:

实现几 KB 的完整节点并在硬盘驱动器 (hdd) 上同步与固态驱动器 (ssd) 一样快; 允许并行化初始块下载; 通过允许独立于数据库安全实施共识来增强比特币; Utreexo无需分叉即可带入比特币;

然后是缺点:

初始块下载的带宽使用量增加约 20%; Utreexo 存档节点的额外存储要求; Utreexo 的工作原理

快速概览:在 Utreexo 中,一个全节点只能保留每个区块的一个哈希值,而传统的剪枝全节点必须保留每个区块的所有 UTXO。

为了理解 Utreexo,我们首先需要了解哈希树是如何工作的。 这里要研究的是默克尔树,也就是比特币使用的哈希树。

一棵有 8 个子叶的 Merkle 树看起来像这样:

比特币亏损会超过本金吗_比特币数据量超过600GB_比特币最新行情数据

5分钟了解MIT比特币改进方案Utreexo,手机运行全节点不再是梦

图 1:典型的 Merkle 树

这棵树中的每个数字代表一个散列。

在比特币中,最下面一行的数字都是交易ID(TXID),00和01连接的哈希结果是08比特币数据量超过600GB,13是10和11连接的哈希结果。

目前在比特币中,默克尔树用于在区块头中生成默克尔根。 Utreexo 采用 Merkle 树的概念并将其应用于 UTXO。 需要注意的是,Utreexo 不会替换区块头中的 Merkle 树。

目前,要运行比特币全节点,您必须存储所有存在的 UTXO,而在 Utreexo 中比特币数据量超过600GB,您运行的全节点只需要存储 UTXO 的根。 然后树看起来像这样:

5分钟了解MIT比特币改进方案Utreexo,手机运行全节点不再是梦

图 2:只存储根数据的 Utreexo 树,注意,所以其他哈希值都被移除了

从 00 到 13 的所有其他哈希在验证后都被丢弃,只保留根 14。

如果用户想要花费 UTXO 07,他们必须向你证明交易存在。 这将通过提供 (06, 07, 10, 12) 来完成。 然后验证器将使用接收到的散列来创建一个单独的树:

比特币最新行情数据_比特币亏损会超过本金吗_比特币数据量超过600GB

5分钟了解MIT比特币改进方案Utreexo,手机运行全节点不再是梦

图 3:用于验证的树,请注意如何从这棵树计算根

空位 11、13 和 14 可以通过验证节点来计算,如果这棵树的根是 14,与我们存储的根匹配,我们可以说交易存在。

Utreexo 稍微复杂一点,它的工作方式与这个例子略有不同,但它是对概念的简化介绍,它解释了如何只存储一个哈希(而不是所有哈希),但仍然是一个完整的节点。

Utreexo可以带来的优势 优势 1. 可以实现几千字节的全节点,硬盘驱动器(hdd)的同步速度可以和固态硬盘(ssd)一样快

目前,有两种类型的全节点:归档(Archial)和修剪(pruned)。 在经过修剪的全节点中,用户只保留未花费的交易输出(也称为 UTXO)。 而 Utreexo 允许另一种称为紧凑状态节点(或 CSN)的全节点模式,我们只在其中存储根和钱包信息。 这使得一个全节点的数据可以小于1KB,而目前比特币使用的全节点,用户需要存储的数据都是以GB为单位来衡量的。

随着比特币采用率的提高,仅存储属于用户的 UTXO 的能力变得越来越重要。 由于用户至少需要一个 UTXO(出于隐私原因需要更多),这将导致 UTXO 的增加。 从下表中,我们可以清楚地看到 UTXO 经历的增长。

5分钟了解MIT比特币改进方案Utreexo,手机运行全节点不再是梦

图 4:UTXO 计数,不包括 OP_RETURN

因此,对剪枝节点的存储要求会增加,从而提高比特币全节点的最低存储要求。 Utreexo 通过允许用户修剪不属于他们的 UTXO 来防止这种情况。

比特币最新行情数据_比特币亏损会超过本金吗_比特币数据量超过600GB

此外,由于紧凑状态节点(或 CSN)可以用不到 1 KB 的大小表示整个 Utreexo 状态,因此在初始块下载期间无需查询磁盘。 这使得初始块下载仅在 RAM 上发生,从而允许 hdd 节点同步速度与 ssd 节点一样快。

优势 2. 允许并行化初始块下载

UTXO快照是指保存特定区块高度的所有UTXO状态。 一个潜在的应用是允许从快照高度同步区块链的项目。 快照的主要障碍是它们的大小相当大,目前约为 5GB,并且它们的大小将随着“优势 1”中状态的增长而增长。 对于 Utreexo,最坏情况下可能小于 1 KB(最好情况下大约 100 字节)。 使用 Utreexo 进行 UTXO 快照非常简单。 该项目已经实现了 Utreexo,并通过在区块头中包含 Utreexo 树根来使用它来保存区块链状态。

由于快照的实施已经变得非常经济,因此在每个区块高度都有一个快照变得可行。 这样,我们就可以并行的完成区块链同步的实现,也就是一台计算机(或CPU核)可以同步从块高0到300,000,而另一台计算机可以同步从块高300,001到600,000。 随着CPU的优化和GPGPU的兴起,这种异步区块同步将有助于进一步减少启动一个比特币全节点所需的时间。

优势3. Utreexo可以增强比特币的安全性(允许将共识代码与数据库分离)

该项目旨在将共识代码与比特币核心分开,以便:

可以更改非共识代码而不用担心破坏共识; 允许在不同的比特币实现中使用一个共识 API;

但由于难以将数据库(leeldb)与共识代码分离,最终被废弃。

这是一个非常重要的问题,因为在2013年,Bitcoin Core从Berkeley DB迁移到leelDB,遭遇了意想不到的临时硬分叉、意想不到的临时软分叉和硬分叉(BIP50)。

目前,比特币的共识依赖于 leelDB 才能正常运行,这意味着如果 leelDB 不能正常运行,则可能存在使用另一个数据库的分叉。

比特币最新行情数据_比特币数据量超过600GB_比特币亏损会超过本金吗

使用 Utreexo,您可以根据 Utreexo 树验证传入的交易或块,而无需数据库。 这通过使用随附的证明来检查传入交易花费的 UTXO 是否存在。

优势四、部署不需要fork

在减小区块链的大小方面,Boneh 等人提出的提案。 确实比Utreexo更有效。 但是,必须使用软分叉来实现此解决方案。 对于像比特币这样的保守系统,即使是软分叉也需要非常小心,因此,这些类型的累加器很难应用于比特币。 Utreexo的部署不需要任何分叉,用户只需要通过运行Utreexo节点来选择性地使用Utreexo。

Utreexo会带来的缺点 缺点一:带宽要求会额外增加20%

假设某人住在非常偏远的地区,带宽很少,他们使用功能强大的计算机同步比特币节点,那么 Utreexo 将无济于事,反而是一种伤害。 上述证明必须与 TXO 一起发送,这导致从对等方下载的数据增加了大约 20%。

从这个意义上说,Utreexo 可以看作是带宽和存储需求之间的权衡。 如果您认为存储价格(hdd、ssd)是比互联网速度(和成本)更大的障碍,那么 Utreexo 可以帮助实现去中心化。 如果你认为互联网速度是一个更大的障碍,那么 Utreexo 会损害去中心化。

缺点 2:Utreexo 存档节点的额外存储要求

所谓Utreexo存档节点,是指现有的比特币存档节点,存储了Utreexo节点所需的上述证明。

这样的节点存储:

来自创世块的所有块; 来自创世块的所有证明;

比特币数据量超过600GB_比特币亏损会超过本金吗_比特币最新行情数据

由于#2,这会给存档节点带来额外的存储负担。 如果 Utreexo 存档节点存储每个块的所有证明,这将是大约 100% 的额外数据存储。

然而,这可以通过不为每个块存储证明来改进。 假设可以存储奇数块的证明,如果节点请求偶数块的证明,则“重新同步”。 例如,如果请求区块 566 的证明,Utreexo 存档节点将:

检索块 566; 检索在块 565 形成的 Utreexo 树; 将区块 566 的交易应用于 Utreexo 树,然后重新生成证明; 将生成的证明发送给请求它的节点;

然后可以进一步优化,比如每 10 个块存储一次证明,等等,进一步减轻存储负担。

最终,用户可以在 CPU 使用率和存储空间之间做出权衡。 如果用户可以访问廉价的数据存储,他们可以选择存储所有块的所有证明。 如果用户的存储空间有限,但有空闲的 CPU 时间,他们可能会选择少存储多做计算。

综上所述

总之,与其他解决方案一样,Utreexo 代表了一种权衡。 我相信 Utreexo 将允许用户选择最适合他们的权衡,从而帮助比特币更加去中心化。

目前开发人员正在积极致力于 Utreexo (github.com/mit-dci/utreexo),非常感谢任何贡献:)

非常感谢 Tadge Dryja、Ruben Somsen、Paul Grau 和 Janus Troelsen 审阅本文。

脚注:

1. 在Utreexo中,有时需要保留多个根,不同区块高度保留的根数是不同的。 在 MIT Bitcoin Expo 上有关于这个问题的更详细的解释。

比特币最新行情数据_比特币数据量超过600GB_比特币亏损会超过本金吗