-
bitcoin $87959.907984 USD
1.34% -
ethereum $2920.497338 USD
3.04% -
tether $0.999775 USD
0.00% -
xrp $2.237324 USD
8.12% -
bnb $860.243768 USD
0.90% -
solana $138.089498 USD
5.43% -
usd-coin $0.999807 USD
0.01% -
tron $0.272801 USD
-1.53% -
dogecoin $0.150904 USD
2.96% -
cardano $0.421635 USD
1.97% -
hyperliquid $32.152445 USD
2.23% -
bitcoin-cash $533.301069 USD
-1.94% -
chainlink $12.953417 USD
2.68% -
unus-sed-leo $9.535951 USD
0.73% -
zcash $521.483386 USD
-2.87%
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', };이 설정을 사용하면 Mocha 와 Chai를 사용하여 테스트를 작성하고 실행할 준비가되었습니다.
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의 대안이 있습니까? Mocha 와 Chai는 널리 채택되었지만 Jest 와 같은 다른 테스트 프레임 워크를 추가 구성과 통합 할 수 있지만 Mocha 와 Chai 의 기본 지원 및 문서는 더 성숙합니다.
부인 성명:info@kdj.com
제공된 정보는 거래 조언이 아닙니다. kdj.com은 이 기사에 제공된 정보를 기반으로 이루어진 투자에 대해 어떠한 책임도 지지 않습니다. 암호화폐는 변동성이 매우 높으므로 철저한 조사 후 신중하게 투자하는 것이 좋습니다!
본 웹사이트에 사용된 내용이 귀하의 저작권을 침해한다고 판단되는 경우, 즉시 당사(info@kdj.com)로 연락주시면 즉시 삭제하도록 하겠습니다.
- 비트코인의 난폭한 질주: 시장 변동성 속에서 반등과 하락세 탐색
- 2026-02-04 19:55:02
- 네바다주 목표: 코인베이스의 예측 시장이 규제 대결에 직면
- 2026-02-04 19:50:02
- Tether는 투자자의 반발로 인해 수십억 달러의 자금 조달을 축소했습니다. 보고서 세부 정보
- 2026-02-04 18:50:02
- 비트코인의 큰 폭락: 콘크리트 정글에서 충돌 원인 풀기
- 2026-02-04 18:55:01
- 황금 트럼프 동상이 Wild Memecoin Saga의 중심이 되었습니다
- 2026-02-04 18:50:02
- NYC 버즈: Remittix 사전 판매가 빠르게 매진되어 송금 혁명에서 큰 이익을 얻습니다!
- 2026-02-04 18:45:01
관련 지식
TradingView 얼러트를 사용하여 선물 거래를 자동으로 실행하는 방법은 무엇입니까?
2026-02-04 21:00:31
선물 계약에 대한 TradingView 얼러트 설정 1. TradingView 계정에 로그인하고 원하는 선물 상품(예: Binance 또는 Bybit의 BTC/USD 또는 ETH/USD 무기한 계약) 차트를 엽니다. 2. 선호하는 지표, 캔들스틱 기간, 그리기 도구로 ...
선물 거래에서 단방향 모드와 헤지 모드를 어떻게 사용합니까?
2026-02-04 18:19:57
단방향 모드 이해 1. 단방향 모드는 주어진 시간에 자산당(롱 또는 숏) 단일 포지션 방향을 설정합니다. 2. 거래자는 동일한 기호에 대해 반대 위치를 보유할 수 없으므로 마진 계산 및 위험 노출 추적이 단순화됩니다. 3. 초기 마진은 오픈 포지션의 명목 가치와 선택한...
현물 지갑에서 선물 계좌로 자금을 이체하는 방법은 무엇입니까? (즉석 가이드)
2026-02-04 18:00:07
암호화폐 거래소의 지갑 분리 이해 1. 현물 지갑과 선물 계정은 대부분의 중앙화된 거래소 내에서 독립적인 금융 컨테이너로 작동합니다. 2. 현물 지갑에 보관된 자산은 마진 거래나 선물 시장 포지션 개설에 직접 사용할 수 없습니다. 3. 이 두 환경 간의 전송에는 지정된...
암호화폐 계약 포지션을 수동으로 또는 자동으로 마감하는 방법은 무엇입니까?
2026-02-01 23:19:36
수동 포지션 폐쇄 프로세스 1. 계약이 활성화된 거래 플랫폼에 로그인하고 '포지션' 또는 '미결 주문' 탭으로 이동합니다. 2. 기호, 규모, 진입 가격, 레버리지 수준을 확인하여 특정 계약 포지션을 찾습니다. 3. 포지션 옆에 있는 ...
Bitcoin ETF가 암호화폐 계약에 미치는 영향을 어떻게 이해하나요?
2026-02-01 16:19:51
Bitcoin ETF와 시장 유동성 1. Bitcoin ETF는 기관 자본을 현물 시장에 직접 도입하여 주문장 깊이를 늘리고 대규모 거래의 슬리피지를 줄입니다. 2. 차익거래자가 선물과 무기한 스왑을 사용하여 ETF 포지션을 헤지함에 따라 향상된 유동성이 파생상품 시장...
현재 유동성 급증 중에 DeFi 계약을 거래하는 방법은 무엇입니까?
2026-02-01 07:00:25
DeFi 프로토콜의 유동성 역학 이해 1. DeFi의 유동성 급증은 종종 이자 농사 인센티브, 토큰 배출 및 크로스체인 연결 활동으로 인한 조정된 자본 유입에 의해 촉발됩니다. 2. 대규모 유동성 풀이 증가된 주문 흐름을 흡수하여 단기 차익거래 창구가 생성되면 자동화된...
TradingView 얼러트를 사용하여 선물 거래를 자동으로 실행하는 방법은 무엇입니까?
2026-02-04 21:00:31
선물 계약에 대한 TradingView 얼러트 설정 1. TradingView 계정에 로그인하고 원하는 선물 상품(예: Binance 또는 Bybit의 BTC/USD 또는 ETH/USD 무기한 계약) 차트를 엽니다. 2. 선호하는 지표, 캔들스틱 기간, 그리기 도구로 ...
선물 거래에서 단방향 모드와 헤지 모드를 어떻게 사용합니까?
2026-02-04 18:19:57
단방향 모드 이해 1. 단방향 모드는 주어진 시간에 자산당(롱 또는 숏) 단일 포지션 방향을 설정합니다. 2. 거래자는 동일한 기호에 대해 반대 위치를 보유할 수 없으므로 마진 계산 및 위험 노출 추적이 단순화됩니다. 3. 초기 마진은 오픈 포지션의 명목 가치와 선택한...
현물 지갑에서 선물 계좌로 자금을 이체하는 방법은 무엇입니까? (즉석 가이드)
2026-02-04 18:00:07
암호화폐 거래소의 지갑 분리 이해 1. 현물 지갑과 선물 계정은 대부분의 중앙화된 거래소 내에서 독립적인 금융 컨테이너로 작동합니다. 2. 현물 지갑에 보관된 자산은 마진 거래나 선물 시장 포지션 개설에 직접 사용할 수 없습니다. 3. 이 두 환경 간의 전송에는 지정된...
암호화폐 계약 포지션을 수동으로 또는 자동으로 마감하는 방법은 무엇입니까?
2026-02-01 23:19:36
수동 포지션 폐쇄 프로세스 1. 계약이 활성화된 거래 플랫폼에 로그인하고 '포지션' 또는 '미결 주문' 탭으로 이동합니다. 2. 기호, 규모, 진입 가격, 레버리지 수준을 확인하여 특정 계약 포지션을 찾습니다. 3. 포지션 옆에 있는 ...
Bitcoin ETF가 암호화폐 계약에 미치는 영향을 어떻게 이해하나요?
2026-02-01 16:19:51
Bitcoin ETF와 시장 유동성 1. Bitcoin ETF는 기관 자본을 현물 시장에 직접 도입하여 주문장 깊이를 늘리고 대규모 거래의 슬리피지를 줄입니다. 2. 차익거래자가 선물과 무기한 스왑을 사용하여 ETF 포지션을 헤지함에 따라 향상된 유동성이 파생상품 시장...
현재 유동성 급증 중에 DeFi 계약을 거래하는 방법은 무엇입니까?
2026-02-01 07:00:25
DeFi 프로토콜의 유동성 역학 이해 1. DeFi의 유동성 급증은 종종 이자 농사 인센티브, 토큰 배출 및 크로스체인 연결 활동으로 인한 조정된 자본 유입에 의해 촉발됩니다. 2. 대규모 유동성 풀이 증가된 주문 흐름을 흡수하여 단기 차익거래 창구가 생성되면 자동화된...
모든 기사 보기














