Web3与智能合约:开发一个简单的DApp并部署到以太坊测试网(Solidity+Hardhat+React)②简单的智能合约示例

文章目录

  • 一、使用Solidity编写一个简单的智能合约
  • 二、运行智能合约
    • 1.编写一个脚本来运行我们的智能合约
    • 2.使用Hardhat运行脚本
  • 三、完善智能合约
  • 总结


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

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

// 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");
    }
}

二、运行智能合约

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

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

scripts目录下新建一个名为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

你应在控制台看到以下输出:
Web3与智能合约:开发一个简单的DApp并部署到以太坊测试网(Solidity+Hardhat+React)②简单的智能合约示例_第1张图片


三、完善智能合约

接下来我们要在智能合约中增加一些有趣的功能,我们希望其他人能够向我们“挥手”(Wave,可以理解为交互),而且我们能将这些“挥手”保存下来。
你可以将区块链理解为一个云服务器,比如AWS,但是它不属于任何人,它由全世界的矿机的算力支撑运行,通常我们称之为矿工,我们向他们支付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来与区块链上的合约交互。

这里写自定义目录标题

  • 一、使用Solidity编写一个简单的智能合约
  • 二、运行智能合约
    • 1.编写一个脚本来运行我们的智能合约
    • 2.使用Hardhat运行脚本
  • 三、完善智能合约
  • 总结

你可能感兴趣的:(BlockChain,以太坊,智能合约,react.js)