📢 Gate廣場獨家活動: #PUBLIC创作大赛# 正式開啓!
參與 Gate Launchpool 第 297 期 — PublicAI (PUBLIC),並在 Gate廣場發布你的原創內容,即有機會瓜分 4,000 枚 $PUBLIC 獎勵池!
🎨 活動時間
2025年8月18日 10:00 – 2025年8月22日 16:00 (UTC)
📌 參與方式
在 Gate廣場發布與 PublicAI (PUBLIC) 或當前 Launchpool 活動相關的原創內容
內容需不少於 100 字(可爲分析、教程、創意圖文、測評等)
添加話題: #PUBLIC创作大赛#
帖子需附帶 Launchpool 參與截圖(如質押記錄、領取頁面等)
🏆 獎勵設置(總計 4,000 枚 $PUBLIC)
🥇 一等獎(1名):1,500 $PUBLIC
🥈 二等獎(3名):每人 500 $PUBLIC
🥉 三等獎(5名):每人 200 $PUBLIC
📋 評選標準
內容質量(相關性、清晰度、創意性)
互動熱度(點讚、評論)
含有 Launchpool 參與截圖的帖子將優先考慮
📄 注意事項
所有內容須爲原創,嚴禁抄襲或虛假互動
獲獎用戶需完成 Gate廣場實名認證
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的代碼實現,學習到更多實際項目中的知識點。建議感興趣的開發者參考相關開源課程,一步步完成簡易版交易所的開發。