本节作者：[@愚指导](https://x.com/yudao1024)

---

## 为什么要开发《DEX 开发实战》这一章课程

在前面的两个章节《新手入门》中，我们帮组大家理解了 DApp 开发的一些基础点，帮助前端开发尝试智能合约开发，帮助非前端开发搭建了一个前端 Demo。但是对于一个真正的 DApp 来说，这完全不够。

首先，真正要上到生产环境的合约通常需要更好的设计和更严格的测试，也要考虑开发效率和质量。很多合约也会更复杂，通常涉及到多个合约的调用、合约的代理和升级，会需要合约的拆分和组合，会需要更多的安全性保障。

其次，对于前端部分也需要更好更完整的体验，我们需要更好的交互设计，更好的用户体验和更好的可用性。

最后，对于一个真正的 DApp 来说，因为涉及到具体的业务场景，往往涉及了一些特定的概念，尤其是对于金融类的 DApp，我们需要更多的专业知识。

所以，我们在前面课程的基础上继续完善我们的 DApp 开发课程，希望通过带领大家完成一个去中心化交易所（DEX）的开发实战，帮助大家更好的理解 DApp 开发的全貌。

## 这部分课程会有什么内容？

这部分课程会带领大家完成一个去中心化交易所（DEX）的开发实战，我们会从去中心化交易所的分析开始，然后会讲解 Uniswap 的代码，继续带领大家完成一个 Wtfswap 的合约设计，最后完成一个 Wtfswap 的前端开发。

我们会每周更新 1~2 篇课程，直到完成这部分内容。最终我们可以得到一个理论上可以使用的 DEX，并部署到某个 L2 上供大家体验。

## 为什么选择 DEX

金融是当下 Web3 中应用最广泛，最活跃的场景。去中心化交易所（DEX）是其中最重要的一环，也是最具有代表性的一环。通过完成一个 DEX 的开发实战，我们可以更好的理解 DApp 开发的全貌，也可以更好的理解金融类 DApp 背后涉及到的一些专业知识。

相比传统的业务场景开发，DEX 会涉及到 AMM（自动做市商）、LP（流动性资金池）等专业知识，更具有代表性。

## 这部分课程适合什么人学习？

这部分课程适合有一定 DApp 开发基础的开发者，如果你已经完成了前面的课程，那么你已经具备了一定的 DApp 开发基础。如果你还没有完成前面的课程，建议你先完成前面的课程。

当然，如果你已经有了一定的开发基础，你也可以直接从这里开始。其中涉及到的部分内容如果不理解可以再跳转到前面部分的课程进行学习。

## 如何学习这门课程？

P001 到 P003 这部分课程介绍了 DEX 的基本概念，以及 Uniswap 的代码分析。这部分内容可以直接阅读，作为前期的准备。对于 Uniswap 代码解析部分的细节如果不是很理解可以先跳过，后续实战课程你会在实战中对 Uniswap 的代码更好的理解，因为我们整体也会参考 Uniswap V3 的代码开发。

P101 和 P102 讲了初始化合约的框架，这部分可以按照课程的步骤一步一步的完成，直接使用课程提供的代码。

P103 到 P109 讲了合约的具体实现，你可以选择先不看课程自己尝试实现，然后再回头参考课程的实现，也可以按照课程的代码一步一步自己实现。如果你时间有限，你也可以选择直接阅读课程的最终[合约代码](https://github.com/WTFAcademy/WTF-Dapp/tree/main/demo-contract)参考课程学习。当然，我们更推荐前者，一步一步自己实现更有助于在编码过程中有更多的思考。

P201 到 P211 部分则是前端代码，具体的学习方案和合约部分类似，你按照你自己的诉求和时间选择学习方案。

我们非常鼓励在学习过程中发现任何课程的疏漏可以提交 [ISSUE](https://github.com/WTFAcademy/WTF-Dapp/issues) 反馈给我们或者提交 [Pull Request](https://github.com/WTFAcademy/WTF-Dapp/pulls) 直接修改，有好的经验也可以提交 [Pull Request](https://github.com/WTFAcademy/WTF-Dapp/pulls) 提交到《经验手册》部分。
