시가총액: $2.1847T -0.70%
거래량(24시간): $64.4403B 0.74%
공포와 탐욕 지수:

38 - 두려움

  • 시가총액: $2.1847T -0.70%
  • 거래량(24시간): $64.4403B 0.74%
  • 공포와 탐욕 지수:
  • 시가총액: $2.1847T -0.70%
암호화
주제
암호화
소식
cryptostopics
비디오
최고 암호화

언어 선택

언어 선택

통화 선택

암호화
주제
암호화
소식
cryptostopics
비디오

Hardhat을 사용하여 스마트 계약을 테스트하는 방법은 무엇입니까?

Hardhat is an Ethereum development environment that streamlines smart contract testing with tools like Mocha and Chai, ensuring reliable deployment.

2025/07/26 23:15

Hardhat이란 무엇이며 왜 스마트 계약 테스트에 사용합니까?

Hardhat은 개발자가 스마트 계약을 효율적으로 컴파일, 배포, 디버그 및 테스트 할 수있는 이더 리움 개발 환경입니다. Hardhat Network 로 알려진 로컬 블록 체인 환경을 제공하여 Mainnet 또는 Ropsten과 ​​같은 실제 이더 리움 네트워크의 동작을 모방하여 테스트 목적으로 이상적입니다.

개발자가 Hardhat을 선호하는 주요 이유 중 하나는 유연성과 풍부한 플러그인 생태계 때문입니다. Mocha 로 단위 테스트를 작성하거나 Assertions를 위해 Chai 사용 또는 내장 도구로 디버깅을하든 Hardhat은 전체 Smart Contract Development Lifecycle을 간소화합니다. 이렇게하면 계약 로직이 라이브 네트워크에 배포하기 전에 계약 로직이 올바르게 동작을 할 때 특히 유용합니다.

개발 환경 설정

테스트를 시작하기 전에 적절한 환경을 설정해야합니다.

  • Node.js 설치 : Node.js (버전 14.x 이상) 및 NPM이 설치되어 있는지 확인하십시오.
  • 프로젝트 초기화 : 프로젝트 디렉토리에서 npm init -y 실행하여 package.json 파일을 만듭니다.
  • HardHat 설치 : NPM 설치를 실행하여 프로젝트에 Hardhat을 추가하려면 npm install --save-dev hardhat .
  • HardHat 구성 파일 작성 : npx hardhat 실행하고 'JavaScript 프로젝트 작성'을 선택하여 hardhat.config.js 파일을 생성하십시오.

이 설정이 완료되면 스마트 계약서 작성 및 테스트를 시작할 수 있습니다.

테스트를위한 기본 스마트 계약 작성

테스트에 하드 하트를 사용하는 방법을 보여 주려면 간단한 견고 계약을 고려해 봅시다.

 // contracts/Token.sol pragma solidity ^0.8.0; 계약 토큰 {

mapping(address => uint256) public balances; function transfer(address to, uint256 amount) external { require(balances[msg.sender] >= amount, 'Insufficient balance'); balances[msg.sender] -= amount; balances[to] += amount; } function mint(address account, uint256 amount) external { balances[account] += amount; }

}

이 기본 토큰 계약에는 토큰 전송 및 마이닝 기능이 포함됩니다. 목표는 이러한 기능이 Hardhat 의 테스트 프레임 워크를 사용하여 다른 시나리오에서 예상대로 작동하는지 테스트하는 것입니다.

테스트 환경 구성

테스트를 작성하기 전에 프로젝트 구조가 테스트를 지원하는지 확인하십시오.

  • contracts/ 폴더에 견고 계약을 배치하십시오.
  • 테스트 파일을 test/ 디렉토리에 저장하십시오.
  • 필요한 경우 hardhat.config.js 업데이트하십시오 (예 : 네트워크 또는 플러그인 추가).

최소 구성 예는 다음과 같습니다.

 // hardhat.config.js module.exports = { solidity: '0.8.0', };

