探索漩渦建造者計劃
Orca
2022-06-09 08:49
本文约3911字,阅读全文需要约16分钟
為什麼是漩渦,為什麼是現在?答案就在本文。

查看

查看查看!)

帖子

帖子帖子

說到這裡,讓我們拋開……

Yutaro,首先:我們為什麼要基於漩渦池開發?

我們相信,漩渦池的基本結構將成為在Solana生態系統中創造流動性的主要方式:它將成為Solana中占主導地位的DEX。這是我們在過去6個月裡一直在開發的東西,我們在3月份發布了測試版。

與標準(或“恆定積產品”)流動性池相比,漩渦池有什麼優勢?

簡而言之,漩渦池給用戶提供了更好的交易體驗:既針對大量流動性的藍籌代幣(如SOL和USDC),也針對長尾代幣。

它在交易像SOL和USDC這樣的藍籌代幣時為用戶提供更好的體驗的原因是,流動性提供者對他們提供多少流動性有更多的控制,以及當交易員想要交易該交易對時,他們想要提供什麼樣的滑點。最重要的是這對流動性提供者來說更有效率。所以總的來說,他們可以分配更少的資金來為用戶提供更好的體驗。

漩渦池是Solana生態系統的一個偉大的構建模塊,它是多麼的強大,沒有單點故障,實際上幾乎不需要維護,讓我們說,為了確保它繼續運行。更具體地說,它不需要管理鍵來確保在極端流動性事件中需要調整參數。

漩渦池是一個fork還是一個現有智能合約的修改?

所有東西都是從零開始構建的,甚至包括數學庫,儘管它的靈感來自Uniswap v3引入的想法。如果你熟悉Uniswap v3,它會讓你對它的工作原理有所了解,儘管基於我們的設計理念和Solana虛擬機的獨特約束有一些關鍵的區別。

為什麼一切都要從零開始?原來的數學圖書館怎麼了?

在漩渦池智能合約中,我們需要做256位的計算。 Rust本身或在其標準庫中只支持128位的數學計算,實際上有一個256位的庫是為用Rust編寫的以太坊客戶端編寫的,叫做Parity。由於Parity已經是量產狀態,所以他們編寫的庫本身是安全的。很多其他項目都在使用它,但我們在使用時發現它非常昂貴。所以,做長乘法或長除法,通常需要花費10,000個計算單元來做一次乘法或除法。現在,根據Solana版本的不同,每條指令或每筆交易的計算單元最多可達20萬個。基本上,在用完之前你只能做10次tick traversals ,但你通常需要分配一些預算用於其他事情。

所以,我們不能做很多我們想做的算術。我們研究了一下發現很多乘法和除法並沒有優化。這對Parity來說可能並不重要,因為它基本上被編譯成可以直接在計算機上運行的東西。而對於我們來說,它需要在Solana虛擬機上運行。我們自己測試重新實現它,我們發現當我們自己重新實現這個庫時,成本要低5倍,效率要高5倍。這對我們來說是個有趣的彎路。 256位庫實際上被很多人使用,包括Solana實驗室的人寫的Solana程序庫,所以我們肯定會開源,這樣任何人都可以使用。

什麼是PDA,“以PDA為中心的設計”如何使漩渦池更高效?

PDA是程序衍生地址,在某種意義上是Solana獨有的。 Solana中的所有數據都存儲為一個帳戶,帳戶有一個與之關聯的地址,這個地址本質上是一個指向帳戶位置的指針。為帳戶生成這個地址的一種方法是隨機生成一個私鑰,派生與之相關聯的公鑰,然後使用該公鑰作為地址。另一種方法是使用PDA,它允許從創建帳戶的程序的地址派生地址,然後種子值,這些值通常在程序本身中定義。

這裡的關鍵是,它允許帳戶(在Solana中排序的數據)從程序本身包含的值或程序本身定義的值派生。我們可以將這些用作智能合約結構中非常漂亮和乾淨的屬性。

通常,我們假設有一個SOL/USDC池。在SOL/USDC池中,我們將有一個特定的帳戶。簡單的方法是由某個隨機私鑰生成帳戶,然後丟棄該私鑰,然後得到這個隨機帳戶。

有了漩渦池,我們可以從程序中以一種確定性的方式推導出它。所以我們可以說SOL/USDC池地址將從漩渦池程序派生,包括SOL和USDC的mint地址。這允許某人在漩渦池中確定任意一對的地址,而不需要知道除了漩渦池程序地址和配對的mint地址之外的任何東西。

這對於本質上沒有權限的池特別有用,因為它強制了這種不變量,即對於任何給定的交易對,只能有一個池。你真的不需要這個集中存儲每個已創建的池,或者你真的不需要掃描由程序創建的帳戶。您真正需要的是代幣的mint地址。你想交易,然後你得到池子地址,你可以在那裡交換。

為什麼要開源漩渦池智能合約?

