關於路徑獨立
作者:Vitalik Buterin
原标题:《On Path Independence》
發表時間:2017 年 7 月 22 日
假設有人走到你面前,開始對你大喊,他認為他已經想出了如何創造無限自由能量的來源。他的方案如下所示。首先,你得到一艘宇宙飛船到近地軌道。在那裡,地球的重力相當高,因此宇宙飛船將開始向地球猛烈加速。這艘宇宙飛船將自己置於一條軌道上,使其幾乎不掠過地球大氣層,然後繼續飛向遙遠的太空。在太空中,重力較低,因此宇宙飛船可以在再次開始下降之前飛得更高。當它下降時,它會沿著一條彎曲的路徑朝向地球,以最大化它在低軌道的時間,最大化它從那裡的高重力獲得的加速度,這樣它在經過地球後會飛得更高。升到足夠高之後,它飛過地球大氣層,使自身減速,但利用廢熱為熱反應堆提供動力。然後,它會回到第一步並繼續前進。
像這樣的東西:

現在,如果你對牛頓動力學有所了解,你很可能會立即意識到這個方案完全是胡扯。但是你怎麼知道?你可以訴諸對稱性,說"看,對於你說重力給你高加速度的軌道路徑的每一片,有一個相應的軌道路徑片,重力給你同樣高的減速度,所以我不看看淨收益來自哪裡"。但是,假設那個男人逼著你。"啊,"他說,"但是在那個高加速度的切片中,你的初始速度很低,所以你在裡面花了很多時間,而在相應的切片中,你的傳入速度很高,所以你減速的時間更少"。你怎麼真的,最終,證明他錯了?
一種方法是深入研究數學,計算積分,並證明假定的淨收益實際上完全等於零。但也有一個簡單的方法:認識到能量是獨立於路徑的。也就是說,當飛船從點移動時指向,哪裡點離地球越近,它的動能肯定會上升,因為它的速度增加了。但是因為總能量(動能加勢能)是守恆的,而勢能只取決於飛船的位置,而不是它是如何到達那裡的,所以我們知道無論從哪個點出發的路徑指向宇宙飛船需要,一旦它指向動能的總變化將完全相同。

不同的路徑,相同的能量變化
此外,我們知道從點出發的動能增益指向也與你沿途所走的路徑無關:在所有情況下,它都完全為零。有時對鏈上做市商(即完全自動化的鏈上機制,對於希望將一種代幣交易另一種代幣的人始終可用的交易對手)提出的
一個擔憂是它們總是很容易被利用。
例如,讓我引用最近在 Bancor 的背景下討論這個問題的帖子:
Bancor 為代幣提供的價格與實際的市場均衡無關。Bancor 將永遠落後於市場,這樣做會耗盡其儲備。一個簡單的思想實驗足以說明問題。假設市場恐慌圍繞 X 展開。關於你的系統的毫無根據的消息超過了社交媒體。假設人們确信你的 CEO 潛逃到了一个没有引渡条约的偏远岛屿,你的 CFO 一直在挪用资金,而你的 CTO 正在从暗网市场购买毒品并将它们运送到他的工作地址以制作一张疤面煞星------就像他桌上的一堆白色粉末。更糟糕的是,假設你知道這些指控是錯誤的。它們是由一家沒有產品的公司操縱的巨魔軍隊傳播的,該公司的商業計劃是阻止每個人的硬幣流。Bancor 會在銀行擠兌期間為 X 代幣提供不斷降低的價格,直到它沒有剩餘儲備。你會眼睁睁地看着市场恐慌占据上风,吃掉你的储备。回想一下,人们确信在这种情况下 X 的真实值为 0,并且 Bancor 公式保证提供高于该值的价格。所以你的整个储备都会消失。
這篇文章圍繞 Bancor 協議討論了許多問題,包括代碼質量等細節,我不會涉及其中任何一個;相反,我將純粹專注於鏈上做市商效率和可利用性的主題,僅使用 Bancor(以及 MKR)作為示例,而不是對整個項目的質量做出任何判斷。
對於許多設計天真的鏈上做市商來說,上面關於可利用性和跟蹤市場的評論一字不差地適用,而且非常認真。但是,也有一些鏈上做市商絕對不會懷疑他們的全部儲備由於某種抽水攻擊而被耗盡。舉個簡單的例子,考慮做市商為 ETH 出售 MKR,其內部狀態由當前價格組成,並且願意在每個價格水平上購買或出售無限量的 MKR。例如,假設,並且你想購買 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,並且在操作結束時已增加到 7。如果有人想出售 1 MKR,他們將花費 6.5 ETH,並且在該操作結束時會回落到6。
現在,假設我告訴過你,這樣的做市商開始時的價格為,在一系列未指明的事件之後現在是4。兩個問題:
- 做市商獲得或損失了多少 MKR?
- 做市商獲得或損失了多少 ETH?
答案是:它獲得了 1 MKR,並損失了 4.5 ETH。請注意,此結果完全獨立於路徑拿。如果這些答案是正確的直接與一個買家從 5 到 4,如果有第一個買家接受,他們是正確的從 5 到 4.7 和第二個買家剩下的路到 4,他們甚至是正確的如果首先跌至 2,然後上漲至 9.818,然後再次下跌至 0.53,最後再次上漲至 4。
為什麼會這樣?看到這一點的最簡單方法是看看如果跌至 4 以下然後回升至 4,下跌過程中的賣出正好被上漲過程中的買入抵消;每次賣出都有相應的相同數量的買入,價格完全相同。但我們也可以從不同的角度看待做市商的核心機制來看到這一點。將做市商定義為具有一維內部狀態,並具有由以下公式定義的 MKR 和 ETH 餘額:

