Skip to content

DogDogPaw/dogdogpaw-faucet-server

Repository files navigation

Besu QBFT Faucet Service

gRPC 마이크로서비스로 구현된 Hyperledger Besu QBFT 네트워크용 Faucet 서비스입니다.

기능

  • ETH 전송: 테스트 ETH를 지갑 주소로 전송
  • 잔액 조회: Faucet 또는 특정 주소의 잔액 확인
  • 트랜잭션 히스토리: Faucet 사용 기록 조회
  • Cooldown 관리: 중복 요청 방지 (기본 60분)
  • Health Check: 서비스 상태 모니터링

설치

npm install

환경 설정

.env 파일을 생성하고 다음 내용을 설정:

# Besu RPC Configuration
BESU_RPC_URL=http://ing-besunetwork-besurpci-c2714-112134690-ab00043af5a6.kr.lb.naverncp.com
BESU_CHAIN_ID=1337

# Faucet Configuration
FAUCET_PRIVATE_KEY=0xc7e83582eaaea59b1a933eb6083e7d19c74612a773c7fbab19246ba511cc2ebd
FAUCET_DEFAULT_AMOUNT=100
FAUCET_MAX_AMOUNT=1000
FAUCET_COOLDOWN_MINUTES=60

# gRPC Configuration
GRPC_PORT=50054
GRPC_HOST=0.0.0.0

실행

# 개발 모드
npm run start:dev

# 프로덕션 빌드
npm run build
npm run start:prod

API Gateway 연동

API Gateway의 .env에 다음 추가:

FAUCET_SERVICE_URL=localhost:50054

API 엔드포인트 (API Gateway를 통해)

1. ETH 요청

POST /faucet/request
Content-Type: application/json

{
  "walletAddress": "0xYourAddress",
  "amount": "100"  // Optional, default 100 ETH
}

2. 잔액 조회

GET /faucet/balance?address=0xYourAddress

3. 히스토리 조회

GET /faucet/history?address=0xYourAddress&limit=10

4. Health Check

GET /faucet/health

Kubernetes 배포

apiVersion: apps/v1
kind: Deployment
metadata:
  name: faucet-service
  namespace: petdid-network
spec:
  replicas: 1
  selector:
    matchLabels:
      app: faucet-service
  template:
    metadata:
      labels:
        app: faucet-service
    spec:
      containers:
      - name: faucet-service
        image: your-registry/faucet-service:latest
        ports:
        - containerPort: 50054
          name: grpc
        env:
        - name: BESU_RPC_URL
          value: "http://besu-rpc-external:8545"
        - name: FAUCET_PRIVATE_KEY
          valueFrom:
            secretKeyRef:
              name: faucet-secret
              key: private-key
---
apiVersion: v1
kind: Service
metadata:
  name: faucet-service
  namespace: petdid-network
spec:
  selector:
    app: faucet-service
  ports:
  - port: 50054
    targetPort: 50054
    name: grpc

보안 주의사항

  • FAUCET_PRIVATE_KEY는 반드시 Kubernetes Secret으로 관리
  • Production 환경에서는 Genesis 계정 대신 별도 Faucet 전용 계정 사용 권장
  • Rate limiting 및 IP 화이트리스트 설정 권장
  • Cooldown 시간을 적절히 조정하여 남용 방지

문제 해결

Insufficient Balance 에러

  • Faucet 계정의 잔액 확인: GET /faucet/balance
  • Genesis 계정에서 Faucet 계정으로 ETH 전송 필요

Connection Refused

  • Besu RPC URL이 올바른지 확인
  • 네트워크 연결 상태 확인
  • Health check 엔드포인트로 서비스 상태 확인

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published