ITPub博客

首页 > 区块链 > 区块链 > 为什么不能用ZKPs构建一个私有的uniswap?

为什么不能用ZKPs构建一个私有的uniswap?

区块链 作者:有看到天上的屋吗 时间:2021-04-08 17:30:25 0 删除 编辑

最近,人们对私人智能合约产生了浓厚的兴趣。认为我们有EVM是好的。因此,如果我们有一个EVM的私有版本,那也会很好。没有人知道其他人在做什么。


EVM具有两个组成部分,执行部分混合了来自用户和全局状态的输入。 全局状态是用户在交易期间能够更新的任何变量。 例如,可以通过向合同发送1 eth来更新合同余额。 或合约内部变量,例如erc20令牌的合约余额。


ZKP允许您证明某些已知数据的状态。 他们不允许您证明您不知道的事情。


因此,ZKP解决了第一部分,使您可以私人执行。 但是,它们不允许您拥有私有的全局状态。


这里我们讨论一个不可能实现的智能合约示例。我们希望这将帮助其他人推断什么是基于zkp的私人智能合约,什么是不可能的


缺乏全局状态


Uniswap是持续的产品交换。 这是一个非常简单的以太坊智能合约,允许人们进行交易。 XM外汇MT5 xmtradingclub.com 合同持有两个令牌,令牌a和令牌b的余额。 它允许您存放代币a并提取一些代币b,代币b由bal(token_a)和bal(token_b)之间的池中的比率定义


在Alen Lu 13的原始帖子中找到有关恒定产品交换的更多信息。


为了建立一个私有的uniswap,用户需要存入令牌A并取出令牌B。为了证明他们已经正确取出令牌,他们需要知道令牌a和令牌B的当前余额是多少。


如果您告诉用户当前的状态,他们将能够观察其他用户的交互,看到其他人使用合同之前的状态和之后的状态。这样他们就可以推断出这些用户做了什么。


例如,该池有1个eth和1个dai。我知道状态,但我看不到用户的操作。假设用户做了一些事情。我不知道是什么,但是系统的新状态是2 eth和0.5 dai。我知道他们存入1个eth,取出0.5个dai。


结论

因此,任何能够更新系统的人都必须拥有这个状态信息,以便创建他们正确更新的zkp。如果它们有状态信息,它们可以在状态更改时监视。如果他们能监视状态的变化,他们就能看到其他人在做什么。


因此,使用ZKPs,您最终只能使用特定于用户的状态来构建私有的东西。所以一切都像是原子交换。如果存在全局状态,那么这就违反了隐私,因为它需要被分享给其他人来证明该状态。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69995368/viewspace-2767167/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2021-02-25

  • 博文量
    156
  • 访问量
    72864