任何人都有權"編輯"(雖然僅限於 0 到 10 之間的值),但他們只能通過提供適量的 MKR 或 ETH 並取回適量的 MKR 和 ETH 來做到這一點,以便餘額仍然匹配;即做市商操作後持有的 MKR 和 ETH 的數量就是按照上述公式應該持有的數量,新的值為那是設定的。任何編輯沒有使餘額自動匹配的 MKR 和 ETH 交易失敗。
現在,任何一系列事件的下降從 5 到 4 也會將做市商的 MKR 餘額提高 1 並將其 ETH 餘額降低 4.5,無論它是什麼系列事件,應該看起來很簡單:


這意味著對保留這種路徑獨立屬性的做市商進行"儲備出血"攻擊是不可能的。即使一些巨魔成功製造了市場恐慌,將價格降至接近於零的水平,當恐慌消退,價格恢復到原來的水平時,做市商的頭寸將保持不變------即使價格和做市商的餘額,在此期間做出了一系列瘋狂的舉動。
現在,與其他持有策略相比,這並不意味著做市商不會賠錢。如果,當你開始時,1 MKR = 5 ETH,然後 MKR 價格變動,我們將在做市商中持有 5 MKR 和 12.5 ETH 的表現與僅持有資產的表現進行比較,結果如下所示:

