关于路径独立性

本文讨论了路径独立性在市场制造商中的作用,特别是在Bancor协议的背景下探讨了智能合约市场制造商的效率和易受攻击性。文章详细解释了能量守恒定律如何与加密市场的价格变化相关,并指出了一些通过路径独立性防止资金损失的机制,强调了需求和流动性对价格稳定的重要性。

关于路径独立性

假设有人走到你面前,并开始向你宣称他认为他已经找到了创造无限廉价能源的方案。这个计划大致如下。首先,你需要将一艘宇宙飞船送入低地球轨道。在那里,地球的重力相对较强,因此飞船会开始猛烈加速朝向地球。飞船能够调整自己的轨迹,以至于几乎只轻轻掠过地球的大气层,然后继续朝太空深处冲去。在太空深处,重力较小,因此飞船可以在再次下落前冲得更高。当它降落时,它会沿着弯曲的路径朝向地球,以最大化其在低轨道上的时间,最大化它从高重力区域获得的加速度,这样在经过地球后,飞船可以飞得更高。当它飞得足够高时,它将穿过地球的大气层,减速但利用废热为一个热反应堆提供动力。然后,它将回到第一步继续前进。

看起来像这样:

现在,如果你知道一些牛顿动力学的知识,你就会立刻识别出这个方案完全是胡扯。但是你怎么知道?你可以根据对称性来解释:“看,对于你所说的gravity(重力)给你提供高加速度的轨道路径的每一个切片,都有一个相应的轨道路径切片,在那里gravity(重力)给你带来了同样高的减速度,所以我看不出净收益从何而来。”但是,假设这个人向你施压。“啊,”他说,“但在那个高加速度的切片中,你的初始速度是低的,因此你在里面花费了大量时间,而在相应的切片中,你的进入速度是高的,因此你有更少的时间去减速。”你到底如何真正、得出结论地证明他是错的?

一种方法是深入数学,计算积分,并表明所谓的净收益实际上恰好等于零。但还有一种简单的方法:认识到 能量是路径无关的。也就是说,当飞船从点 A 移动到点 B,其中点 B 离地球更近时,它的动能确实会增加,因为它的速度增加。但由于总能量(动能加势能)是守恒的,而势能只依赖于飞船的 位置,而与其到达那里的方式无关,因此我们知道无论飞船从点 A 到点 B 采取什么路径,一旦它到达点 B,动能的总变化将完全相同

此外,我们知道,从 点 A 到点 A 的动能增益也与路径无关:在所有情况下,动能的变化恰好为零。

有一个担忧,有时提到反对链上市场制造商的意见(也就是,作为希望将一种类型的代币兑换为另一种类型的人的完全自动化的链上机制,总是作为可用的交易对手)就是,它们总是容易被利用。

例如,让我引用一篇近期文章讨论这个问题,文中涉及的上下文是 Bancor:

Bancor 提供的代币价格与实际市场均衡毫无关系。Bancor 总是会落后于市场,在这样做的过程中,Bancor 将耗尽其储备。一个简单的思想实验足以说明这个问题。假设市场恐慌围绕 X 展开。关于你系统的毫无根据的消息启发了社交媒体。假设人们相信你们的 CEO 已经逃往一个没有引渡条约的偏远岛屿,你的 CFO 一直在挪用资金,而你的 CTO 则在黑暗网络市场上购买毒品,并将其运送到他的工作地址,在他的桌子上制造一堆类似《疤面煞星》的白色粉末。更糟的是,让我们假设你知道这些指控是虚假的。它们是由一家没有产品的公司所操控的一群网络喷子传播的,该公司的商业计划是阻塞每个人的货币流。Bancor 在银行挤兑期间将为 X 代币提供不断降低的价格,直到没有储备。你会看到市场恐慌占据并耗尽你的储备。请记住,在这种情况下,人们相信 X 的真实价值为零,而且 Bancor 公式保证将提供高于该值的价格。因此,你的整个储备将会消失。

这篇文章讨论了 Bancor 协议的许多问题,包括代码质量等细节,我将不对此进行触及;相反,我将纯粹专注于链上市场制造商效率和可利用性的话题,使用 Bancor(以及 MKR)作为例子,并不打算对这两个项目的整体质量做出任何判断。

