主页 > imtoken-冷钱包 > Web3 和智能合约:开发一个简单的 DApp 并将其部署到以太坊测试网(Solidity

Web3 和智能合约:开发一个简单的 DApp 并将其部署到以太坊测试网(Solidity

imtoken-冷钱包 2023-02-13 05:21:43

文章目录

1.使用Solidity编写一个简单的智能合约

在您的合同目录中,创建一个新的 WavePortal.sol 文件。 请注意,使用 Hardhat 构建 Dapp 时,文件的目录结构非常重要。 智能合约(*.sol 文件)看起来类似于其他语言中的类。 一个简单的智能合约如下:

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;
import "hardhat/console.sol";
contract WavePortal {
    constructor() {
        console.log("Yo yo, I am a contract and I am smart");
    }
}

2.运行智能合约

如上我们已经写好了一个智能合约,接下来我们要:
1.编译该合约
2.将该合约部署道本地区块链中
3.完成后其中的`console.log`方法就会运行

1. 编写脚本来运行我们的智能合约

在脚本目录中创建一个名为 run.js 的新文件,内容如下:

const main = async () => {
  //编译智能合约,并在‘artifacts’目录下生成必要的文件
  const waveContractFactory = await hre.ethers.getContractFactory("WavePortal");
  //Hardhat创建一个本地以太坊网络,但只针对这个合约,在这个脚本运行结束后,该网络会销毁,所以每次
  //你运行这个脚本来编译部署这个智能合约,都会是一个全新的以太坊网络环境,可以理解为刷新你的本地服
  //务器
  const waveContract = await waveContractFactory.deploy();
  await waveContract.deployed();
  //生成合约地址,根据合约地址我们才能在区块链中找到我们的智能合约
  console.log("Contract deployed to:", waveContract.address);
};
const runMain = async () => {
  try {
    await main();
    process.exit(0);
  } catch (error) {
    console.log(error);
    process.exit(1);
  }
};
runMain();

2.使用Hardhat运行脚本

使用以下命令运行脚本:

npx hardhat run scripts/run.js

您应该在控制台中看到以下输出:

在这里插入图片描述

3.完善智能合约

接下来,我们将为智能合约添加一些有趣的功能。 我们希望其他人可以向我们“挥手”(Wave,可以理解为交互),我们可以保存这些“挥手”。

你可以把区块链理解为一个云服务器以太坊solidity智能合约开发,比如AWS,但是它不属于任何人以太坊solidity智能合约开发,它是由全世界矿机的算力运行的,通常我们称之为矿工,我们付给他们gas来运行我们的代码。

智能合约可以理解为一段服务器代码,具有多种功能,人们可以与之交互。 我们更新了我们的智能合约 WavePortal.sol,这样它就可以避免人们“挥手”我们。

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;
import "hardhat/console.sol";
contract WavePortal {
    uint256 totalWaves;
    constructor() {
        console.log("Yo yo, I am a contract and I am smart");
    }
    function wave() public {
        totalWaves += 1;
        console.log("%s has waved!", msg.sender);
    }
    function getTotalWaves() public view returns (uint256) {
        console.log("We have %d total waves!", totalWaves);
        return totalWaves;
    }
}

总结

本文简要介绍使用Solidity编写智能合约并使用Hardhat将其部署到本地以太坊网络的过程。 后续会介绍如何完善这个合约,将其部署到以太坊测试网络,通过web与区块链上的合约进行交互。

在这里写自定义目录标题