开发者硬核:Web3 DApp 最佳编程实践指南
2022-10-29 09:33:00 人浏览

本文作者郭宇,Checks Finance、CodeforDAO创始人,原文链接:https://guoyu.mirror.xyz/RD-xkpoxasAU7x5MIJmiCX4gll3Cs0pAd5iM258S1Ek

自宣布进入创业间隔年以来,CodeforDAO(GitHub)与ChecksFinance(@checksfinance)两个项目进入了密集而紧张的迭代周期,在合约编写,单元测试,工作流自动化,前端与客户端方面都遇到了较多问题,对此,我总结出了一些经验。当前这两个项目还有大量细节等待优化,尚未正式 landing,我认为将开发过程中的经验和总结与大家进行分享,能帮助更多工程师转向 Web3,也有助于项目的长远发展。

这篇文章将会涉及到开发一个DApp 所涵盖的几乎所有方面内容,因此,它会非常冗长繁琐,如果你对某一方面特别感兴趣,我建议你可以通过下边这个目录直接跳去感兴趣的章节阅读。另外,这篇文章并不是 Step by Step 的代码教学范例,因此,跳跃章节阅读并不会影响体验。

  • 1. 认识 DApp 技术栈

  • 2. 智能合约编码

  • 3. 开发工作流与单元测试

  • 4. 前端与客户端开发

  • 5. 开发、测试与生产环境调试

  • 6. 服务端编码与集成

  • 7. 合约部署方案 L1s & L2

  • 8. 去中心化储存方案

  • 9. 附录

认识 DApp 技术栈

与传统的 App(包括Web App 与 Mobile App)最大的不同点在于,DApp 的大量功能依赖直接与智能合约(以下简称合约)进行交互。我们无法直接使用前端代码调用合约,因此,在开发 DApp 之前,我们必须理解这一技术栈中存在哪些技术细节以及它们分别扮演何种角色。

  • 智能合约:通常指代运行在EVM 兼容网络中的 Solidity 或其他合约语言代码,他们负责与用户交易我们发行的资产并储存 DApp 的链上状态。

  • DApp:整合合约接口以及其他功能的应用程序界面,目前,它们大部分是Web App,你可以用流行的框架例如 React/Vue 来进行编写。

  • Provider/Signer: 这是一个 DApp 架构中特殊的角色,它负责与区块链进行通信,并进行合约的读/写操作。Metamask 是一个流行的InjectProvider(Web3Provider)你也可以使用其他 JSON-RPC Provider与区块链进行通信。

  • Relay: 这个角色隐藏在Provider/Signer 之后,是真正负责我们与区块链的某一个节点同步状态的服务器集群,它保存了所有账本(全节点)它通常是 Infura、Alchemy、Quicknode、Moralis 或者 Pocket 提供的服务。

  • 服务端(可选):大部分 DApp 仍然有他们的服务端逻辑,这意味着,你需要自己搭建服务环境,或使用流行的 BasS/FaaS 服务,你可以使用深度整合区块链的Moralis 来完成服务端的开发,也可以使用成熟的 Firebase 体系。当然,你也可以挑战完全不依赖服务端的方式来构建 DApp,就像 Uniswap 所做的那样。

本资讯链接: - 数字领地
声明:投资有风险,入市须谨慎。本资讯不作为投资理财建议。