对于许多设计得相当简单的链上市场制造商,上面关于可利用性和市场滞后性的评论反映出其本质,且十分严肃。然而,也有一些类别的链上市场制造商,绝对不容易因某种钱流动攻击而耗尽其整个储备。以一个简单的例子为例,考虑为 ETH 销售 MKR 的市场制造商,其内部状态包含当前价格 p,并愿意在每个价格水平上买入或卖出无限小的 MKR。例如,假设 p=5,而你想购买 2 MKR。市场将按照下述方式出售给你:

  • 0.00...01 MKR,价格为 5 ETH/MKR
  • 0.00...01 MKR,价格为 5.00...01 ETH/MKR
  • 0.00...01 MKR,价格为 5.00...02 ETH/MKR
  • .....
  • 0.00...01 MKR,价格为 6.99...98 ETH/MKR
  • 0.00...01 MKR,价格为 6.99...99 ETH/MKR

总共,市场以平均价格 6 ETH/MKR(即总费用 12 ETH)向你出售了 2 MKR,而在操作结束时 p 增加到了 7。如果有个人然后想要售出 1 MKR,他们将花费 6.5 ETH,而在那次操作结束时 p 将再次回落到 6。

现在,假设我告诉你,这样的市场制造商起初以 p=5 的价格开始,而在一系列未指定的事件之后,p 现在为 4。有两个问题:

  1. 市场制造商获得或失去了多少 MKR?
  2. 市场制造商获得或失去了多少 ETH?

答案是:它获得了 1 MKR,失去了 4.5 ETH。请注意,这个结果完全与 p 的路径无关。如果 p 是通过一个买家直接从 5 移动到 4,这些答案就是正确的;而如果有第一个买家将 p 从 5 变为 4.7,第二个买家再将 p 变为 4,这些答案同样正确;即便 p 先降到 2,再升到 9.818,再降到 0.53,最后再次升到 4,这些答案也都是正确的。

为什么会这样?最简单的来说,如果 p 在跌至 4 之后又回来上升至 4,则在下降的过程中所进行的出售交易恰好被上升过程中进行的购买交易相抵消;每一笔出售交易都有与之相对应的以相同价格进行的购买交易。但是我们还可以从不同的视角来观察市场制造商的核心机制。定义市场制造商的 一维 内部状态 p,并通过以下公式定义 MKR 和 ETH 余额:

mkr_balance(p)=10−p

eth_balance(p)=p2/2

任何人都可以在“编辑”p(尽管仅限于 0 到 10 之间的值),但他们只能通过提供正确数量的 MKR 或 ETH,并返回相应数量的 MKR 和 ETH,确保余额仍然匹配,即所持有的 MKR 和 ETH 余额在操作后与上述公式所给定的、设置的新值的 p相匹配。任何没有伴随 MKR 和 ETH 交易以使余额匹配的对 p 的编辑都会自动失败。

现在,降低 p 从 5 到 4 的任何一系列事件,也会在不论是什么一系列事件中将市场制造商的 MKR 余额提高 1 并将其 ETH 余额降低 4.5,应当看作是显而易见的:mkr_balance(4)−mkr_balance(5)=1,和 eth_balance(4)−eth_balance(5)=−4.5。

这意味着对保持这种路径独立属性的市场制造商进行“储备耗尽”攻击是不可能的。即使有些喷子成功引发市场恐慌,价格跌至接近零,当恐慌消退,价格回到原水平时,市场制造商的立场将不会改变——即使在此过程中价格和市场制造商的余额做了一些疯狂的波动。

不过,这并不意味着市场制造商不能亏钱,相较于其他持有策略。如果,在开始时 1 MKR = 5 ETH,随后 MKR 价格变动,我们比较市场制造商中持有 5 MKR 和 12.5 ETH 的表现与仅仅持有所述资产的表现,结果如下:

保持一个平衡的投资组合总是获胜,只有在价格完全保持不变的情况下,市场制造商和平衡投资组合的回报是相等的。因此,这种市场制造商的目的是为用户提供保障流动性的公共财富,充当最后的救助贸易者,而不是赚取收入。然而,我们当然可以简单地修改市场制造商以赚取收入:我们让它收取价差。即,市场制造商可能收取 1.005⋅p 作为购买价格,而只为出售价格提供 0.995⋅p 的报价。现在,成为市场制造商受益者变成了一种赌注:如果从长远来看,价格倾向于向一个方向移动,那么市场制造商将会亏损,至少相较于如果他们有一个平衡的投资组合所能获得的收益。而另一方面,如果价格倾向于剧烈波动,但最终回到同一点,市场制造商就可以获得可观的利润。这牺牲了“路径独立”属性,但以这样的方式,使得任何偏离路径独立的情况都会一直有利于市场制造商。