開放源代碼允許開發人員、社區成員和其他所有人首先自己審查程序並理解它,以便在其上進行構建。

我們認為漩渦池是最基本的組成部分。有很多應用程序可以在它的基礎上構建,而開源是實現這一目標的第一步。我們很幸運地得到了Kudelski和Neodyme來審核我們的智能合同,所以我們很幸運地對開源合約感到滿意。

請告訴我們一些關於開源SDK的事情。

好啊,我也很高興能分享這些。

我們很幸運擁有一些出色的工程師,但我們早期的一名工程師的第一個任務便是為我們最初的AMM創造一個typescript SDK。他把它做得很出色,很高興看到人們對它有多喜愛,有多容易使用的一致反饋。我們也看到了它可以給我們帶來的價值,讓那些對使用AMM感興趣的人更容易使用它。我們基本上已經加倍完成了:我們基本上包裝了一個重構的漩渦池SDK和大量的文檔方面,它是如何工作的,因為與我們的舊池相比,漩渦池內部更複雜。

我們的另一個工程師,他在處理交易確認邏輯,我們已經看到了這些網絡擁塞問題。他開始深入調查,發現Solana SDK發送和確認交易的方式存在一些已知的問題。為此他做了一系列的改變,這非常有用。我們看到應用程序的響應性在使用它的過程中發生了巨大的變化。他還添加了一些其他的東西,比如讓它在同一時間簽署和發送多個交易更加有效。每個人的網絡請求都有很多低效的地方。

這些東西我們也包括在我們的SDK中,所以它們不只是針對Orca:它們也是Solana生態系統中任何人都可以使用的一般改進。

在接下來的幾個月裡,你希望看到在漩渦池的上面建造什麼?

也許我將從最可執行的想法開始,然後,也許我們可以花一點時間重複或一些更不切實際的想法。最基本的一個本質上是SOL/mSOL池和SOL/stSOL池的自動化策略。這些是Marinade和Lido的質押流動性代幣。

本質上,隨著時間的推移mSOL的價值應該始終以一種相當可預測的方式相對於SOL的價值增加。正因為如此,如果你在Whirlpools中提供流動性,隨著時間的推移,你會得到越來越多的SOL,因為這個交易對的價值越低質押的SOL就越少。

你能做的是,建立一個過程是可能的,這樣你就可以得到越來越多的純SOL,你可以質押在Marinade或者Lido去獲得流動性代幣,然後把它放回池中。你可以用一種自動的方式,你總是在最小的範圍內提供流動性,以最大化你賺取的費用。這似乎是一個相對簡單的想法。它肯定會比目前的方法更好,目前的方法要么是在更大範圍內提供流動性,要么是手動進行轉換。

另一個我認為很有趣的潛在方案是,我們拿一個借貸協議,以Solend為例。當您提供USDC或USDT時,您將獲得一些收益,因為您將代幣借出去。作為提供USDC或USDT的交換,您將得到這個被稱為C的代幣。它本質上只是你提供代幣作為抵押品的一個代幣,你將可以持續賺取收益。

有一件可能的事情是,除了USDC/USDT漩渦池,你可以創建一個cUSDC/cUSDT漩渦池。任何想要交易USDC和USDT的人都可以使用這個池,因為您可以自動接收任何交易USDC的人,將其轉換為cUSDC,將其放入池中,取回cUSDT,並在一筆交易中將其拆分成常規USDT。而對於流動性提供者而言,他們將通過出借代幣獲得收益同時還能獲得交易費用。

為什麼要啟動建設者計劃?

我們之前說過,我們認為漩渦池將成為Solana生態系統中的關鍵DEX。這也是一個相當靈活的結構,其他人也有很多機會在此基礎上構建自己的想法。因此,我們將有一個建造者計劃,將鼓勵和支持任何想要在漩渦池之上建造的人。為此,我們計劃有一定比例的Orca供應來支持它,當然,我們作為創始人和整個團隊將幫助支持任何想要建造它的人。我們也可以提供反饋。我想我一定會提出越來越多的想法,關於什麼可以建設。是啊,我真的很期待看到結果。

對於有興趣申請的新晉建設者,你有什麼建議嗎?

我認為第一件事就是請到我們的Discord上聊一聊——我們非常重視對開發者的支持。我們會關注文檔等內容,但直接與我們交談是了解產品和你可能存在的任何問題的好方法。

我想也許就產品創意而言,一種思考方式是,“有沒有什麼東西可以建立起來,使可持續的收益更有效地產生?”

就像我之前提出的想法:他們有一個元素,使它更容易產生已經存在的收益,但本質上只是讓它自動化。我認為有很多事情可以做,尤其是在Solana,因為交易更便宜那裡的設計空間更大。我很期待看到人們能想出什麼樣的點子。

謝謝你Yutaro!

帖子

帖子帖子。一起快樂地開發! 🐳

這篇文章改編自最近一集的OrcaPod。

Orca
作者文库