持有平衡的投資組合總是獲勝,除非價格保持完全相同,在這種情況下,做市商和平衡投資組合的回報是相等的。因此,這類做市商的目的是補貼有保障的流動性,作為用戶的公共物品,充當最後的交易者,而不是賺取收入。但是,我們當然可以修改做市商來賺取收入,而且很簡單:我們讓它收取點差。也就是說,做市商可能會收取僅用於購買和報價出售。現在,成為做市商的受益者變成了一種賭注:如果從長遠來看,價格傾向於朝一個方向移動,那麼做市商就會虧損,至少相對於他們擁有平衡投資組合可能獲得的收益而言。另一方面,如果價格傾向於劇烈反彈但最終回到同一點,那麼做市商可以獲得可觀的利潤。這犧牲了"路徑獨立性"屬性,但是任何偏離路徑獨立性的方式總是對做市商有利。
路徑獨立的做市商可以採用許多設計;如果你願意創建一個可以發行無限數量單位的代幣,那麼"恆定準備金率"機制(其中對於一些恆定比率,代幣供應量為並且儲備大小是也算作一,前提是它被正確實現並且路徑獨立性不受邊界和捨入誤差的影響。
如果你想為現有代幣做一個沒有價格上限的做市商,我最喜歡的(歸功於 Martin Koppelmann)機制是保持不變的機制對於一些常數。所以公式是:

在哪裡是價格以。一般來說,你可以通過定義任何(單調)關係來創建路徑獨立的做市商並在任何時候計算其導數以給出價格。
以上僅討論了路徑獨立性在防止一種特定類型問題中的作用:攻擊者以某種方式在一系列價格變動的背景下進行一系列交易,以反復榨取做市商的資金。對於路徑獨立的做市商,這種"資金泵"漏洞是不可能的。但是,當然也可能存在其他類型的低效率。如果 MKR 的價格從 5 ETH 下降到 1 ETH,那麼上面示例中使用的做市商將損失 28 ETH 的價值,而平衡的投資組合只會損失 20 ETH。那 8 個 ETH 去哪兒了?
在最好的情況下,價格(即"真實"價格,所有用戶和交易者之間供需匹配的價格水平)迅速下跌,一些幸運的交易者搶購交易,獲得 8 ETH 利潤減去微不足道的交易費用。但是如果有多個交易者怎麼辦?那麼,如果塊之間的價格並阻止不同的是,交易者可以通過設置交易費用來相互競標,這一事實創造了全付費拍賣,收入歸礦工所有。由於收入等價定理,我們可以推斷,我們可以預期交易者發送到該機制的交易費用將繼續上升,直到它們大致等於所賺取利潤的大小(至少在最初;真正的均衡是讓礦工自己搶錢)。因此,無論哪種方式,像這樣的方案最終都是給礦工的禮物。
在這種設計中增加社會福利的一種方法是使創建購買交易成為可能,這些交易只有在礦工實際進行購買時才值得包括在內。也就是說,如果 MKR 的"真實"價格從 5 跌至 4.9,並且有 50 位交易者競相為做市商套利,而這 50 位交易者中只有第一個會進行交易,那麼只有那個人應該向礦工付款一筆交易費。這樣,其他 49 次失敗的交易就不會堵塞區塊鏈。計劃用於 Metropolis 的EIP 86為標準化這種有條件的交易費用機制開闢了道路(另一個好的副作用是,這也可以使代幣銷售更加不引人注目,因為類似的全付費拍賣機制適用於許多代幣銷售)。
此外,如果做市商是代幣的唯一可用交易場所,則還有其他低效率。例如,如果兩個交易者想要進行大量交易,那麼他們將需要通過一連串的小額買賣交易來進行,從而不必要地堵塞區塊鏈。為了降低這種效率,鏈上做市商應該只是可用的交易場所之一,而不是唯一的那個。但是,對於協議開發人員來說,這可以說不是一個大問題。如果最終需要一個促進大規模交易的場所,那麼其他人可能會提供它。
此外,這裡的論點只討論做市商的路徑獨立性,假設給定的起始價格和結束價格。然而,由於各種心理效應以及多重均衡效應,收盤價似乎不僅是影響資產"基本"價值的起始價格和近期事件的函數,也是交易模式的函數這是為了響應這些事件而發生的。如果發生價格下跌事件,並且由於流動性差,資產價格迅速下跌,它最終可能會恢復到比最初存在更多流動性時更低的點。也就是說,這實際上可能是支持補貼做市商的論據:如果存在這種乘數效應,那麼它們將對價格穩定產生積極影響,超出做市商本身提供的流動性的一階效應。
在確定哪個路徑獨立做市商是最優的方面可能需要做大量研究。也有可能混合半自動做市商具有相同的保證流動性屬性,但其中包括一些異步元素,以及運營商"插隊"並在以下情況下收取利潤的能力否則礦工將損失大量資金。對於各種目標而言,鏈上自動化擔保流動性到底有多少(如果有的話)是最優的,以及這些做市商應該得到補貼的程度和由誰補貼,目前還沒有一個連貫的理論。總而言之,鏈上機制設計空間仍處於早期階段,當然值得更廣泛地研究和探索各種選擇。