路径无关的市场制造商可以采取很多设计;如果你愿意创建一种可以发行任意数量单位的代币,那么“固定储备比率”机制(其中对于某个常数比率 0≤r≤1,代币供给为 p1/r−1,储备量为 r⋅p1/r 也是算作一种,只要它正确实施并且路径独立性没有因界限和四舍五入错误受到损害。

如果你想为没有价格上限的现有代币制作一个市场制造商,我最喜欢(归功于 Martin Koppelmann)的方法是维持不变量 tokenA_balance(p)⋅tokenB_balance(p)=k,k 为某个常数。因此公式会是:

tokenA_balance(p)=k⋅p

tokenB_balance(p)=k/p

其中 p 是用 tokenA 表示的 tokenB 的价格。通常,可以通过定义 tokenA_balance 和 tokenB_balance 之间的任何(单调)关系,并在任何点计算其导数来创建路径无关的市场制造商。

以上内容仅讨论了路径独立性在防止某种特定类型问题中的作用:即攻击者以某种方式在一系列价格波动的背景下进行一系列交易,以重复不断地耗尽市场制造商的资金。在路径独立市场制造商中,这种“资金抽取”脆弱性是不可能的。然而,确实还有其他类型的不效率可能存在。如果 MKR 的价格从 5 ETH 降至 1 ETH,那么上面例子中使用的市场制造商将损失 28 ETH 的价值,而一个平衡的投资组合只损失 20 ETH。那 8 ETH 到哪里去了?

在最好的情况下,价格(也就是所谓的“真实”价格,所有用户和交易者之间供给和需求匹配的价格水平)迅速下跌,幸运的交易者以此趁机获取利益,获得 8 ETH 的利润,扣除微不足道的交易费用。但是,如果有多个交易者呢?那么,如果区块 n 和区块 n+1 之间的价格有差异,交易者可以通过设定交易费用竞拍,从而造成一个人人竞拍的拍卖,收入将归矿工所有。根据收入平等定理,我们可以推测交易者进入此机制支付的交易费用将不断增加,直到与他们赚取利润的规模大致相等(至少在初期;真正的均衡是矿工直接拿走这笔钱)。因此,无论它们的结局如何,这种方案最终都是对矿工的馈赠。

增加这种设计的社会福利的一种方法是使其可以创建购买交易,只有在实际成交的情况下矿工才值得包含这些交易。也就是说,如果 MKR 的“真实”价格从 5 降至 4.9,并且有 50 个交易者竞相进行套利,而只有这 50 人中的第一个进行交易,那么只有那个交易者应该向矿工支付交易费用。这样,其他 49 符合条件的失败交易将不会堵塞区块链。EIP 86,计划在 Metropolis 中实施,会为这种条件交易费用机制的标准化开辟道路(另一个好处是,这也可以使代币销售更加不引人注意,因为类似的人人竞拍机制适用于许多代币销售)。

此外,如果市场制造商是代币唯一可用的交易场所,还有其他效率低下的问题。例如,如果两个交易者希望交换大量代币,那么他们将需要通过一系列小的买入和卖出交易来做到这一点,毫无必要地堵塞区块链。为了缓解这些效率,链上市场制造商应当只是可供选择的一个交易场所,而不应是唯一的。然而,这对于协议开发者来说,这不是一个大问题;如果市场对于促进大规模交易的场所存在需求,可能会有人提供此类服务。

此外,这里讨论的只是关于市场制造商路径独立性的局部假设,假设存在特定的起始价格和结束价格。然而,由于各种心理影响,及多重均衡效应,结束价格可能不仅仅是起始价格和影响资产“基本”价值的近期事件的函数,也可能是根据这些事件产生的交易模式的函数。如果发生价格下降事件,由于流动性不足,资产价格迅速下跌,可能最终恢复至的价格将低于在初期若有更多流动性情况下所能维持的点。尽管如此,这或许实际上是支持补贴市场制造商的论据:如果存在该种乘数效应,则将对价格稳定性产生超出市场制造商本身提供的流动性的一阶效应。

在确定哪种路径独立市场制造商最优的相关研究中,可能还有大量工作需要开展。此外还存在混合半自动市场制造商的可能性,具有相同的保障流动性属性,但包括某些非同步元素,以及在大量资本此时将在矿工手中损失之前,运营商能够“插队”并抢占收益的能力。此外,尚未制定出关于链上自动有保障流动性在各种目标下究竟最优(完美流动性)和由谁补贴的统一理论。总体而言,链上机制设计空间仍处于初期阶段,绝对值得更广泛地研究和探索各种选择。

  • 原文链接: vitalik.eth.limo/general...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Vitalik Buterin
Vitalik Buterin
https://vitalik.ca/