前言
去中心化应用(dApp)是构建在区块链技术上的应用程序,具有去中心化、透明、安全的特性。dApp 开发需要掌握区块链技术、智能合约编写、前端和后端开发等多个领域。
如果不懂区块链,不会智能合约开发、也不会前后端。别担心,看此文就对了,按照本教程步骤操作可以快速搭建属于你的 dApp 项目。
学习路线图
效果截图
项目结构
技术栈
Vue3
:是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。Typescript
:是由微软进行开发和维护的一种开源的编程语言。TypeScript 是 JavaScript 的严格语法超集,提供了可选的静态类型检查。Ethers.js v6
:是一个强大的 JavaScript 库,用于与以太坊区块链进行交互。 它提供了丰富的 API,使得开发者能够轻松地发送交易、读取数据、与智能合约交互等。Hardhat
:是一个用于开发以太坊智能合约和 dApp 的开发框架和工具套件。提供了一套功能强大的工具,用于编译、部署、测试和调试智能合约,并与以太坊测试网络进行交互。Ganache
:是一个以太坊的个人开发环境,你可以在上面部署合约、开发程序和进行测试。它有桌面版本和命令行工具版本,同时提供对 windows 、Mac 和 Linux 的支持。Solidity
:是一种高级的、面向合约的编程语言,用于在以太坊虚拟机 (EVM) 上构建智能合约。它受到 C++、Python 和 JavaScript 的影响,并与这些语言共享语法和编程概念。Metamask(小狐狸)
:是用于与以太坊区块链进行交互的软件加密货币钱包。它可以通过浏览器扩展程序或移动应用程序让用户访问其以太坊钱包,与去中心化应用进行交互。Element Plus
:是一个基于 Vue 3 的高质量 UI 组件库。它包含了丰富的组件和扩展功能,例如表格、表单、按钮、导航、通知等,让开发者能够快速构建高质量的 Web 应用。Remix IDE
:是一款可以在线快速编写、调试和部署合约代码的编辑器,完全在浏览器环境中运行,方便易用,非常适合智能合约开发初学者使用。
功能模块
- 钱包登录
- 查询余额
- 我要提款
- 发布消息
- 消息列表
准备工作
- NodeJS 版本v18+
- VSCode 代码编辑器
- 安装Metamask浏览器钱包插件(需要科学上网):metamask.io/download/
环境搭建
构建项目
1 | bash复制代码yarn create vite vue3-dapp-demo |
1 | bash复制代码cd vue3-dapp-demo |
初始化合约
在根目录新建文件夹my_contact
,作为合约项目文件夹。安装hardhat
依赖需进入此文件夹后运行如下命令:
1 | bash复制代码cd my_contact |
安装成功后,接下来创建简单的hardhat项目
,在之前创建好的my_contact
文件夹中运行如下命令:
1 | bash复制代码npx hardhat init |
让我们创建 JavaScript 或 TypeScript 项目,并完成这些步骤来编译、测试和部署示例合约。我们建议使用 TypeScript,但如果您不熟悉它,只需选择 JavaScript。
初始化hardhat项目完成后,再运行npx hardhat & npx hardhat help
命令,会看到相关帮助信息如下图所示:
contracts
:存放智能合约文件的目录ignition
:存放部署智能合约文件的目录test
:存放单元测试智能合约文件的目录hardhat.config.ts
:Hardhat 配置文件,查看详细配置信息请移步到此:hardhat.org/hardhat-run…
1 | bash复制代码# 编译合约 |
1 | bash复制代码# 测试合约 |
1 | bash复制代码# 部署合约 |
1 | bash复制代码# 强制编译合约 |
将 Metamask 或 Dapp 连接到 Hardhat 网络
本地网络部署
1 | bash复制代码# 启动本地节点 |
打开 Metamask 手动添加本地网络,如下图所示:
本地网络添加成功后,根据现有的20个测试账户,复制某个账户私钥,打开 Metamask 选择添加账户按钮,导入私钥添加新账户,如下图所示:
1 | bash复制代码# 部署本地网络 |
测试网部署(推荐)
下载安装 Ganache
如需详细了解Ganache
工具的安装和使用,请移步到此:54web3.cc/blog/induct…
修改配置文件hardhat.config.ts
代码实现
编写合约
1 | js复制代码// 创建合约文件:contract/TodoContract.sol |
编译合约
1 | bash复制代码npx hardhat compile |
通过编译合约文件,我们会得到 Bytecode(字节码
)和 ABI( Application Binary Interface
)通过 ABI 可与已经部署的合约进行交互。
创建部署文件
1 | js复制代码// ignition/modules/TodoContract.ts |
部署合约命令
1 | bash复制代码npx hardhat ignition deploy ./ignition/modules/TodoContract.ts --network ganache |
在线测试合约
在线打开Remix IDE 以太坊智能合约开发工具,创建合约文件TodoContract.sol
,将写好的合约代码复制粘贴进来,保存后会自动编译。
前端开发
钱包登录
1 | js复制代码// 如需获取完整代码,文末附 github 仓库下载地址 |
1 | js复制代码// 监听钱包账户变化 |
查询余额
1 | js复制代码// 导入 ABI 接口文件 |
我要提款
1 | js复制代码const getWithdraw = async () => { |
发布消息
1 | js复制代码const publishMsg = async () => { |
消息列表
1 | js复制代码// 获取消息列表 |
结语
dApp 开发是一项综合性的工作,需要掌握多个领域的知识。通过学习不同平台和工具的文档、参与实际项目,以及不断改进和总结经验,你可以逐步成为一名优秀的 dApp 开发者。后续会输出一系列完整的 dApp 实战项目开发练习教程,涉及到技术栈有 React、Next.js、Wagmi、Vue3、Nuxt.js 等等。如果此文对看官们有一丢丢帮助,请点个赞👍或分享支持一下。
github 仓库:github.com/jackchen012…
参考资料
- Metamask 入门教程
- Vue3 官网
- Web3 研习社
- Vite 官网
- Hardhat 官网
- Ganache 入门教程
- Solidity 中文文档
- Ethers.js 英文文档
- Remix IDE 入门教程
本文转载自: 掘金