Men6d656e/06_buy_me_a_cofe-by_my_self

GitHub: Men6d656e/06_buy_me_a_cofe-by_my_self

基于 Solidity 与 Foundry 构建的 Web3 小费与留言去中心化应用,提供从智能合约部署到前端交互的完整全栈开发示例。

Stars: 0 | Forks: 0

## 📌 项目简介 一个完整的 Web3 dApp,允许任何人向合约所有者发送小费(ETH)并附上一段简短的留言。项目采用现代的 **Neo-Brutalist** UI 和经过高度优化的 Solidity 智能合约构建。该项目注重易用性、清晰的逻辑分离以及专业的构建自动化。 ## 🏗️ 架构概述 项目在结构上分为后端(智能合约)和前端(UI)。 1. **智能合约 (`src/`, `test/`, `script/`)**: - 使用 **Foundry** 构建和测试。 - `BuyMeACoffee.sol`: 包含用于接收付款、在链上存储留言以及允许所有者提取资金的核心逻辑。 - 脚本负责将地址自动同步至前端。 2. **前端 (`frontend/`)**: - 原生 JavaScript + `ethers.js` v6,通过 MetaMask 直接与区块链交互。 - 基于 TailwindCSS 的 Neo-brutalist 样式设计。 ## ⚙️ 前置条件 要在本地计算机上运行此项目,您需要: - 已安装 [Foundry](https://getfoundry.sh/) (Forge, Anvil, Cast)。 - [Node.js](https://nodejs.org/en/) 和 `npm`(用于使用 `serve` 运行前端本地服务器)。 - [Python 3](https://www.python.org/)(用于提供前端服务的替代方案)。 - 一个浏览器钱包,例如 **MetaMask**。 ## 🚀 如何在本地运行(新手指南) 按照以下步骤部署您的本地测试网并连接您的前端! ### 1. 启动本地区块链 我们使用 `anvil` 来运行一个快速的本地 Ethereum 节点。打开一个新的终端并运行: ``` make anvil ``` *(保持此终端运行。它会提供 10 个测试账户,每个账户均预置了 10,000 ETH。)* ### 2. 部署智能合约 在另一个单独的终端中,将智能合约部署到您的本地 Anvil 节点: ``` make deploy-anvil ``` **神奇之处:** 此脚本会自动将新生成的合约地址直接同步到 `frontend/constants/contractAddress.js` 中,并复制 ABI,让您的前端能够准确知道在哪里进行查找! ### 3. 启动前端应用 您可以使用 Node.js 或 Python 来提供前端服务。运行以下命令中的**任意一个**: ``` # 使用 Node.js(通过 'serve' npm package) make serve-node # 或者使用 Python 3 make serve-python ``` 应用程序将可以通过 `http://localhost:3000` (Node) 或 `http://localhost:8000` (Python) 访问。 ### 4. 连接您的钱包 - 打开 MetaMask,点击网络下拉菜单,然后选择 **Localhost 8545**。 - 导入由您的 `anvil` 终端(在第 1 步中)提供的其中一个私钥。这非常关键,因为您的常规账户中没有任何本地 ETH! - 在 dApp 上点击 **"Connect Wallet"**。 - 如果您导入了账户 #0(部署者账户),您将看到 **Admin Zone** 出现,允许您提取所有作为小费收到的资金。 ## 🛠️ Makefile 命令速查表 本项目利用 `Makefile` 将复杂的命令简化为单个关键词: - `make build`: 编译 Solidity 合约。 - `make test`: 在 Foundry 中原生运行自动化测试套件。 - `make anvil`: 启动本地 Ethereum 测试网。 - `make deploy-anvil`: 将合约部署到 Anvil 并同步地址/ABI。 - `make deploy-sepolia`: 部署到 Sepolia 测试网(需要 `SEPOLIA_RPC_URL` 和 `PRIVATE_KEY` 环境变量)。 - `make serve-node`: 通过 npm `serve` 在 `localhost:3000` 上启动前端。 - `make serve-python`: 通过 Python 的 HTTP server 在 `localhost:8000` 上启动前端。 ## 🐛 常见错误排查 - **`could not decode result data (BAD_DATA)`**: 这意味着您的前端正在查看一个没有任何代码的合约地址。您是否重启了 `anvil`?如果是,您必须在 `anvil` 运行时再次运行 `make deploy-anvil` 重新部署。 - **`insufficient funds for gas * price + value`**: 您正在使用的 MetaMask 账户在本地网络上的 ETH 数量为 0。请确保您导入了由 `make anvil` 命令生成的账户之一。 - **RPC Error / 钱包无法连接**: 确保 MetaMask 设置为 `Localhost 8545`,并且您的 `anvil` 节点当前正在终端中运行。
标签:Foundry, Solidity, Web3, 区块链, 去中心化应用, 数据可视化, 智能合约, 自定义脚本