이 설정을 사용하면 MochaChai를 사용하여 테스트를 작성하고 실행할 준비가되었습니다.

Mocha와 Chai를 사용한 테스트 작성

Hardhat은 인기있는 JavaScript 테스트 프레임 워크 인 Mocha 와 Assertion Library 인 Chai 와 완벽하게 통합됩니다.

test/ 디렉토리에서 테스트 파일을 작성하여 시작하십시오.

 // test/token-test.js const { expect } = require('chai'); 설명 ( '토큰 계약', function () { 토큰하자; Hardhattoken을하자; 소유자에게하자; addr1을하자;

이전에 (Async function () {

Token = await ethers.getContractFactory('Token'); [owner, addr1] = await ethers.getSigners(); hardhatToken = await Token.deploy(); await hardhatToken.deployed();

});

( '총 공급을 소유자에게 할당해야한다', Async function () {

await hardhatToken.mint(owner.address, 100); const ownerBalance = await hardhatToken.balances(owner.address); expect(ownerBalance).to.equal(100);

});

it ( '계정간에 토큰을 전송해야합니다', async function () {

await hardhatToken.mint(owner.address, 100); await hardhatToken.transfer(addr1.address, 50); const addr1Balance = await hardhatToken.balances(addr1.address); expect(addr1Balance).to.equal(50);

});

it ( '발신자가 충분한 토큰이 없으면 실패해야합니다', async function () {

const initialOwnerBalance = await hardhatToken.balances(owner.address); await expect( hardhatToken.transfer(addr1.address, 1) ).to.be.revertedWith('Insufficient balance'); expect(await hardhatToken.balances(owner.address)).to.equal(initialOwnerBalance);

}); });

각 테스트 사례는 Chai를 사용하여 예상 결과를 주장합니다. beforeEach Hook는 모든 테스트마다 새로운 배치를 보장하여 테스트 사례 간의 간섭을 방지합니다.

Hardhat으로 테스트를 실행합니다

테스트가 작성되면 실행하는 것이 간단합니다.

  • 프로젝트 루트 디렉토리에서 터미널을 엽니 다.
  • 명령 npx hardhat test 실행하십시오.

출력은 통과 및 실패 사례를 포함하여 각 테스트의 결과를 보여줍니다. 테스트가 실패하면 Hardhat은 문제를 신속하게 식별하는 데 도움이되는 자세한 오류 메시지를 표시합니다.

보다 세분화 된 제어를 위해서는 파일 경로를 추가하여 특정 테스트 파일을 실행할 수 있습니다.

 npx hardhat test test/token-test.js

이를 통해 전체 테스트 스위트를 다시 실행하지 않고 특정 계약 행동에 집중할 수 있습니다.


자주 묻는 질문

Q : 견고성없이 Hardhat을 사용할 수 있습니까? 예, Hardhat은 주로 견고성을 위해 설계되었지만 커뮤니티 지원이 다를 수 있지만 Vyper 와 같은 다른 EVM 호환 언어와 함께 사용할 수 있습니다.

Q : Hardhat에서 실패한 테스트를 디버그하려면 어떻게해야합니까? @nomiclabs/hardhat-waffle 또는 Hardhat 런타임 환경 (HRE) 에서 console.log를 사용하여 테스트 실행 중에 변수 값을 인쇄하십시오. 또한 트랜잭션 영수증을 검사하고 테스트 출력에 제공된 이유를 되돌립니다.

Q : Hardhat을 사용하여 계약 업그레이드를 테스트 할 수 있습니까? 예, Hardhat은 @OpenZeppelin/HardHat-Upgrades 와 같은 플러그인을 통해 프록시 패턴을 지원하므로 업그레이드 가능한 계약을 현지에서 시뮬레이션하고 테스트 할 수 있습니다.

