構建分散式系統帶來了傳統軟件開發中不常見的新挑戰。 “快速行動,打破常規”的格言已經不再是一個可行的策略,因為我們已經一次又一次地看到,即使是一個關鍵的安全漏洞,也很難從一個項目中恢復。此外,這些協議的成功取決于經濟激勵措施的設計,鼓勵不同類型用戶之間的均衡參與和增長,從而創造一個最終將產生價值的多邊市場。這些獎勵結構一旦部署就很難修改,因為沒有集中的進行管理。
Gauntlet正在構建一個基于代理的仿真平臺,以幫助開發人員驗證他們的協議設計,理解不同參數之間的權衡,并確保應用程序能夠抵御壞角色的攻擊。我們最近發布了另一篇博客文章,對我們的系統進行了更全面的概述。
這篇文章將重點介紹從2019年初開始的Gauntlet和computable團隊的一些經驗教訓,當時我們在Gauntlet平臺上合作設計了一個定制場景來優化他們的儲備合同參數。通過利用我們的工具和仿真結果,Computable團隊隨后能夠快速迭代并驗證在最初執行合同時對一些激勵機制的更健壯的設計。仿真分析一直是Computable測試和改進協議計劃的一部分,他們選擇使用Gauntlet平臺來實現這個目標。
注意:Computable剛剛發布了一個新的白皮書,其中包含了許多機制和術語的更改。本文所描述的仿真模型是在原模型的基礎上建立的。為了避免混淆,我們將在下面列出一些差異。
可計算的協議
Computable的目標是創建一個分散的數據市場,鼓勵大規模的高質量數據集的管理,同時圍繞數據隱私和使用提供信任和透明度。該協議的目標是要足夠靈活,以適應不同行業應用程序的數據市場。例如,某些市場可能擁有少數大型參與者擁有大部分相關數據的特性,而其他數據市場的成功可能取決于許多個人用戶在一段時間內的貢獻。每個數據集都有一個與之相關聯的唯一代幣來激勵成長,網絡中的參與者或“代理”被分為以下角色:
· 買方-表示對數據的需求。付費查詢數據集
· 數據信任 – 提供用于執行查詢的計算資源
· 制造商 – 以上市形式向數據市場提供數據銷售
· 贊助人 – 提供初始資本,以激勵制造商提供數據
確定列表是否有效的機制類似于Token-Curated Registry(代幣注冊表)。TCR投票的動態可以類似于其他區塊鏈系統,如權益證明共識。然而,在這篇文章的其余部分,我們將重點關注與可計算協議更具體的宏觀特性。
粘合曲線
由于每個數據集都有自己的代幣,所以存在一個引導問題,因為這些代幣的流動性有限,而且很難估值。粘合曲線是一種在買入/賣出時確定代幣價格的合約,并作為代幣的自動做市商,以鼓勵早期參與。下圖說明了如何使用粘合曲線發出代幣。請注意,有單獨的買入/賣出曲線,其中賣出價格低于買入價格,以阻止短期價格操縱,同時允許有機價格發現和流動性,因為市場參與者可以同意在兩條曲線之間以任何價格交易代幣。
Computable使用粘合曲線在客戶將加密貨幣存入儲備時發出代幣,在向制造商發出代幣以提供數據時發出代幣。在本文的其余部分中,我們將使用術語“網絡代幣”來表示存儲在儲備中的代幣。實際上,網絡代幣可以是原生于可計算協議的代幣,并在多個數據市場之間共享,也可以是原生于底層區塊鏈(例如ETH)的代幣。
在此分析中,我們使用的線粘合曲線定義如下:
support_price = conversion_rate + conversion_slope * reserve
withdraw_price = reserve / total_supply,
其中support_price為買入價格,withdraw_price賣出價格,reserve為粘合曲線上鎖定的貨幣總價值,total_supply為粘合曲線上發行的市場代幣總數。
代理模型
買方——我們對查詢數據的總體需求建模。這種需求是通過在每個模擬時間步驟中對查詢進行支付的形式實現的。需求是數據集中列表數量的函數,具有預定義的上限(市場大小)和每個時間步長的有界增長率。查詢數據(以網絡代幣形式)的費用分成如下:
· datatrust_rate_network——以網絡代幣形式表示的datatrust代理查詢費用的百分比。
· reserve e_fee_network—以網絡代幣的形式進入市場合約準備金的百分比,它增加了支持和撤回價格。
· maker_fee_network—在網絡代幣中列出所有者的百分比。在我們的模型中,這部分在所有清單中平均分配。如果上市公司不再為制造商所有(見下文convert_listing),那么其股票將進入市場儲備。[注]:該參數已從協議中刪除,制造商付款現在只使用市場代幣。
· maker_fee_market—在市場代幣中列出所有者的百分比。該組件在所有列表中平均分配,并被鎖定(參見下面的convert_listing),以鼓勵長期的創客參與。這部分費用是通過按粘合曲線的支持價格鑄造(創建)市場代幣來支付的,而且是通貨膨脹的,因為它在不增加準備金的情況下增加了市場代幣的供應。
Datatrust——如果他們收到的費用大于他們計算的邊際成本,這些代理將處理查詢。
Maker—我們假定制造者的數量是有上限的(即只有那么多的參與者擁有高質量的數據可貢獻給數據集),并且希望列出其數據的制造商的數量取決于上市的預期用途。我們還假設每個制造商最多只能有一個上市。制造商可以采取以下行動:
List——申請在數據集中列出,以獲得查詢收入的一部分。被列出的預期效用可以建模為:
(maker_fee_network + maker_fee_market * demand_t) / num_listings_t * DF + listed_reward * divest_price_t - listing_cost,
T是查詢收入的時間,num_listings_t是t的清單數,,DF是代理應用于未來收益的折現因子,listed_reward是上市時收到的市場代幣數量,divest_price_t是粘合曲線給出的售價,listing_cost是與創建列表相關的開銷或反sybil成本。
· convert_listing—制造商可以將上市的所有權轉移到市場合同,以解鎖上市中的市場代幣(fromlisted_reward和maker_fee_market),但需要放棄未來的查詢收入。如果鎖定代幣的投資回報率(ROI)低于代理的convert_roi,制造商將這樣做。制造商的ROI可以通過在一個觀察窗口上使用所收到的股息(包括市場代幣)的價值,除以鎖定的市場代幣的市場價值,并轉換為年化回報來估計。[注]:該函數不再是協議的一部分。目前的協議不再要求制造商放棄上市公司的所有權。
Patron -可以通過綁粘合曲線購買或出售市場代幣:
· support—以粘合曲線給出的support_price購買代幣。如果取款價格的風險調整回報率大于代理的support_roi閾值,并且預期的盈虧平衡時間(因為support_price_t》取款價格)小于代理的support_breakeven時間,那么客戶將購買代幣。
· withdraw-以粘合曲線給出的提取價格出售代幣。如果取出價格的風險調整回報率低于代理取款的roi閾值,客戶將出售代幣。
模擬環境
我們的仿真平臺是圍繞一個基于agent的模型構建的,在這個模型中,用戶可以指定網絡的初始條件,包括agent行為的分布和特定于agent的參數。我們通常遵循拜占庭-利他-理性(BAR)模型來描述代理行為。模擬的每個時間步長包括:
· 更新環境狀態變量
· 引入新的代理
· 為正在考慮的每個操作評估代理實用程序函數,并執行那些具有最高實用程序的操作
對于以上的分析,我們做出如下假設:
· 買方的最大需求(即市場規模)是每年100,000個網絡代幣
· 為了提高性能,制造商的最大數量為25,每個制造商只能有一個清單,而listed_reward是3個網絡代幣
· 有5個初始用戶,每個用戶貢獻1000個網絡代幣
· 80%的創造者是理性的(上面描述的行為/效用),剩下的20%是利他的(不會嘗試convert_listing)
· 我們運行每個模擬場景5年,即1825個時間步長
發現
制造商的補償
我們對maker_fee_network和maker_fee_market的不同值進行了仿真,以探索不同的收費結構對創客行為的影響。reserve e_fee保持不變,查詢收入的其余部分支付給datatrust代理。回想一下,maker_fee_market是查詢收入的一部分,它以市場代幣形式支付,并鎖定起來以鼓勵長期參與。在下面的圖中,每個方塊代表了模擬的獨立運行,而顏色代表了rational制造者所捕獲的查詢總收入的百分比。
一些觀察:
· 當maker_fee_network + maker_fee_market過高時,網絡無法創建值,因為datatrust_fee不夠高,無法覆蓋運行計算的邊際成本。
· 當maker_fee_network + maker_fee_market過低時,該網絡也不能產生顯著的價值,因為創客會快速轉換他們的列表,或者一開始就沒有足夠的動力來上市。
· 在這些參數化下,maker_fee_market似乎對制造商沒有長期的好處。在保持maker_fee_network不變的情況下,增加maker_fee_market對增加制造商效用的影響很小,而且在某些情況下,效用實際上會略有下降。
從長遠來看,maker_fee_market的增長一般不會給制造商帶來多大好處,這一結果肯定有點違反直覺。經過仔細觀察,我們意識到這樣做是有道理的,原因如下:
· 一旦買方需求趨于穩定,maker_fee_market將繼續增加鎖定在上市中的代幣的價值,同時營收保持不變。這意味著上市公司的投資回報率將繼續下降,在某一時刻,制造商將轉換上市公司,用未來的收入換取流動性。
· maker_fee_market是通貨膨脹(增加市場代幣供應,但不增加儲備)。在隨后的模擬中,當制造商擁有大部分市場代幣時(相對于初始用戶),每個制造商的保留所有權所占的比例不會增加太多。
· 大多數粘合曲線參數化的結果是,當供給較大時,支撐價格顯著大于退出價格,因此轉換效率較低,導致maker_fee_market對maker ROI的總體貢獻相對于tomaker_fee_network較小。
在這三個因素中,我們懷疑粘合曲線的形狀可能影響最大,所以我們決定進一步挖掘。
在原來的粘合曲線公式中,support_price與取款價格的關系不是很緊密,所以我們決定更新support_price的定義。我們現在將曲線定義為:
support_price = conversion_rate + support_multiplier * reserve / max(1, total_supply)
取款價格=儲備金/總供應量
我們重新運行上述分析,得到如下結果:
現在看來maker_fee_market參數實際上是有用的!增加maker_fee_market實用理性的制造商,我們會看到對于一個給定的制造費用分配(maker_fee_network + maker_fee_market),最好是平分市場網絡和組件之間的非純粹的代幣。注意,在使用市場代幣支付時,制造商和用戶之間仍然存在權衡,因為maker_fee_market會稀釋初始用戶。
粘合曲線分析
該協議的成功與否,取決于最初的贊助者向儲備基金投入大量資金,以激勵制造商列出數據。如果提現價格超過最初的投資價格,顧客最終會獲利。我們對新的粘合曲線的參數conversion_rate和support_multiplier進行了仿真。在下面的圖中,每個方塊代表模擬的獨立運行,顏色代表初始用戶獲取的查詢總收入的百分比。
一些觀察:
· 高support_multiplier有利于初始用戶,因為它限制了在生成市場代幣時的稀釋
· 當conversion_rate過高時,網絡在我們為初始用戶設置的時間限制內不能生成足夠的值,使其在初始存款上實現收支平衡
· 當conversion_rate和support_multiplier過低時,網絡無法生成任何值,因為首先沒有足夠的動機促使制造商加入
結論
Computable的模擬工作促使對初始協議設計進行了許多更新,包括改進的粘合曲線和簡化的Maker payment和convert_listing接口。在此過程中,我們還確定了要優化的關鍵參數、與不同參數化相關的權衡,以及完全不同的機制可以更有效地實現預期結果的領域。希望這是一個令人信服的例子,讓你能清楚的知道模擬是如何指導協議設計過程的!
在單一數據市場的背景下,仿真允許我們將機制設計分析為一個分布式約束優化問題。更廣泛地說,該框架可以生成一組參數和初始條件的參考集,這些參數和初始條件是為具有各種不同屬性和行業應用程序的數據市場提供服務的。我們的目標是設計一個最大化買方需求的系統,同時以一種統計上可驗證的方式保持數據提供者、制造商和用戶之間的公平激勵。
經濟激勵對于區塊鏈應用程序的長期安全性和成功至關重要。在不進行仿真的情況下對激勵機制設計進行推理是很棘手的,因為網絡的突發性很難從局部變化中預測出來,而且為了得到易于處理的結果的解決方案,人們常常對用戶行為做出過于簡單的假設。基于代理的模擬可以是一個有價值的工具,幫助開發人員驗證安全性假設,并了解如何隨著時間的推移為網絡參與者創建價值。
評論
查看更多