📢 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的代码实现,学习到更多实际项目中的知识点。建议感兴趣的开发者参考相关开源课程,一步步完成简易版交易所的开发。