mt logoMyToken
总市值:
0%
恐慌指数:
0%
币种:--
交易所 --
ETH Gas:--
EN
USD
APP
Ap Store QR Code

Scan Download

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

收藏
分享

写在前面:

Utreexo是由闪电网络(LN)论文作者之一Tadge Dryja提出的,它是一种适用于比特币的哈希累加器方案,目前该方案主要是由MIT数字货币计划在负责资助开发,而本文作者Calvin Kim则是该项目的活跃开发者之一,在这篇文章中,他简单解释了Utreexo的原理,并总结了该方案的4大优点以及2个负面影响。

5分钟了解MIT比特币改进方案Utreexo,手机运行全节点不再是梦 (图片来自:tuchong.com)

先说说优点:
  1. 可实现几KB的全节点,且在硬盘驱动器(hdd)的同步速度可与固态硬盘(ssd)一样快;
  2. 允许初始区块下载的并行化处理;
  3. 通过允许共识独立于数据库实现,来增强比特币的安全性;
  4. 不需要分叉即可将Utreexo带入比特币;
然后是缺点:
  1. 初始区块下载的带宽使用量增加了20%左右;
  2. Utreexo存档节点的附加存储要求;

Utreexo的运作原理

快速概述: 在Utreexo中,一个全节点能够为每个区块只保留一个哈希,而传统的修剪版全节点则必须为每个区块保留所有的UTXO

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

一棵拥有8个子叶的默克尔树看起来会是这样的:

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

图1:典型的默克尔树

该树中的每个数字都代表一个哈希。

比特币中,最下面一行的所有数字都是交易ID(TXID),00与01的连接哈希结果就是08,13则是10与11的连接哈希结果。

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

目前,要运行一个比特币全节点,你必须存储所有存在的UTXO,而在Utreexo中,你运行的全节点只需要存储UTXO的根。然后这棵树看起来会是这样的:

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

图2:仅存储根数据的Utreexo树,注意,所以其它的哈希都被删除了

从00到13的所有其它哈希在完成验证后被丢弃了,只有14这个根被保留了下来。

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

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

图3:用于验证的树,注意如何从该树计算出根

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

Utreexo稍微会复杂一点,它的工作方式与此示例有所不同,但这是其概念的一个简单版介绍,其解释了如何只存储一个哈希(而不是所有的哈希),但仍然是一个全节点。

Utreexo能够带来的优点

优点1、可实现几千字节的全节点,且在硬盘驱动器(hdd)的同步速度可与固态硬盘(ssd)一样快

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

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

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

图4 :UTXO计数,排除OP_RETURN

因此,修剪节点的存储需求将增加,从而增加比特币全节点的最低存储需求。而Utreexo通过允许用户修剪掉不属于他们的UTXO,来阻止这种情况。

另外,由于致密状态节点(或CSN)可以在少于千字节的大小内表示整个Utreexo状态,因此无需在初始区块下载期间查询磁盘。这使得初始区块下载仅发生在RAM上,从而让hdd节点能够像ssd节点一样快速同步。

优点2、允许并行化下载初始区块

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

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

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

libconsensus 项目旨在将共识代码从Bitcoin Core 中分离出来,以便:
  1. 可以更改非共识代码,而不必担心会破坏共识;
  2. 允许在不同的比特币实现中使用一种共识API;
但由于很难将数据库(leveldb)与共识代码分开,因此它最终被废弃掉了。

这是一个非常重要的问题,因为在2013年,Bitcoin Core从Berkeley DB转移到了levelDB,并遭遇了一次意外的临时硬分叉,一次意外的临时软分叉以及一次硬分叉(BIP50)。

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

而使用Utreexo之后,你可以根据Utreexo树验证传入交易或区块,而不需要数据库。这通过使用随附的证明检查传入交易正在花费的UTXO的存在性。

优点4、部署不需要分叉

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

Utreexo会带来的缺点

缺点1:带宽需求会额外增加20%

假设情况下,有人生活在一个非常偏远、且带宽非常小的地区,而其使用了一台强大的计算机来同步一个比特币节点,那么Utreexo带来的不是帮助,而是一种伤害。前面提到的证明必须与TXO一起发送,这导致从对等节点下载的数据会多出20%左右。

从这个意义上讲,Utreexo可被看作是带宽和存储需求之间的一种权衡。如果你认为存储价格(hdd,ssd)与互联网速度(及成本)相比是更大的障碍,那么Utreexo可以有助于去中心化。而如果你认为互联网速度是一个更大的障碍,那么Utreexo会有损去中心化。

缺点2 :Utreexo存档节点的附加存储要求

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

这种节点会存储:

  1. 从创始区块开始的所有区块;
  2. 从创始区块开始的所有证明;
因为#2的原因,这将给存档节点带来额外的存储负担。如果一个Utreexo存档节点存储每个区块的所有证明,这将是大约100%的额外数据存储。

然而,这可以通过不为每个区块存储证明而得到改善。比方说可以为奇数区块存储证明,如果节点从偶数区块中请求证明,则进行“重同步”。例如,如果请求区块566的证明,则Utreexo存档节点将:

  1. 检索区块566;
  2. 检索在区块565处形成的Utreexo树;
  3. 将来自区块566的交易应用于Utreexo树,然后重新生成证明;
  4. 将生成的证明发送给请求它的节点;
然后,这可以进一步进行优化,比如每10个区块存储证明,依此类推,从而进一步减轻了存储负担。

最终,用户可以在cpu使用和存储之间进行权衡取舍。如果用户可以访问廉价的数据存储,他们可以选择存储所有区块的所有证明。如果用户的存储空间有限,但其有空闲的CPU时间,则可以选择减少存储量并进行更多计算。

结论

总结来说,Utreexo和其他方案一样,代表了权衡。我相信,Utreexo将通过让用户选择最适合自己的折衷方案,从而有助于让比特币实现更高程度的去中心化。

目前开发者们正在积极开发Utreexo(github.com/mit-dci/utreexo),对于任何贡献,我们都将不胜感激:)

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

脚注:

1.在Utreexo当中,你有时必须保留多个根,不同区块高度保留的根数量是不同的。在 Utreexo论文 以及MIT比特币博览会 Utreexo简介视频 中,有关于这个问题更详细的解释。

原文:https://medium.com/@kcalvinalvinn/eli5-utreexo-a-scaling-solution-9531aee3d7ba 作者:Calvin Kim 编译:洒脱喜 稿源(译):巴比特资讯(http://www.8btc.com/article/582470)

免责声明:本文版权归原作者所有,不代表MyToken(www.mytokencap.com)观点和立场;如有关于内容、版权等问题,请与我们联系。