Q : Hardhat에서 테스트를 위해 Mocha와 Chai의 대안이 있습니까? MochaChai는 널리 채택되었지만 Jest 와 같은 다른 테스트 프레임 워크를 추가 구성과 통합 할 수 있지만 MochaChai 의 기본 지원 및 문서는 더 성숙합니다.

부인 성명:info@kdj.com

제공된 정보는 거래 조언이 아닙니다. kdj.com은 이 기사에 제공된 정보를 기반으로 이루어진 투자에 대해 어떠한 책임도 지지 않습니다. 암호화폐는 변동성이 매우 높으므로 철저한 조사 후 신중하게 투자하는 것이 좋습니다!

본 웹사이트에 사용된 내용이 귀하의 저작권을 침해한다고 판단되는 경우, 즉시 당사(info@kdj.com)로 연락주시면 즉시 삭제하도록 하겠습니다.

관련 지식

거래 전 LINK 선물 청산 위험을 계산하는 방법은 무엇입니까?

거래 전 LINK 선물 청산 위험을 계산하는 방법은 무엇입니까?

2026-07-30 04:39:50

시장 변동성 패턴 1. Bitcoin의 가격 변동은 종종 미국 인플레이션 보고서 및 연방준비은행 금리 결정과 같은 거시경제 지표와 상관관계가 있습니다. 2. 알트코인 가치 평가는 높은 투기 행위를 반영하여 낮은 Bitcoin 지배력 기간 동안 증폭된 변동을 자주 나타냅...

LINKUSDT 무기한 계약 자금 조달 비율은 무엇입니까?

LINKUSDT 무기한 계약 자금 조달 비율은 무엇입니까?

2026-07-29 07:40:14

시장 변동성 패턴 1. Bitcoin 가격 변동은 ETF 승인 발표 또는 주요 거래소 중단과 같은 유동성이 높은 이벤트 중에 24시간 이내에 10%를 초과하는 경우가 많습니다. 2. 레이어 2 롤업 업그레이드가 활성화되면 이더리움의 변동성 지수가 급등하는 경우가 많습니...

AVAX 선물 증거금 요건은 어떻게 계산됩니까?

AVAX 선물 증거금 요건은 어떻게 계산됩니까?

2026-07-23 15:40:03

AVAX 선물 마진 구조 1. AVAX 선물 마진은 개시 증거금과 유지 증거금이라는 두 가지 구성 요소로 구성됩니다. 이는 현재 시장 가격, 변동성, 미결제약정 및 계약 규모를 기반으로 실시간으로 계산됩니다. 2. 초기 마진은 단기(일반적으로 한 거래 세션) 동안 잠재...

ADA 무기한 선물의 최대 레버리지는 얼마입니까?

ADA 무기한 선물의 최대 레버리지는 얼마입니까?

2026-07-28 07:40:32

ADA 무기한 선물 레버리지는 관할권, 사용자 계층 및 위험 관리 정책에 따라 거래소마다 다릅니다. 2026년 7월 현재 주요 플랫폼에서는 별도의 한도를 적용합니다. 거래소별 ADA 레버리지 한도 1. 바이낸스 선물은 ADA/USDT 무기한 계약에 동적 레버리지 모델을...

ADA 계약 증거금 비율이 경고를 유발하는 이유는 무엇입니까?

ADA 계약 증거금 비율이 경고를 유발하는 이유는 무엇입니까?

2026-07-22 09:00:26

ADA 계약 마진율 메커니즘 1. 주요 거래소의 ADA 무기한 계약은 포지션 규모, 레버리지 수준, 현재 시장 평균 가격을 기준으로 실시간으로 계산되는 동적 마진 비율을 사용합니다. 2. 마진 비율은 (지갑 잔액 + 미실현 손익)을 유지 마진 요건으로 나눈 값이며 백분...

ADA 선물 청산 가격을 계산하는 방법은 무엇입니까?

ADA 선물 청산 가격을 계산하는 방법은 무엇입니까?

2026-07-30 09:00:28

