💧
faucet4Testing
테스트 자산을 받고, 로컬 ERC20을 배포·민트하고, Admin 대시보드에서 잔고를 한눈에 확인하는 통합 테스트 환경.
왜 만들었나
지갑·DApp 개발 중 매번 흩어진 faucet 사이트를 돌아다니고, 로컬 Hardhat 계정에 USDT 같은 ERC20을 직접 배포·민트해서 시나리오를 만드는 게 번거로웠습니다. 자주 쓰는 테스트 체인(BTC Testnet4 · ETH Sepolia · SOL Devnet)과 로컬 Hardhat을 한 UI에서 다루도록 묶었습니다.
주요 기능
- Faucet 페이지: 네트워크·토큰 선택 → Faucet 잔고 표시 → 주소 입력·검증 → "받기" 시 Resend로 이메일 전송
- Admin 대시보드: 로컬 RPC(8545) 연결, Hardhat 기본 20계정의 ETH·토큰 잔고, 직접 전송, 지갑 생성
- ERC20 워크벤치:
FaucetToken(18 decimals),FaucetUSDT(6 decimals) 배포·민트·전송 스크립트와bin/셸 래퍼 - 로컬 노드: Hardhat node를 백그라운드로 띄우고 같은 체인에서 배포·민트·확인
구성
| 구분 | 기술 |
|---|---|
| 스마트 컨트랙트 | Solidity 0.8 + OpenZeppelin ERC20/Ownable |
| 체인 툴 | Hardhat 3 · viem |
| 프론트·API | Next.js (App Router) |
| 지원 체인 | Bitcoin Testnet4 · Ethereum Sepolia · Solana Devnet · 로컬 Hardhat |
디렉터리
faucet4Testing/
├── hardhat/
│ ├── contracts/
│ │ ├── FaucetToken.sol
│ │ └── FaucetUSDT.sol
│ ├── scripts/ # deploy / mint / transfer
│ └── bin/ # hardhat-node.sh, setup-usdt-localhost.sh ...
├── local-dashboard/ # Next.js 대시보드
│ ├── app/page.tsx # Faucet 홈
│ ├── app/admin/page.tsx # Admin (계정·잔고)
│ └── app/api/ # rpc 프록시, faucet 받기, 지갑 생성
└── scripts/faucet-sepolia-daily/ # Puppeteer + Chainstack API 자동화
흐름 한 줄 요약
bin/hardhat-node.sh로 로컬 노드(8545) 띄움setup-usdt-localhost.sh로 FaucetUSDT 배포·민트 한 번에- Admin 대시보드에서 Hardhat 20 계정의 ETH·USDT 잔고 확인 → 필요한 곳으로 전송
- 퍼블릭 테스트넷이 필요하면 Faucet 홈에서 주소 입력 후 받기
회고
"테스트용"이라는 단서가 붙으면 개발자가 무리해서 자체 도구를 만들지 않는 경향이 있는데, 막상 만들고 나니 PoC·QA·교육 자료 어디서든 매일 쓰게 됐습니다. 작은 자동화의 ROI를 다시 한 번 확인한 프로젝트.