시가총액: $2.6616T 2.09%
거래량(24시간): $78.8372B -10.97%
공포와 탐욕 지수:

64 - 탐욕

  • 시가총액: $2.6616T 2.09%
  • 거래량(24시간): $78.8372B -10.97%
  • 공포와 탐욕 지수:
  • 시가총액: $2.6616T 2.09%
암호화
주제
암호화
소식
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)로 연락주시면 즉시 삭제하도록 하겠습니다.

관련 지식

SOL 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

SOL 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

2026-09-14 00:40:03

SOL 선물 시장 데이터 액세스 1. Bybit, OKX, Bitget 등 SOL 무기한 또는 분기별 선물이 상장된 공식 거래소 플랫폼으로 이동합니다. 2. SOL/USDT 또는 SOL/USD 선물 거래 쌍 페이지를 찾아 "계약 개요" 또는 "...

XRP 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

XRP 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

2026-09-15 05:00:12

실시간 XRP 선물 데이터에 접근하기 1. Binance, Bybit, OKX, Bitget 등 XRP 무기한 및 분기별 선물 계약을 상장하는 주요 파생상품 거래소를 방문하세요. 2. XRP/USDT 또는 XRP/USD 거래쌍 페이지로 이동하여 거래량 및 미결제약정 수...

DOGE 선물 거래량 및 미결제약정은 어떻게 확인하나요?

DOGE 선물 거래량 및 미결제약정은 어떻게 확인하나요?

2026-09-12 08:39:38

DOGE 선물 거래량 이해 1. 선물 거래량은 특정 기간 내에 거래된 DOGE개의 선물 계약의 총 수를 의미하며 일반적으로 하루 또는 시간당 측정됩니다. 2. 높은 거래량은 종종 강한 시장 참여를 의미하며 가격 행동 맥락에 따라 잠재적인 추세 지속 또는 반전을 나타낼 ...

ETH 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

ETH 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

2026-09-16 19:00:18

실시간 ETH 선물 데이터 액세스 1. Binance, Bybit 및 OKX와 같은 주요 중앙형 거래소는 ETH 무기한 및 분기별 선물 거래량과 미결제약정을 표시하는 실시간 대시보드를 제공합니다. 이러한 지표는 5~10초마다 업데이트되며 공개 시장 페이지에서 로그인 없...

BTC 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

BTC 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

2026-09-12 15:19:55

BTC 선물 지표에 대한 데이터 소스 1. CoinGlass API v4는 30개 이상의 거래소에서 실시간 자금 요율, 청산 히트맵 및 세부적인 미결제약정 분석을 제공합니다. 2. 바이낸스 선물 API는 입찰 요청 깊이, 계약별 거래량 내역 및 마진 비율 스냅샷에 대한...

DOGEUSDT 무기한 계약 차트를 읽는 방법은 무엇입니까?

DOGEUSDT 무기한 계약 차트를 읽는 방법은 무엇입니까?

2026-09-11 19:19:48

DOGEUSDT 영구 차트의 가격 움직임 이해하기 1. 캔들스틱 형성은 즉각적인 시장 심리를 나타냅니다. 녹색 캔들은 매수 우위를 나타내고 빨간색 캔들은 해당 기간 동안의 매도 압력을 나타냅니다. 2. 신체 위와 아래의 심지는 가격 상승 또는 하락에 대한 거부 신호입니...

SOL 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

SOL 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

2026-09-14 00:40:03

SOL 선물 시장 데이터 액세스 1. Bybit, OKX, Bitget 등 SOL 무기한 또는 분기별 선물이 상장된 공식 거래소 플랫폼으로 이동합니다. 2. SOL/USDT 또는 SOL/USD 선물 거래 쌍 페이지를 찾아 "계약 개요" 또는 "...

XRP 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

XRP 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

2026-09-15 05:00:12

실시간 XRP 선물 데이터에 접근하기 1. Binance, Bybit, OKX, Bitget 등 XRP 무기한 및 분기별 선물 계약을 상장하는 주요 파생상품 거래소를 방문하세요. 2. XRP/USDT 또는 XRP/USD 거래쌍 페이지로 이동하여 거래량 및 미결제약정 수...

DOGE 선물 거래량 및 미결제약정은 어떻게 확인하나요?

DOGE 선물 거래량 및 미결제약정은 어떻게 확인하나요?

2026-09-12 08:39:38

DOGE 선물 거래량 이해 1. 선물 거래량은 특정 기간 내에 거래된 DOGE개의 선물 계약의 총 수를 의미하며 일반적으로 하루 또는 시간당 측정됩니다. 2. 높은 거래량은 종종 강한 시장 참여를 의미하며 가격 행동 맥락에 따라 잠재적인 추세 지속 또는 반전을 나타낼 ...

ETH 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

ETH 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

2026-09-16 19:00:18

실시간 ETH 선물 데이터 액세스 1. Binance, Bybit 및 OKX와 같은 주요 중앙형 거래소는 ETH 무기한 및 분기별 선물 거래량과 미결제약정을 표시하는 실시간 대시보드를 제공합니다. 이러한 지표는 5~10초마다 업데이트되며 공개 시장 페이지에서 로그인 없...

BTC 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

BTC 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?

2026-09-12 15:19:55

BTC 선물 지표에 대한 데이터 소스 1. CoinGlass API v4는 30개 이상의 거래소에서 실시간 자금 요율, 청산 히트맵 및 세부적인 미결제약정 분석을 제공합니다. 2. 바이낸스 선물 API는 입찰 요청 깊이, 계약별 거래량 내역 및 마진 비율 스냅샷에 대한...

DOGEUSDT 무기한 계약 차트를 읽는 방법은 무엇입니까?

DOGEUSDT 무기한 계약 차트를 읽는 방법은 무엇입니까?

2026-09-11 19:19:48

DOGEUSDT 영구 차트의 가격 움직임 이해하기 1. 캔들스틱 형성은 즉각적인 시장 심리를 나타냅니다. 녹색 캔들은 매수 우위를 나타내고 빨간색 캔들은 해당 기간 동안의 매도 압력을 나타냅니다. 2. 신체 위와 아래의 심지는 가격 상승 또는 하락에 대한 거부 신호입니...

모든 기사 보기

User not found or password invalid

Your input is correct