Bulletproofs++: 迈向多种资产类型完全不可链接交易的一步
Blockstream Research

Bulletproofs++: 迈向多种资产类型完全不可链接交易的一步

Liam Eagen

隐私和安全是相辅相成的,是比特币的用户价值属性。在 Blockstream,我们一直走在开发一系列提高比特币用户隐私的方法的最前沿,从Green和Jade钱包的最佳实践到开发 MuSig2保密交易 (CT)。虽然虚构比特币交易提供了有限的隐私,但保密交易通过保护交易金额取得了显著进步。然而,完全匿名仍然遥不可及,我们在此介绍一些新的应用研究路径,以实现这一隐私目标。

自比特币诞生以来,能够屏蔽金额和交易图表的完全不可链接交易越来越受到人们的关注。虽然 Monero 和 ZCash 等加密货币通过环形签名和 SNARK 实现了更高的隐私性,但它们都没有实现支持多种资产类型的完全匿名性。在实现完全匿名性之前,关键的一步是推进 Bulletproofs++ (BP++)。这一改进旨在提高保密交易的效率,同时保留其现有的多资产支持,而无需可信设置。

Bulletproofs++ 是一种全新的、更高效的基于离散日志的签名执行系统,使我们能够提高保密交易的空间效率。保密交易使用户能够保留其交易金额的隐私,确保交易中的资金净流量为零。为防止秘密膨胀和 "负 "流出,保密交易协议使用范围证明来证明每笔输出金额都在正范围内。

早期隐私保护协议 保密交易

目前在 Liquid 上部署的 CT 协议使用 Borromean Ring 签名进行范围证明,并使用机密资产支持多种资产类型。这是最早部署的隐私保护交易协议之一,其源头可直接追溯到格雷格-麦克斯韦(Greg Maxwell)最早的零知识证明和比特币工作。从那时起,零知识证明经历了前所未有的发展。Blockstream 继续在更广泛的零知识证明研究生态系统中发挥着积极作用,尤其是在防弹技术(BP)的开发方面。BP是一项具有里程碑意义的构建,因为它首次在没有可信设置的情况下实现了具体的小规模证明。

Bulletproofs++: 提高紧凑性和效率

对于任何区块链应用来说,廉价存储、交易和验证交易的能力都是至关重要的。当然,我们希望用于私人交易的证明系统尽可能小,验证效率尽可能高,以限制区块链上存储的数据量。BP++ 的 64 位范围证明大小仅为 416 字节,比 BP 小 39%,比当前的 Liquid 范围证明小 10 倍。证明大小的减少将降低交易费用和节点存储要求。在普通商品笔记本电脑上,BP++ 范围证明的验证和证明速度比 BP 快约四倍,这使得 BP++ 在区块链验证方面更加高效。每个 BP++ 范围证明的大小约为 7 个 Schnorr 签名的大小,可以在验证 20 个 Schnorr 签名所需的时间内完成验证。通过 BP++,我们将把 BP 的所有改进和这些额外的改进带到液体中。

在当前的液体 CT 和 BP 范围证明中,我们通过证明对数值位数的了解来证明数值位于某个范围内。例如,要证明一个值位于 [0, 2^64 -1] 范围内,我们需要证明对 64 位的了解。Bulletproofs++ 允许我们使用更大的基数,从而减少了表示一个数字所需的位数。例如,[0, 2^64 - 1] 中的数值只需 16 个十六进制数字即可表示,比比特数减少了 4 倍。这要归功于一种名为倒数参数的新技术,它可以实现查找参数。倒数参数实例化为查找时,也称为对数导数查找参数。

多重资产支持与互惠论证

对等参数是 Bulletproofs++ 协议中使用的一种技术,用于在同一交易中支持多种资产。从本质上讲,它允许不同类型的代币参与交易,同时保持所有输入和输出类型的私密性。我们可以用零知识证明中的表格来解释这一概念。

我们可以把倒数论证看作是在零知识证明中使用表的一种方法;给定一个索引和一个金额,我们就可以从该索引处的表中添加或减去该金额。交易的每个输入和每个输出都有一个类型和一个金额。为了检查每种类型的所有金额是否平衡,我们将检查每个输入,并将金额加到类型所给索引处的表中。然后,我们再查看每个输出,并从表中删除其类型所给索引处的金额。只有当表中所有条目都为零时,交易才会平衡。

用伪代码表示

# Start with empty table
T = {}

# Add all the inputs
for (v, t) in I:
    T[t] += v

# Remove all the outputs
for (v, t) in O:
    T[t] -= v

# Check all the amounts in the table are zero
for (t, v) = T.items():
    assert(v == 0)

Bulletproofs++ 实现

目前,我们已将两个 PR 中的第一个合并到 libsecp256k1zkp 中,以实现规范参数。它建立在 BP 的内积参数之上,是 BP++ 体积小的底层原型。接下来,我们将合并支持范围证明的第二个 PR。之后,我们将实现对多重资产和必要证明的支持,以便私下将现有资产迁移到 BP++ 资产格式。通过 libsecp256k1zkp 实现,我们可以利用 libsecp 的一流性能,并轻松部署到 Liquid 上。

从长远来看,利用 BP++ 的新灵活性和 Blockstream 的一些研究方向,我们看到了在 Liquid 和潜在的比特币上实现稳健的私有交易的途径,这也可以提供交易和屏蔽金额(以及 Liquid 中的屏蔽资产类型)之间的不可链接性。

不可链接交易协议处于零知识证明研究的最前沿,尤其是在没有可信设置的情况下。BP++ 将成为 Liquid 多资产不可链接交易协议的保密核心。

除了 CT 核心将使用在 BP++ 中开发的技术外,不可链接事务还需要证明更复杂的语句。这一领域仍在积极研究之中。

隐私一直是比特币精神的重要组成部分;金钱需要可替代性,而可替代性需要隐私。我们的目标是以 BP++ 作为第一步,将这种隐私性引入比特币生态系统。以 Simplicity 为 BP++ 实现的目标将允许任何支持 Simplicity 的项目与 BP++ 集成和互操作。

要了解更多信息,请阅读最新版本的 "Bulletproofs++: 通过互惠集合成员论证实现下一代保密交易 "论文,该论文目前托管在 IACR eprint 档案库中并可免费获取,您还可以在 GitHub 上查看我们正在进行的实施工作。

If you have specific preferences, please, mark the topic(s) you would like to read: