【合约开发工具】使用 hardhat 在 rinkeby 部署第一个合约

前言

本文中,通过 solidity 编写一个简单合约,使用部署工具 hardhat,将合约部署到 rinkeby 测试链上。

前置步骤

在部署合约前需要以下材料:

  • Alchemy App Key
  • 钱包注册时的 助记词 或 钱包的私钥
  • hardhat-deploy插件的安装

Alchemy 的 App-key 和如何注册钱包,可以百度,资料较多,不做介绍。

如何新建一个 hardhat 项目以及插件 hardhat-deploy 如何安装可以参考:
https://hardhat.org/getting-started/

目录结构

在这里插入图片描述

我们需要知道的目录及文件

contract:存放编写的合约
deploy:存放部署脚本
utils/network.ts: 一般为获取部署链、账户信息的脚本,本次直接在 hardhat.config.ts 中get,所以本文为空。
.env:存放助记词、私钥、app-key的配置文件。

代码

hardhat.config.ts
import {
    
    HardhatUserConfig} from "hardhat/types";
import 'hardhat-deploy';
// import {accounts} from './utils/network';

const ALCHEMY_RINKEBY = process.env.ALCHEMY_RINKEBY;
const MNEMONIC_AN = process.env.MNEMONIC_AN;

const buildConfig: HardhatUserConfig = {
    
    
  solidity: {
    
    
    compilers: [
      {
    
    
        version: '0.7.5',
        settings: {
    
    
          optimizer: {
    
    enabled: true, runs: 200},
          evmVersion: 'istanbul',
        },
      },
    ],
  },
  //如果部署的是其他测试链,应添加其他设置。
  networks: {
    
    
    rinkeby: {
    
    
      url: ALCHEMY_RINKEBY,
      // accounts : accounts(), //must mnemonic
      //看源码,这里我们输入 HardhatNetworkHDAccountsUserConfig 对象,即为通过助记词查找钱包地址。
      accounts: {
    
    
        mnemonic: MNEMONIC_AN,
      },
    },
  },

  //hardhat-deploy for local test
  namedAccounts: {
    
    
    deployer: {
    
    
      default: 0,
    },
  },
};

export default buildConfig;
.env 文件

在这里插入图片描述

001-Greeter-deploy
import {
    
    HardhatRuntimeEnvironment} from 'hardhat/types';
import {
    
    DeployFunction} from 'hardhat-deploy/types';

const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
    
    
    const {
    
    deployments, getNamedAccounts} = hre;
    const {
    
    deploy} = deployments;

    const {
    
    deployer} = await getNamedAccounts();
	//这里建议打印部署者地址,检查是否是自己的地址
    console.log(deployer)

    await deploy('Greeter', {
    
    
        from: deployer,
        //输入constructor的参数
        args: ['we success!'],
        log: true,
    });
};

export default func;
func.tags = ['Greeter'];

编写完代码后,执行
npx hardhat --network rinkeby deploy

在 https://rinkeby.etherscan.io/ 中查询自己的钱包地址,就能看到部署成功的合约啦。

猜你喜欢

转载自blog.csdn.net/weixin_43742184/article/details/118056869