ADA 선물 마진 메커니즘 이해하기 1. 주요 거래소의 ADA 선물 계약은 격리 모드 또는 교차 마진 모드로 운영되며 각각 청산 기준점에 다르게 영향을 미칩니다. 격리 마진은 포지션당 전용 자본을 할당하는 반면, 교차 마진은 전체 지갑 잔고에서 인출됩니다. 2. ADA...

거래 전 LINK 선물 청산 위험을 계산하는 방법은 무엇입니까?

거래 전 LINK 선물 청산 위험을 계산하는 방법은 무엇입니까?

2026-07-30 04:39:50

시장 변동성 패턴 1. Bitcoin의 가격 변동은 종종 미국 인플레이션 보고서 및 연방준비은행 금리 결정과 같은 거시경제 지표와 상관관계가 있습니다. 2. 알트코인 가치 평가는 높은 투기 행위를 반영하여 낮은 Bitcoin 지배력 기간 동안 증폭된 변동을 자주 나타냅...

LINKUSDT 무기한 계약 자금 조달 비율은 무엇입니까?

LINKUSDT 무기한 계약 자금 조달 비율은 무엇입니까?

2026-07-29 07:40:14

시장 변동성 패턴 1. Bitcoin 가격 변동은 ETF 승인 발표 또는 주요 거래소 중단과 같은 유동성이 높은 이벤트 중에 24시간 이내에 10%를 초과하는 경우가 많습니다. 2. 레이어 2 롤업 업그레이드가 활성화되면 이더리움의 변동성 지수가 급등하는 경우가 많습니...

AVAX 선물 증거금 요건은 어떻게 계산됩니까?

AVAX 선물 증거금 요건은 어떻게 계산됩니까?

2026-07-23 15:40:03

AVAX 선물 마진 구조 1. AVAX 선물 마진은 개시 증거금과 유지 증거금이라는 두 가지 구성 요소로 구성됩니다. 이는 현재 시장 가격, 변동성, 미결제약정 및 계약 규모를 기반으로 실시간으로 계산됩니다. 2. 초기 마진은 단기(일반적으로 한 거래 세션) 동안 잠재...

ADA 무기한 선물의 최대 레버리지는 얼마입니까?

ADA 무기한 선물의 최대 레버리지는 얼마입니까?

2026-07-28 07:40:32

ADA 무기한 선물 레버리지는 관할권, 사용자 계층 및 위험 관리 정책에 따라 거래소마다 다릅니다. 2026년 7월 현재 주요 플랫폼에서는 별도의 한도를 적용합니다. 거래소별 ADA 레버리지 한도 1. 바이낸스 선물은 ADA/USDT 무기한 계약에 동적 레버리지 모델을...

ADA 계약 증거금 비율이 경고를 유발하는 이유는 무엇입니까?

ADA 계약 증거금 비율이 경고를 유발하는 이유는 무엇입니까?

2026-07-22 09:00:26

ADA 계약 마진율 메커니즘 1. 주요 거래소의 ADA 무기한 계약은 포지션 규모, 레버리지 수준, 현재 시장 평균 가격을 기준으로 실시간으로 계산되는 동적 마진 비율을 사용합니다. 2. 마진 비율은 (지갑 잔액 + 미실현 손익)을 유지 마진 요건으로 나눈 값이며 백분...

ADA 선물 청산 가격을 계산하는 방법은 무엇입니까?

ADA 선물 청산 가격을 계산하는 방법은 무엇입니까?

2026-07-30 09:00:28

ADA 선물 마진 메커니즘 이해하기 1. 주요 거래소의 ADA 선물 계약은 격리 모드 또는 교차 마진 모드로 운영되며 각각 청산 기준점에 다르게 영향을 미칩니다. 격리 마진은 포지션당 전용 자본을 할당하는 반면, 교차 마진은 전체 지갑 잔고에서 인출됩니다. 2. ADA...

모든 기사 보기

User not found or password invalid

Your input is correct