隐私架构
Last updated
Last updated
Aztec 如何保护隐私的概述。
Aztec是以太坊上隐私优先的零知识汇总:这意味着它是唯一从头开始构建的完全保护隐私的第 2 层。
要了解私人交易的范式改变性质以及为什么将隐私直接构建到网络架构中很重要,我们必须首先讨论为什么以太坊不是私有的。
您可能听说过公共分类账这个术语,它由两部分组成:账户和余额。
以太坊上最原始的交易是将以太币从一个账户(地址)发送到另一个账户。网络跟踪这一点的方式是增加一个账户的余额并减少另一个账户的余额——换句话说,ETH 在任何意义上都没有真正“移动”。
让我们详细看一个示例交易:假设我的人 snoopdogg.eth 想向 cozomomedici.eth 发送交易。
下面是事情的经过。Snoop开始有100个ETH,他的账户被扣除了20个ETH。Cozomo以0ETH开始,他的账户被记入20ETH。Snoop的最终账户余额为80ETH。Cozomo的是20ETH。转账完成。
我们可以在 etherscan.io 上看到每个帐户的贷方和借方的表示,并公开跟踪“入”和“出”供所有人查看。这是一个名为 twinkienft.eth(我非常喜欢的名字)的 ENS 的最近交易历史:
您可能想知道:“谁是 twinkienft.eth?” 我不知道,但我可以看到他们所有的交易!如果您访问etherscan.io,您可以看到所有交易都写入区块链。
0x9dae……就在 etherscan.io 的首页!
你可以在这里看到明显的问题。我们不仅可以查看所有账户交易,还可以查看所有金额、资产和交易对手。
这就是公链的威力!由于它们的公共性质,它们非常具有可审计性和可验证性。
但这意味着,如果某人的隐私受到损害,无论是有意还是无意——我们都知道他们的整个交易历史。
破解公共交易图是一项大生意:Chainalysis和Nansen等公司运行复杂的取证分析来关联各种钱包、监控活动,并对谁拥有什么做出概率假设。
想象一下,如果您每次刷信用卡购买羊角面包时,您都会向世界上的每个人展示您的银行对账单。那会是,就像,非常愚蠢,对吧?
这就是今天以太坊的状态。
“嗯,好吧,”我听到你说。“这很容易解决,只需加密账户、余额和所有者。” 呸,白痴!我怎么会这么傻。
除了让我们真正讨论加密帐户的工作原理:
回忆一下之前的账本。使用加密的帐户和交易,它看起来像这样:
有用。
网络将如何检查账目,确保没有双重支出或串通有趣的业务?事实证明,解决这个问题非常困难!
回到我们的商人 Snoop & Cozomo 来帮助我们解决这个问题。如果他们需要进行交易,他们将不得不进行交互,因为网络无法帮助检查他们是否进行了有效的交易。
如果确实如此,那么某个地方的某个人就会知道发生了什么。相反,Snoop 会启动交互:
Snoop 请求 Cozomo 的加密帐户状态
Cozomo 将加密状态发送给 Snoop
Snoop 解密 Cozomo 的状态,确认交易前余额
Snoop 向 Cozomo 发送加密付款
Cozomo 将他更新的加密状态发送给 Snoop
Snoop 解密 Cozomo 的新状态,确认交易后余额(并且 Cozomo 实际上得到了他承诺的 $$)
这种精心制作的舞蹈有严重的缺点:昂贵、耗时,而且一次只能和一个人一起跳舞——双方必须同时在线才能方便。
最糟糕的是,在这场双边对话结束时,任何一方都没有让世界其他地方相信任何事情——他们只是相互验证了他们的一笔交易。
不太好。
但是请注意——如果我们将归因结构颠倒过来会怎样?以太坊默认为账户有余额的账户模型。换句话说,查看帐户,您就会得到余额。
如果我们改为将其构造成说一定数量的钱——用一张纸条描述——有一个所有者呢?查找便条,看看它属于谁。
账户有余额 → 票据有所有者。
这就是比特币的工作原理,它被称为UTXO(未使用的交易输出)。但是忘记术语。将UTXO 视为现金(钞票)。
让我们想一想为什么现金在本质上更安全、更私密——或者更准确地说,比基于账户的系统更安全、更私密。
知道了?它是安全的,因为只有交易现金的双方知道所有权已易手!整个宇宙中的其他所有人都可以被蒙在鼓里。
您可以将现金交易视为对象(票据)所有权的更改,而会计交易是两个帐户状态的更改。
可能是加密笔记的所有权更改是什么样的。
当处理 Aztec 交易时,网络不会进行账户余额更新(增加和减少余额),而是简单地重新分配给定票据的所有权。
为什么这有帮助?好吧,事实证明加密笔记更容易,因为它实际上只需要在上面写两件事:它的价值,以及它的所有者。当它易手时,你潦草地写下旧主人的名字并写下新主人的名字。艾科夸!
那么在一个简单的票据交易中究竟发生了什么?
假设 Snoop 有两张 50 ETH 的钞票,总计 100 ETH,而 Cozomo 有 0 张钞票。
Snoop 的两张 50 ETH 纸币需要销毁,并创建了两张新纸币:一张 80 ETH 的纸币留在 Snoop 手中,一张 20 ETH 的纸币留给它的新主人 Cozomo。
但是,如果必须透露钞票的价值,如何保护隐私呢?
好吧——他们没有!至少不公开。当然,Snoop 和 Cozomo 知道他们交易的价值,就像交换现金一样,但他们不必向世界透露。
为了保护他们的相互隐私,Snoop 使用他知道只有 Cozomo 可以用他的私钥解锁的锁发布交易。这里的比喻有点像把纸条放在一个小锁箱里。当然,他们都知道盒子里有什么(20 ETH),所以 Snoop 必须相信 Cozomo 不会在屋顶上大喊:“有人刚刚给我寄了 20 ETH!”
但除此之外,被分配新所有权的票据会返回到一个数据结构中,该数据结构包含曾经创建的所有票据——默克尔树哈希,我们将在下面简要介绍。
系统状态对观察者来说是什么样的——每张纸币的价值和所有者都完全加密。
我们知道 Snoop 销毁了两个便笺,创建了两个新便笺,然后将两个新便笺中的一个发送给了他的朋友 Cozomo。我们如何确保他们两个不会串通,例如双花?如果 Snoop 销毁两张总价值 100 ETH 的纸币,并创建两张总价值 200 ETH 的新纸币会怎样?或者,地狱,一个任意大的数量?
回忆一下这两个步骤:
Snoop 销毁两张 50 ETH 纸币并创建一张 20 ETH 纸币和一张 80 ETH 纸币
Snoop 将 20 ETH 纸币发送给 Cozomo
为了确保在步骤 1 中不会发生任何可疑的事情,Snoop 需要做的就是向系统 (Aztec) 证明他打算创建的两个纸币的价值与他打算销毁的两个纸币的价值相等。
这被称为连接拆分事务,它符合这个简单的等式:A + B = C + D。
心理部分来了。系好安全带。
为了证明输出票据(C + D)与输入票据(A + B,或 100 ETH)等价,Snoop 在其浏览器中本地生成零知识证明(ZKP)。
ZKPs¹ 的黑魔法意味着他可以证明等价性 A + B = C + D 而无需透露任何单独的值。
Aztec 然后验证证明并说:“根据零知识的力量,这一定是真的”,此时智能合约会销毁两个输入票据,生成两个输出票据,并将新的输出票据记录为加密承诺在笔记注册表中。
值得讨论的是如何在 Aztec 中证明票据的所有权,这与以太坊世界有相似之处。你如何证明你控制对以太坊地址的访问?您使用钱包签署消息。
你如何证明你控制了对 Aztec 笔记的访问?有一个非常花哨的加密签名,称为零知识证明。
证明说:“在阿兹特克的某个地方,存在:a)存在具有一定价值的纸币,b)我拥有它。
Aztec 系统的状态是如何存储的?在两棵默克尔树中:
一个笔记树,包含曾经创建的所有笔记;和
一个无效树,包含所有曾经被销毁的笔记
说您拥有一张便笺向 Aztec 表明该便笺存在于便笺树中,并且在无效符树中不存在相应的便笺无效符。
当我们谈论“销毁”一个音符时,这实际上意味着将一个无效符添加到无效符树中,而不是从音符树中删除一个音符。
一棵不起眼的默克尔树。
为了发送我已经证明我拥有的笔记,创建了一个全新的 Merkle 树(和 Merkle 根)。一旦票据树和无效树的 Merkle 根都移动到新值——换句话说,系统的状态已经更新——这些根就会在以太坊的主链上发布(结算)并且交易被视为记录。
我希望这为您理解为什么隐私具有挑战性提供了坚实的基础:我们需要验证交易是否合法且正确执行,而不会违反或暴露用户数据。
这些独特的约束意味着必须从头开始构建隐私保护架构。Aztec 是唯一以这种方式构建的 L2 — 其核心架构保护隐私,并由零知识的魔力促进。感恩米!
笔记
想要了解零知识证明的基本入门吗?看看这个有用的 YouTube 视频、这个带插图的入门或 Packy McCormick 的关于 ZK 的魔力的文章。
这篇文章最初发表在 Medium 上。
Aztec rollup 中的事务对观察者和 Aztec rollup 提供者是隐藏的。发送者/接收者的身份和传输的值都是加密的。
当您存入我们的汇总中时,人们可以看到您存入的 Eth 地址,以及您存入的金额。他们看不到您存入的 Aztec 地址的身份。
当您提现到一个普通的 ETH 地址时,您提现到的地址会显示在区块浏览器上。使用这些数据,可以追踪提取的金额。
这6个字符是提现地址的最后6个字符
为了隐私,您需要提现到不同的以太坊地址。使用与您资助或注册 zk.money 用户名的地址不同的地址。
它将显示资金来自“Aztec 合同/私人汇总”