小 V 共读会系列#05|Having a safe CEX: proof of solvency and beyond

“小 V 共读会”,或者说,“他的名字叫小 V”这个名字,是 PlanckerDAO 普朗克社区的核心成员老胡取的。名字的来源是取自当下年轻朋友可能不太听说过的一首老歌,叫《她的名字叫小芳》。

2022 年 11 月 19 日, Vitalik 在博客发表文章《What do I think about network states?》,Vitalik 以密码学为工具,从默克尔树谈起,讲到如何通过零知识证明改进以保护隐私。在有野心好人式且 “主动不作恶” 的 CEX 和 “没有作恶能力” 但目前尚显低效且缺乏隐私保护的链上 DEX 之间,还有未经全面探索的可行性范围。

Vitalik 博客原文链接:https://vitalik.ca/general/2022/11/19/proof_of_solvency.html

小 V 导读

每当有大型中心化交易所爆雷时,一个常见的问题就是,我们是否可以利用加密技术来规避这种风险。交易所是否可以建立一个未经储户同意,就无法动用储户资金的安全系统?

在 11 月 19 日发布的这篇博客中,Vitalik 以密码学为工具,从默克尔树谈起,讲到如何通过零知识证明改进以保护隐私。在有野心好人式且 “主动不作恶” 的 CEX 和 “没有作恶能力” 但目前尚显低效且缺乏隐私保护的链上 DEX 之间,还有未经全面探索的可行性范围。

假如不想仅仅证明交易所具有资金偿还能力,也希望在兼顾用户资金和隐私安全的情况下防止交易所盗用资金,如何推进交易所免信任化的进程?

小 V 共读:Having a safe CEX: proof of solvency and beyond

本期主讲人 @Lyna@York

一、反复被提出的疑问

主流中心化交易所爆雷时,一个反复被提出的疑问是:我们是否可以使用加密技术来解决这个问题——交易所最早尝试用密码学来证明他们没有欺骗用户?

二、发展历史

1. 第一种方法:资产证明

将 Coin 转移到一个预先准备的账户里,证明资产。客户的存款等于 X(“负债证明”),并证明 X 币的私钥的所有权“资产证明”),那么你就有了偿付能力证明:交易所有足够资金偿还所有存款人。

最简单的方法是发布一个余额、用户的对应列表,但是会侵害用户的隐私。

发布一个(hash(username, salt), balance)对的列表,并私下向每个用户发送他们的“盐值”。

出现的问题

但即使这样也会泄露余额,而且会泄露余额的变化模式。保护隐私的期望将我们引向另一个发明:默克尔树技术。

2. 第二种方法:默克尔树技术

默克尔树技术将客户的余额表放入一种“默克尔总和树”结构。在默克尔总和树中,每个节点都是一个(余额,哈希值)对。底层的叶片节点代表个人客户的余额和加盐调整过的用户名哈希值。在每个高层叶片节点上,余额是下层两个叶片节点余额的总和,哈希值是下层两个节点的哈希值。默克尔总和证明就像默克尔证明一样,是树结构的一个 "分支",由从叶片到根的整个路径上的姐妹节点组成。

优点

能够及时剪枝,把重复和混乱数据减少。这个方案的一个重要的微妙之处在于负余额的可能性,可以避免资产造假,一旦有人检查右半部分的资产证明

缺点

依然会泄漏一定的隐私,一个控制了许多账户的攻击者仍有可能了解到交易所用户的大量信息。

3. 第三种方法:用 ZK-SNARKs 改善隐私和稳定性

加一层散列,每个用户的 Merkle 分支(或 KZG 证明)将不会透露任何其他用户的余额。

验证这种更复杂的约束(用户负资产和其他资产是否平衡),从而让用户放心,交易所没有通过暗中豁免其他用户遵守规则而使他们的资金面临风险。

在更长远的未来,这种ZK责任证明也许不仅可以用于交易所的客户存款,还可以用于更广泛的贷款。任何获得贷款的人都会将一条记录放入包含该贷款的多项式或树中,而该结构的根将被公布在链上。这将让任何寻求贷款的人向贷款人证明,他们还没有借出太多其他贷款的ZK证明。

优点

改善资产证明协议中的隐私问题,解决资产证明中的关键 Merkle tree 节点性问题

资产证明

The simplest version of proof of assets is the protocol that we saw above: to prove that you hold X coins, you simply move X coins around at some pre-agreed time or in a transaction where the data field contains the words "these funds belong to Binance". To avoid paying transaction fees, you could sign an off-chain message instead; both Bitcoin and Ethereum have standards for off-chain signed messages

