主页 > 安卓版下载imtoken官网 > Vitalik:中心化交易所如何证明资金?

Vitalik:中心化交易所如何证明资金?

安卓版下载imtoken官网 2023-07-20 05:07:42

编译:董一鸣、ChainCatcher

每当一个主要的中心化交易所崩溃时,一个常见的问题就是我们是否可以使用密码学来解决这个问题。 交易所可以创建加密货币证明,证明他们在链上持有的资金足以支付其在用户。

交易所可以建立一个系统,存款人在未经他们同意的情况下根本不能提取他们的资金。 潜在地,我们可以探索“不做坏事”的有抱负的好人 CEX 和“不能做坏事”但现在效率低下且隐私泄露的链上 DEX 之间的整个范围。 这篇文章将深入探讨使交易更接近去信任化一两步的历史尝试、这些技术的局限性以及一些依赖 ZK-SNARK 和其他先进技术的更新和更强大的想法。资产负债表和 Merkletrees:老派偿付能力证明

交易所最早尝试以加密方式证明他们没有欺骗用户的尝试可以追溯到很久以前。 2011 年,当时最大的比特币交易所 MtGox 通过发送一笔交易将 424,242 BTC 转移到预先公布的地址来证明他们有资金。 2013 年,开始讨论如何解决问题的另一面:证明客户存款的总规模。 如果你证明客户的存款等于 X(“负债证明”),并证明私钥对 X 币的所有权(“资产证明”),那么你就有了偿付能力证明:你已经证明了交易有资金偿还所有存款人。 证明存款的最简单方法是简单地发布(用户名、余额)对列表。 每个用户都可以检查他们的余额是否包含在列表中,任何人都可以检查完整列表以查看 (i) 每个余额都是非负的,并且 (ii) 总金额是索赔金额。 当然,这会破坏隐私,所以我们可以稍微改变一下方案:发布一个 (hash(username, salt), balance) 对列表,并私下向每个用户发送他们的盐值。 但即使那样也会泄露平衡,并且会泄露平衡变化的模式。 保护隐私的愿望将我们带到了下一个发明:Merkletree(也称为哈希树或 Merkle 树)技术。

矿工为什么能见证比特币交易_比特币钱包交易未确认_比特币交易证明

矿工为什么能见证比特币交易_比特币交易证明_比特币钱包交易未确认

绿色:查理节点。 蓝色:David 节点,Charlie 将收到它作为他的证明的一部分。 黄色:根节点,公开展示给大家。 Merkletree技术就是把客户的余额表放到Merklesumtree中。 在 Merkle sumtree 中,每个节点都是一个 (balance, hash) 对。 底层叶节点代表个人客户余额和盐渍用户名哈希。 在每个高层节点中,余额是下面两者的余额之和,哈希值是下面两者的哈希值。 Merklesum 证明与 Merkle 证明一样,是树的一个“分支”,由从叶子到根的路径上的姐妹节点组成。 交易所将向每个用户发送其余额的 Merkle 总和证明,以证明其余额。 然后将向用户保证他们的余额正确地包含在总数中。 可以在此处找到一个简单的代码示例。 这种设计中的隐私泄露比完全公开的列表要低得多,并且可以通过在每次发布根目录时重新洗牌来进一步减少,但仍然存在一些隐私泄露。 查理可以得知某人的余额为 164ETH,有两个用户的余额加起来为 70ETH,等等。 控制多个帐户的攻击者仍然可以了解有关交易所用户的大量信息。 该方案的一个重要微妙之处在于可能出现负余额:如果交易所的客户余额为 1390ETH,但只有 890ETH 的储备金,请尝试通过在树中的某个假账户下添加 -500ETH 的余额来增加余额。 如何补差价? 事实证明,这种可能性并没有破坏方案,尽管这就是为什么我们特别需要 Merklesum 树而不是普通的 Merkle 树。 假设Henry是交易所控制的假账户,交易所放了-500ETH。

矿工为什么能见证比特币交易_比特币钱包交易未确认_比特币交易证明

Greta 的证明验证将失败:交易所必须给她 Henry 的 -500 ETH 节点,她将拒绝为无效。 Eve和Fred的验证也会失败,因为Henry上面的中间节点ETH总量是-230,所以也是无效的! 为了逃脱盗窃,交易所必须希望整个树的右半部分都没有人检查他们的余额证明。 如果交易所能够识别出他们信任的价值 500 ETH 的用户要么不会费心检查证明,要么在抱怨他们从未收到证明时不会被相信,那么他们就有信心逃脱窃取。 然而,交易所也可以通过将这些用户从树中排除来达到同样的效果。 因此,Merkle 树技术基本上和负债证明一样好,即使只是为了负债证明。 但其隐私属性仍不理想。 你可以通过更聪明的方式使用 Merkle 树来做到这一点,比如让每个 satoshi 或 wei 成为一个单独的叶子,但最终随着更现代的技术,会有更好的方法来做到这一点。 使用 ZK-SNARKs 提高隐私性和鲁棒性 ZK-SNARKs 是一种强大的技术。 ZK-SNARKs 之于密码学可能就像变压器之于人工智能:一种如此强大的通用技术,它将完全粉碎几十年前开发的大量特定应用技术。 因此,当然,我们可以使用 ZK-SNARKs 来极大地简化和改进责任证明协议中的隐私。 我们能做的最简单的事情就是将所有用户的存款放入一棵 Merkle 树中(或者更简单地说,一个 KZG 承诺),并使用 ZK-SNARK 来证明该树中的所有余额都是非负的,并且加起来为等于某些声称的价值。 如果我们为隐私添加一层散列,则提供给每个用户的 Merkle 分支(或 KZG 证明)将不会泄露任何其他用户的余额。

