[계약 개발 도구] 안전모를 사용하여 rinkeby에서 첫 번째 계약 배포

머리말

이 글에서는 solidity를 통해 간단한 컨트랙트를 작성하고, 배포 도구인 hardhat을 사용하여 rinkeby 테스트 체인에 컨트랙트를 배포합니다.

사전 단계

계약을 배포하기 전에 다음 자료가 필요합니다.

  • 연금술 앱 키
  • 지갑 등록 니모닉 문구 또는 지갑 개인키
  • hardhat-deploy 플러그인 설치

알케미의 앱키와 지갑 등록 방법은 바이두에서 찾아볼 수 있고, 자료가 많으니 따로 소개하지 않겠습니다.

새 안전모 프로젝트를 생성하는 방법과 플러그인 hardhat-deploy를 설치하는 방법은
https://hardhat.org/getting-started/를 참조할 수 있습니다.

디렉토리 구조

여기에 이미지 설명 삽입

우리가 알아야 할 디렉토리와 파일

contract: 작성된 계약서 저장
deploy: 배포 스크립트 저장
utils/network.ts: 일반적으로 deployment chain 및 account 정보를 얻기 위한 스크립트인데 이번에는 hardhat.config.ts에서 직접 얻기 때문에 이 글은 비었다.
.env: 니모닉 구문, 개인 키 및 앱 키를 저장하는 구성 파일입니다.

코드

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-그리터-배포
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/에서 지갑 주소를 확인하면 성공적으로 배포된 컨트랙트를 볼 수 있습니다.

Supongo que te gusta

Origin blog.csdn.net/weixin_43742184/article/details/118056869
Recomendado
Clasificación