以太坊,作为全球领先的智能合约平台,不仅开创了去中心化应用(DApps)的新纪元,也为开发者和创业者提供了无限的创新可能,本教程将带你从环境搭建到智能合约编写,再到前端交互,一步步完成一个简单的以太坊DApp开发实战,助你快速入门以太坊开发的世界。

开发环境准备:工欲善其事,必先利其器

在正式开始之前,我们需要准备好一系列开发工具:

  1. Node.js 和 npm:JavaScript 运行时环境和包管理器,建议从 Node.js 官网 下载 LTS 版本。
  2. Truffle Suite:以太坊最受欢迎的开发框架之一,包含开发环境、测试框架和资产管道,它简化了智能合约的编译、测试和部署流程。
    • 安装:npm install -g truffle
  3. Ganache:一款个人区块链,用于快速部署和测试智能合约,它会在本地创建一个区块链网络,并提供预设的测试账户和以太坊。
  4. MetaMask:一款浏览器插件钱包,用于与以太坊区块链交互,在开发中,它可以模拟用户钱包,让我们能够与本地或测试网的智能合约进行交互。
    • 安装:从 MetaMask 官网 或浏览器应用商店安装,并创建一个测试账户。
  5. 代码编辑器:推荐使用 Visual Studio Code (VS Code),并安装 Solidity 插件以获得语法高亮和智能提示。
  6. Git:版本控制工具,用于管理代码。

创建项目结构

  1. 创建一个新的项目文件夹,my-first-dapp,并在终端中进入该文件夹。
  2. 初始化一个新的 Truffle 项目:
    truffle init

    这会生成以下标准目录结构:

    • contracts/:存放 Solidity 智能合约文件。
    • migrations/:存放部署脚本文件。
    • test/:存放测试文件。
    • truffle-config.js:Truffle 配置文件。

编写智能合约

我们的目标是创建一个简单的“存储合约”,允许用户存储和获取一个字符串。

  1. 在 contracts 目录下创建一个新的 Solidity 文件,Storage.sol。

  2. 编写以下合约代码:

    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.0;
    /**
     * @title Storage
     * @dev 一个简单的存储合约,允许用户存储和检索一个字符串。
     */
    contract Storage {
        string private storedData;
        event DataStored(string newData);
        /**
         * @dev 存储一个字符串。
         * @param _data 要存储的字符串。
         */
        function set(string memory _data) public {
            storedData = _data;
            emit DataStored(_data);
        }
        /**
         * @dev 获取存储的字符串。
         * @return 存储的字符串。
         */
        function get() public view returns (string memory) {
            return storedData;
        }
    }

编译智能合约

在终端中,确保你位于项目根目录,运行以下命令编译合约:

truffle compile

如果成功,你会在 build/contracts 目录下看到编译后的合约 JSON 文件,其中包含合约的 ABI(应用程序二进制接口)和字节码。

编写部署脚本

  1. 在 migrations 目录下创建一个新的迁移脚本文件,2_deploy_storage.js。

  2. 编写以下部署代码:

    随机配图