체인의정석

다중 체인 환경 hardhat써서 로컬에서 테스트하기 본문

블록체인/퍼블릭 블록체인

다중 체인 환경 hardhat써서 로컬에서 테스트하기

체인의정석 2024. 6. 24. 14:14
728x90
반응형

1. hardhat 써서 여러개의 체인 로컬에 띄우기

먼저 해당 명령어를 사용한다면 8545 포트로 노드가 띄워진다.

이때 포트를 다르게 해서 하나 더 띄우면 로컬에 체인이 2개가 생기게 된다.

// 새로운 창 열고 실행
npx hardhat node
// 새로운 창 하나 더 열고 실행
npx hardhat node --port 8546

2. provider 각각 지정해서 사용하기

  const providerUrl_A = 'http://127.0.0.1:8545/';
  const providerUrl_B = 'http://127.0.0.1:8546/';

//해당 프라이빗 키는 npx hardahat node 실행시 기본으로 제공되는 0번 프라이빗 키이므로 그대로 사용
  const privateKeyA = '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80';
  const privateKeyB = '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80';

  const providerA = new ethers.JsonRpcProvider(providerUrl_A);
  const providerB = new ethers.JsonRpcProvider(providerUrl_B);

  const walletA = new ethers.Wallet(privateKeyA, providerA);
  const walletB = new ethers.Wallet(privateKeyB, providerB);

이렇게 각각 provider를 설정해주고 나서

  const contractAddress = "0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB";
  const sendMessageABI = [
    "event SendMessage(address indexed caller, string uri, bytes params, uint256 deadline)"
  ];

  const metaLane721Contract = new ethers.Contract(contractAddress, sendMessageABI, walletA);

위와 같이 사용하면 된다.

그리고 network를 통해서 스크립트를 실행하기 위해서

  networks: {
    a: {
      url: 'http://127.0.0.1:8545/'
    },
    b: {
      url: 'http://127.0.0.1:8546/'
    },

다음과 같이 세팅해 주면 된다.

이를 통해서 로컬에서 다중 체인을 사용하는 브릿지 등을 미리 테스트 해볼 수 있다.

만약 프론트 엔드도 띄워서 하고 싶으면 메타마스크에 위에 지정한 로컬 URL을 넣고 테스트하면 된다.

이런식으로 테스트하면 컨트렉트에 콘솔까지 넣고 찍을 수 있는 장점도 있어서 세세한 디버깅이 가능하다.

728x90
반응형
Comments