资产证明的最简单版本是我们上面看到的协议:为了证明你持有 X 个币,你只需在某个预先约定的时间或在数据字段包含 "这些资金属于 Binance "的交易中移动 X 个币。为了避免支付交易费用,你可以签署一个链外信息来代替;比特币和以太坊都有链外签名信息的标准。

存在的问题

1. 处理冷库的问题

离线交易出现的多方计算的复杂性问题,鉴于这种设置,即便仅仅增加一个额外信息来证明对一个地址的控制,也会是一种相当昂贵的操作!

交易所有多种方式来实现:

2. 如何解决重复计算

保留几个公开的长期使用的地址

交易所可以生成一些地址,对每个地址公布一次所有权证明,然后重复使用这些地址。这是迄今为止最简单的方案,尽管它确实在如何保护安全和隐私方面增加了一些限制。

有许多地址,随机证明其中几个的所有权

交易所会生成许多地址,甚至可能每个地址只使用一次,并使该地址在这一次交易后退役。在这种情况下,交易所可能有一个协议,不时地随机选择几个地址完全"公开 "以证明所有权。一些交易所已经用审计师做了类似的事情,理论上这种技术可以由完全自动化的程序来完成。

更复杂的 ZKP 选项

抵押品的双花

交易所可以很容易地在彼此之间来回倒手抵押品以进行资金储备证明,这将使他们在实际上没有偿付能力的时候假装有偿付能力。理想情况下,偿付能力的验证是实时的,在每个区块之后都会更新证明。如果这不可行,次优的办法是不同的交易所之间协调一个固定的时间表,例如,在每周二 14 点 UTC 进行储额证明。

你能对法币做资产证明吗?交易所不仅只持有加密货币,他们还持有银行系统内的法币。

在这里,答案是:可以。但这种程序将不可避免地依赖于 “法币 ”信任模型:银行本身可以证明余额,审计师可以验证资产负债表,等等。考虑到法币是不可加密验证的,这是在该框架内所能做到的最优验证方式,仍然是值得做的。

另一种方法是,将一个运行交易所和处理有资产背书的 USDC 等稳定币的实体和另一个处理加密货币和传统银行系统之间现金流动的实体(USDC 本身)干净地隔开。USDC 的 “债务”只是链上的 ERC-20 代币,债务证明是 “免费的”,因此验证交易所的偿付能力只需要提供实际的资产证明。

PlasmaValidiums:我们可以使中心化交易所不做资产托管服务吗?

我们不想仅仅证明交易所有足够资金来偿还用户的存款,我们想完全防止交易所挪用用户的资金。

Plasma 的工作原理是将余额分割成一组单独的 “币”,每个币都被分配了一个索引,并生成在 Plasma 区块的 Merkle 树结构中的一个特定位置。对这样一个“币”进行有效转移需要将交易放置到树结构的正确位置,这个树结构的根部节点是在链上公开的。

出现的问题

这种设计空间内另一面的基本问题:处理用户错误

首先是电子邮件恢复,如果恢复失败,则可以通过 KYC 进行更复杂的恢复。但为了能够解决这样的问题,交易所需要真正拥有对币的控制权。从好的方面来说,交易所需要对用户账户有更多控制权以恢复用户账户的资金,从另一面来说,这种控制权也可以被用来窃取用户账户的资金。这是一种无法避免的代价。

理想的长期解决方案是依靠自我保管,并辅以多签钱包和社交关系恢复钱包等技术,帮助用户处理紧急情况。但在短期内,有两个明显的替代方案,其成本和收益明显不同。

三、总结

在更长远的未来,我希望至少在加密行业里越来越多甚至所有交易所会转成非托管型。钱包还是会具备账号恢复功能,对于处理小金额的新用户,以及出于法律原因需要这种安排的机构,可能需要有高度中心化的账号恢复选项,但这可以在钱包层而不是在交易所内完成。magic.link 与 Polymarket 等平台的交互方式就是这种方法的一个例子。在法币方面,传统银行系统和加密货币生态系统之间的资金流动可以通过基于真实资产背书的稳定币(如 USDC)的现金流入/流出流程来完成。当然,在我们能够完全做到这些之前,还需要一段时间。

- - - PlanckerDAO: Website | Twitter - - -

>>> 如果你也和我一样,共读完之后有一些认同的地方,可以分享给身边也有相同感觉的人。

Subscribe to PlanckerDAO
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.