比特币钱包交易未确认_矿工为什么能见证比特币交易_比特币交易证明

矿工为什么能见证比特币交易_比特币交易证明_比特币钱包交易未确认

使用 KZG 承诺是避免隐私泄露的一种方式,因为不需要提供“姐妹节点”作为证明,可以使用简单的 ZK-SNARK 来证明余额之和,并且每个余额都是非负的。 我们可以使用一个专用的 ZK-SNARK 来证明上述 KZG 中余额的和和非负性。 这是一个简单的例子,它就是这样做的。 我们引入了一个辅助多项式,它“为每个余额建立位”(为了示例,我们假设余额在实际总数与声明相符 当总数相符时,它只会加起来为零。 如果z是-128次单位根,我们可以证明下面的等式。

矿工为什么能见证比特币交易_比特币交易证明_比特币钱包交易未确认

有效设置的第一个值是 0 0 0 0 0 0 0 0 0 0 1 2 5 10 20 -165 0 0 0 0 0 0 0 0 1 3 6 12 25 50 -300 ...关于如何转换一个像这样的等式转换为多项式检查,然后转换为 ZK-SNARK,请参阅我的 ZK-SNARK 文章 here 和 here 以获得进一步的解释。 这不是一个最佳协议,但它确实表明这些类型的加密证明如今并不是那么棘手! 只需几个额外的公式,像这样的约束系统就可以适应更复杂的环境。 例如,在杠杆交易系统中,个人用户的负余额是可以接受的,但前提是他们有足够的其他资产来覆盖有一定保证金的资金。 SNARK 可用于证明这种更复杂的约束,让用户放心比特币交易证明,交易所不会通过隐含地豁免其他用户遵守规则而将他们的资金置于风险之中。 从长远来看,这种 ZK 债务证明可能不仅用于客户在交易所的存款,还可以用于更广泛的贷款。 当任何人获得贷款时,记录将被放入包含该贷款的多项式或树中,并且该结构的根在链上发布。 这将允许任何寻求贷款的人向贷方提供 ZK 证明,证明他们没有提供太多其他贷款。 最终,法律创新甚至可以让已经以这种方式承诺的贷款比那些没有承诺的贷款具有更高的优先权。

比特币钱包交易未确认_比特币交易证明_矿工为什么能见证比特币交易

这将我们引向与“去中心化社会:寻找 Web3 的灵魂”中讨论的想法完全相同的方向:建立负面声誉或抵押品概念。 资产证明最简单的资产证明版本就是我们上面看到的协议:为了证明你持有 X 个币,你只需在某个预先约定的时间或在数据中包含“这些资金属于币安”的交易中移动场 X 硬币。 为避免支付交易费用,您可以改为签署链下消息; 比特币和以太坊都有链下消息签名标准。 这种简单的资产证明技术存在两个实际问题。 出于安全原因,大多数交易所将客户的绝大部分资金都保存在“冷库”中:在离线计算机上,交易需要手动签名并转移到互联网上。 我曾经为个人使用资金而设置的冷库涉及一台永久离线的计算机,它生成一个二维码,其中包含我可以用手机扫描的签名交易。 现代交换协议甚至更加疯狂,通常涉及多个设备之间的多方计算。 鉴于此设置,即使是一条额外的信息来证明对地址的控制也是一项昂贵的操作! 交易可以采取多种途径:另一个主要问题是防止重复使用抵押品。 交易所可以轻松地在彼​​此之间来回运送抵押品以获取准备金证明,这将使他们能够在实际上无力偿债时假装有偿付能力。

理想情况下,偿付能力证明是实时完成的,证明在每个区块后都会更新。 如果这不现实,下一个最佳选择是协调不同交易所之间的固定时间表,例如,每周二 14:00 UTC 证明储备。 最后一个问题是:资产是否可以进行法定货币认证? 交易所不仅持有加密货币,它们还在银行系统内持有法定货币。 在这里,答案是:是的,但这样的程序将不可避免地依赖于“法定货币”信任模型:银行本身可以证明余额,审计师可以证明资产负债表,等等。 鉴于法定货币在密码学上无法验证,这是框架内可以做到的最好的事情,但它仍然值得做。 另一种方法是将一个运行交易所并处理资产支持稳定币(如 USDC)的实体与另一个处理加密货币和传统银行系统之间现金进出过程(USDC 本身)的实体完全分开。 因为USDC的“负债”只是链上的ERC20代币,负债证明是“免费”的,只需要资产证明。 Plasma 和 validiums:我们能让 CEX 不受约束吗? 假设我们想更进一步:我们不想仅仅证明交易所有资金来偿还用户。 相反,我们希望完全防止交易所窃取用户的资金。 对此的第一次重大尝试是 Plasma,这是一种扩容解决方案,于 2017 年和 2018 年在以太坊研究圈流行起来。Plasma 的工作原理是将余额拆分为一组单独的“硬币”,每个硬币都分配有一个索引并位于一个位置Plasma 块的 Merkle 树中的特定位置。 硬币的有效转移需要将交易放在树中的正确位置,并且树的根在链上发布。

比特币钱包交易未确认_比特币交易证明_矿工为什么能见证比特币交易

Plasma 版本的简化图。 代币存储在智能合约中比特币交易证明,在提取时执行 Plasma 协议的规则。 OmiseGo 试图在此协议之上建立一个去中心化交易所,但从那以后他们转向了其他想法——就此而言,Plasma Group 本身,现在是 optimisticEVM 的汇总项目 Optimism。 2018 年设想的 Plasma 的技术局限性(例如代币碎片化证明)不值得关注。 自 2018 年 Plasma 话语达到顶峰以来,ZK-SNARKs 在与扩展相关的用例中变得更加可行,正如我们上面所说,ZK-SNARKs 改变了一切。 一个更现代的 Plasma 想法版本是 Starkware 所谓的 validium:基本上与 ZK-rollup 相同,只是数据保存在链下。 这种结构可用于许多用例,想象一下中央服务器需要运行一些代码并证明它正确执行的任何情况。 在 validium 内,运营商无法窃取资金,尽管根据实施的细节,如果运营商消失,一些用户资金可能会被冻结。 这一切都非常好:CEX vs. DEX 远非二元关系,事实证明有一个完整的选择范围,包括各种形式的混合中心化,你可以获得一些好处,比如效率,但仍然有许多加密护栏可防止中心化运营商从事大多数形式的滥用行为。

矿工为什么能见证比特币交易_比特币钱包交易未确认_比特币交易证明

比特币钱包交易未确认_矿工为什么能见证比特币交易_比特币交易证明

然而,在这个设计空间的右半部分,我们仍然需要讨论最基本的问题:处理用户错误。 到目前为止,最重要的错误类型是:如果用户忘记密码、丢失设备、被黑客入侵或无法访问其帐户怎么办? 交易所可以解决这个问题:首先恢复电子邮件,如果仍然失败,则通过 KYC 进行更复杂的恢复形式。 然而,为了能够解决这样的问题,交易所需要实际控制硬币。 为了有能力出于正当理由从用户账户中收回资金,交易所需要有能力出于恶意原因从用户账户中窃取资金。 这是一个不可避免的权衡。 理想的长期解决方案是依靠自我托管,辅以多重签名和社交恢复钱包等技术来帮助用户应对突发事件。 但在短期内,有两种成本和收益截然不同的明显替代方案。

比特币钱包交易未确认_比特币交易证明_矿工为什么能见证比特币交易

结语:为未来更好的交流

比特币钱包交易未确认_矿工为什么能见证比特币交易_比特币交易证明

短期内,交易所分为两种截然不同的“类别”:托管交易所和非托管交易所。 今天,后一类只是 DEXes,例如 Uniswap。 未来,我们可能还会看到加密“受限”的 CEX,其中用户的资金保存在诸如 validium 智能合约之类的东西中。 我们也可能会看到我们信任法定货币而不是加密货币的半托管交易所。

两种类型的交易所都将保留下来,提高托管交易所安全性的最简单的向后兼容方法是添加储备证明。 这包括资产证明和负债证明的组合。 为两者制定良好的协议存在技术挑战,但我们也应该尝试在两者上取得进展并尽可能开源软件和流程,以便所有交易所都能受益。 从长远来看,我希望我们越来越接近所有非托管的交易所,至少在加密货币方面如此。 钱包恢复将存在,对于小额交易的新用户,以及出于法律原因需要这种安排的机构,可能需要高度集中的恢复选项,但这可以在钱包层而不是内部完成交易所本身。 magic.link 与 Polymarket 等平台交互的方式就是这种方法的一个例子。 在法币方面,传统银行系统和加密货币生态系统之间的流动可以通过资产支持的稳定币(如 USDC)的本地现金进/出流程来完成。 然而,我们还需要一段时间才能完全实现这一目标。 特别感谢 Balaji Srinivasan,以及 Coinbase、Kraken 和 Binance 工作人员的讨论。 注:所有在本账号分享或转载的文章旨在传递行业信息,不构成任何投资意见或建议。 投资有风险,入市需谨慎。 欢迎关注访问区块链,及时获取更多有价值的资讯。往期热点文章

5.7w

9w (w.9w.7ww.4w5300