2024实战指南:使用Hardhat零基础开发以太坊DApp与智能合约

欧意 OKX

币圈十大交易所下载

欧意交易所币安交易所是全球排名靠前的虚拟货币交易所,点击右侧app下载 或【官网注册】进入。

币安下载 APP下载 欧意下载 华为苹果&疑难

你是否对区块链开发充满好奇,却被纷繁复杂的工具和概念吓退?觉得“以太坊开发”听起来高深莫测,不知从何下手?别担心,今天这篇指南将彻底改变你的看法。我们将抛弃枯燥的理论,采用最新、最主流的开发工具Hardhat,带你从零开始,亲手构建并部署一个属于你自己的去中心化应用(DApp)和智能合约。这个过程就像搭积木,一步步来,你会发现它远比想象中简单。

第一步:搭建你的“开发者工作站”

工欲善其事,必先利其器。以太坊开发无需昂贵的硬件,但需要配置好基础软件环境。

  1. 安装Node.js与npm:这是所有现代Web开发的基础。访问Node.js官网,下载并安装最新的LTS(长期支持)版本。安装完成后,打开终端(或命令提示符),输入 node -vnpm -v,如果能显示版本号,说明安装成功。
  2. 安装代码编辑器:强烈推荐 Visual Studio Code,它轻量、免费,且拥有丰富的区块链开发插件。
  3. 安装Hardhat:Hardhat是目前最受开发者欢迎的以太坊开发环境。在终端中运行以下命令进行全局安装:
    bash npm install --save-dev hardhat
    这行命令会为你安装Hardhat及其依赖。

第二步:创建你的第一个Hardhat项目

现在,让我们创建一个专属的项目空间。

  1. 在你电脑上选择一个合适的目录,打开终端,运行:
    bash npx hardhat init
  2. 你会看到一个交互式菜单。为了快速入门,我们选择 “Create a JavaScript project”
  3. 后续提示中,一路按回车选择默认选项即可(是否创建 .gitignore,是否安装 @nomicfoundation/hardhat-toolbox 等)。
  4. 完成后,你的项目文件夹里会自动生成一系列文件和文件夹,其中最关键的是:
    • contracts/:存放智能合约代码(.sol文件)的地方。
    • scripts/:存放部署和与合约交互的脚本文件。
    • hardhat.config.js:项目的配置文件,可以设置网络、编译器版本等。

第三步:编写你的第一个智能合约

智能合约是运行在区块链上的程序。我们来写一个最简单的“存证”合约。

  1. contracts 文件夹中,新建一个文件 SimpleStorage.sol
  2. 将以下Solidity代码复制进去:
    ```solidity
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.19;

    contract SimpleStorage {
    uint256 private storedData;

    // 设置一个数值
    function set(uint256 x) public {
    storedData = x;
    }
    // 读取这个数值
    function get() public view returns (uint256) {
    return storedData;
    }
    

    }
    `` 这个合约只有两个功能:set(存一个数字)和get`(读取这个数字)。它虽然简单,但包含了状态变量、函数、可见性等核心概念。

第四步:在本地测试网上编译与部署

在把合约放到真实的以太坊上之前,我们先在本地模拟环境中测试。

  1. 编译合约:在终端中,确保你在项目根目录,运行:
    bash npx hardhat compile
    Hardhat会使用配置的Solidity编译器编译你的合约。如果看到“Compilation finished successfully”的提示,恭喜你,编译成功!
  2. 编写部署脚本:打开 scripts 文件夹里的 deploy.js(初始化时已生成),你会看到一些示例代码。我们将其修改为部署我们的 SimpleStorage 合约:
    ```javascript
    async function main() {
    const SimpleStorage = await ethers.getContractFactory("SimpleStorage");
    const simpleStorage = await SimpleStorage.deploy();

    await simpleStorage.waitForDeployment();

    console.log("SimpleStorage deployed to:", await simpleStorage.getAddress());
    }

    main().catch((error) => {
    console.error(error);
    process.exitCode = 1;
    });
    3. **启动本地测试节点并部署**:Hardhat内置了一个本地以太坊网络节点。在**新的终端窗口**中,运行:bash
    npx hardhat node
    这会启动一个本地区块链,并显示一堆测试账户和私钥。**保持这个终端运行**。 4. 回到原来的终端,运行部署脚本,并指定使用本地网络:bash
    npx hardhat run scripts/deploy.js --network localhost
    `` 几秒钟后,你将看到类似“SimpleStorage deployed to: 0x5FbDB2315678afecb367f032d93F642f64180aa3”` 的输出。这个地址就是你合约在本地网络上的“家”。

第五步:与你的合约互动

合约部署好了,我们试试调用它的功能。

  1. Hardhat Console是一个强大的交互式环境。运行:
    bash npx hardhat console --network localhost
  2. 在打开的 > 提示符后,依次输入以下命令:
    ```javascript
    // 1. 获取合约实例
    const SimpleStorage = await ethers.getContractFactory("SimpleStorage");
    const storage = await SimpleStorage.attach("刚才部署的合约地址");

    // 2. 调用get函数,查看初始值
    console.log("Initial value:", (await storage.get()).toString());

    // 3. 调用set函数,存入数字 42
    const setTx = await storage.set(42);
    await setTx.wait(); // 等待交易被确认

    // 4. 再次调用get,验证值已改变
    console.log("New value:", (await storage.get()).toString());
    `` 你应该会看到终端先输出Initial value: 0,然后输出New value: 42`。至此,你已经完成了一个智能合约从编写、编译、部署到交互的完整生命周期

下一步:从本地走向真实测试网

掌握本地开发后,你可以尝试将合约部署到如 SepoliaGoerli 这样的公共测试网上。这需要:
1. 获取测试网ETH(可以从水龙头免费领取)。
2. 在 hardhat.config.js 中配置测试网的RPC URL和你的钱包私钥。
3. 将部署命令中的 --network localhost 改为 --network sepolia

记住,永远先用测试网充分测试,再考虑主网部署。

通过这个实战流程,你已经跨越了从“听说”到“动手”的最大门槛。以太坊开发的世界大门已经为你打开。接下来,你可以尝试修改合约逻辑,为它添加更多功能,或者学习如何为它创建一个简单的前端网页(DApp界面),真正实现一个完整的去中心化应用。保持动手实践,每一个复杂的DApp都是由这样简单的合约一步步构建而成的。

本文由币币网原创,如需转载请标明出处。本文内容不构成投资建议不承担相关法律责任。 币币网提醒:请广大读者树立正确的货币观念和投资理念,理性看待区块链,切实提高风险意识。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请联系站长举报,一经查实,本站将立刻删除。

正规借贷

广告
2024年主流币圈钱包深度评测:新手如何选择安全好用的多链钱包
上一篇
2024印度比特币行情解读:政策影响与交易所现状分析
下一篇

相关推荐