🎉 #Gate Alpha 第三届积分狂欢节 & ES Launchpool# 聯合推廣任務上線!
本次活動總獎池:1,250 枚 ES
任務目標:推廣 Eclipse($ES)Launchpool 和 Alpha 第11期 $ES 專場
📄 詳情參考:
Launchpool 公告:https://www.gate.com/zh/announcements/article/46134
Alpha 第11期公告:https://www.gate.com/zh/announcements/article/46137
🧩【任務內容】
請圍繞 Launchpool 和 Alpha 第11期 活動進行內容創作,並曬出參與截圖。
📸【參與方式】
1️⃣ 帶上Tag #Gate Alpha 第三届积分狂欢节 & ES Launchpool# 發帖
2️⃣ 曬出以下任一截圖:
Launchpool 質押截圖(BTC / ETH / ES)
Alpha 交易頁面截圖(交易 ES)
3️⃣ 發布圖文內容,可參考以下方向(≥60字):
簡介 ES/Eclipse 項目亮點、代幣機制等基本信息
分享你對 ES 項目的觀點、前景判斷、挖礦體驗等
分析 Launchpool 挖礦 或 Alpha 積分玩法的策略和收益對比
🎁【獎勵說明】
評選內容質量最優的 10 位 Launchpool/Gate
Uniswap合約開發七大技巧 新手必讀指南
Web3新手指南:Uniswap合約開發技巧分享
最近在編寫一個去中心化交易所開發教程時,參考了Uniswap V3的代碼實現,學到了很多有趣的知識點。作爲第一次嘗試開發Defi合約的開發者,這些技巧對想要學習合約開發的新手會很有幫助。
可預測的合約部署地址
通常部署的合約地址看起來是隨機的,因爲與nonce有關。但在某些情況下,我們需要通過交易對和相關信息推斷出合約地址。Uniswap使用CREATE2的方式創建合約,添加salt參數使得生成的地址可預測。新地址的生成邏輯爲:hash("0xFF",創建者地址, salt, initcode)。
巧用回調函數
在某些場景中,合約間的互相調用非常有用。例如,當調用某交易平台的swap方法時,它會回調swapCallback,傳入實際需要的Token數量。調用方需在回調中將所需Token轉入交易池,確保整個交易邏輯的完整性和安全性。
利用異常傳遞信息
在預估交易時,某些平台通過try catch包裝swap方法的執行。由於預估不會實際產生Token交換,會觸發錯誤。通過在回調函數中拋出特殊錯誤,然後捕獲並解析錯誤信息,可以獲取所需數據。這種方法避免了爲預估交易而改造swap方法的需求。
大數運算保證精度
在涉及價格和流動性計算時,爲避免除法操作導致的精度損失,可以使用左移操作(相當於乘以2^96)。這樣在正常交易不溢出的情況下能保證精度。雖然理論上仍存在微小的精度損失,但已可以接受。
Share機制計算收益
爲節省Gas消耗,不能在每次交易時爲每個流動性提供者記錄手續費。可以記錄總手續費和每個流動性應分配的手續費,LP提取時根據持有的流動性計算可提取的手續費。這類似於股票分紅機制。
合理利用鏈下數據
並非所有信息都需要從鏈上獲取。例如,交易池列表、交易池信息等可存儲在傳統數據庫中,定期從鏈上同步。某些區塊鏈RPC供應商提供了高級接口,可更快速、經濟地獲取數據。
合約拆分與標準合約應用
項目可能包含多個實際部署的合約,或通過繼承方式將單個合約拆分爲多個。利用現有標準合約(如ERC721)可提高開發效率。例如,某些平台使用ERC721合約來管理頭寸,既方便管理又提高了開發效率。
實踐是最好的學習方法。嘗試實現一個簡易版去中心化交易所,可以更深入理解主流DEX的代碼實現,學習到更多實際項目中的知識點。建議感興趣的開發者參考相關開源課程,一步步完成簡易版交易所的開發。