Hyperledger Besu 란?

efforthye·2023년 1월 12일

BlockChain

목록 보기
6/6
post-thumbnail

목차

  1. 개요
  2. 핵심 기능
  3. 아키텍처
  4. 합의 알고리즘
  5. EthSigner 통합
  6. 사용 사례
  7. 시작하기
  8. 참고 자료

개요

Hyperledger Besu는 Apache 2.0 라이센스 하에 Java로 개발된 오픈소스 Ethereum 클라이언트입니다. Linux Foundation Decentralized Trust 프로젝트의 일부로, 공용 및 개인 네트워크 모두에서 실행할 수 있습니다.

주요 특징

  • Ethereum Mainnet 및 테스트넷(Holesky, Sepolia 등) 지원
  • 엔터프라이즈 애플리케이션을 위한 프라이빗 네트워크 구축
  • 다양한 합의 알고리즘 구현 (PoS, PoA, PoW)
  • EEA(Enterprise Ethereum Alliance) 클라이언트 스펙 준수

공식 링크


핵심 기능

1. Ethereum Virtual Machine (EVM)

EVM은 이더리움 블록체인 내에서 스마트 계약을 배포하고 실행하는 데 사용되는 튜링 완전(Turing-complete) 가상 머신입니다.

튜링 완전성이란?

  • 모든 계산 가능한 알고리즘을 실행할 수 있는 능력
  • 무한한 계산 처리 가능
  • 복잡한 조건부 논리와 계산 지원

Besu의 EVM 구현

  • Besu 클라이언트와 통합 또는 독립 라이브러리로 사용 가능
  • 트랜잭션 프로세서와 블록 검증기로 효율성 향상
  • 추출 가능한 EVM 구현(Extractable EVM)

2. JSON-RPC API

Besu는 노드 실행, 유지보수, 디버깅, 모니터링을 위한 커맨드라인 인터페이스와 JSON-RPC API를 포함합니다.

지원 API

  • eth: Ethereum 표준 메서드
  • net: 네트워크 정보
  • web3: Web3 유틸리티
  • debug: 디버깅 도구
  • miner: 마이닝 관련 기능
  • GraphQL API 지원

통신 프로토콜

  • HTTP를 통한 RPC
  • WebSocket을 통한 RPC
  • Pub/Sub 지원

3. 개발 도구 통합

Besu는 Hardhat, Remix, web3j 등의 도구를 사용한 스마트 계약 및 dApp 개발, 배포를 지원합니다.

호환 도구

  • Hardhat: 개발 환경 및 테스트 프레임워크
  • Remix: 브라우저 기반 IDE
  • web3j: Java 라이브러리
  • Truffle: 개발 프레임워크

아키텍처

시스템 구조

Besu의 클라이언트 아키텍처는 세 가지 주요 컴포넌트로 구성됩니다.

1. Ethereum Core

  • EVM: 스마트 계약 실행 엔진
  • Consensus: 합의 메커니즘 (PoS, PoA, PoW)
  • Transaction Pool: 트랜잭션 정보 저장
  • Synchronizer: 노드 간 동기화

2. Storage

Besu는 RocksDB 키-값 데이터베이스를 사용하여 체인 데이터를 로컬에 저장합니다.

저장 데이터 유형

  • Blockchain: 블록 헤더, 블록 바디, 트랜잭션 영수증
  • World State: 계정 상태 및 스마트 계약 저장소
  • Transaction Receipts: 트랜잭션 실행 메타데이터

3. Execution Engine

트랜잭션 처리와 블록 검증을 담당합니다.

P2P 네트워킹

Besu는 클라이언트 간 통신을 위해 Ethereum의 devp2p 네트워크 프로토콜을 구현합니다.

프로토콜

  • Discovery: UDP 기반 피어 검색
  • RLPx: TCP 기반 피어 통신
    • ETH Sub-protocol: 블록체인 상태 동기화
    • IBF Sub-protocol: IBFT2 합의 결정

플러그인 아키텍처

Besu는 모듈식 아키텍처로 구축되어 플러그인을 통한 확장이 용이합니다.

플러그인 지원

  • Plugin API를 통한 커스텀 플러그인 개발
  • 기존 오픈소스 Besu 플러그인 활용
  • 핵심 기능에 영향 없는 기능 확장

합의 알고리즘

Besu는 다양한 합의 알고리즘을 지원하여 네트워크 요구사항에 맞는 선택이 가능합니다.

합의 알고리즘 비교

특성QBFTIBFT 2.0CliqueEthashPoS
유형PoA (BFT)PoA (BFT)PoAPoWPoS
즉시 완결성
최소 검증자441--
장애 허용성2/32/31/2--
포크 가능성없음없음있음있음없음
네트워크 유형PrivatePrivatePrivatePublicPublic
권장 사용EnterpriseLegacyTestEthereum ClassicMainnet

1. QBFT (Quorum Byzantine Fault Tolerance)

QBFT는 ConsenSys와 JP Morgan이 개발한 엔터프라이즈급 합의 프로토콜로, 프라이빗 네트워크에 권장됩니다.

핵심 특징

  • 즉시 완결성: 포크 없이 모든 유효한 블록이 메인 체인에 포함
  • Byzantine Fault Tolerance: 최대 1/3의 검증자 장애 허용
  • 효율적인 리더 선출: IBFT 대비 개선된 리더 선출 프로세스
  • 통신 라운드 감소: 합의 도달에 필요한 통신 횟수 최소화

검증자 요구사항

  • 최소 4개의 검증자 필요
  • 2/3 이상의 검증자가 블록에 서명해야 체인에 삽입
  • 1/3 이상의 검증자 실패 시 네트워크 중단

사용 사례

  • 고성능 금융 시스템
  • 기업 컨소시엄 네트워크
  • 보안과 제어가 중요한 애플리케이션

공식 문서: https://besu.hyperledger.org/private-networks/how-to/configure/consensus/qbft

2. IBFT 2.0 (Istanbul Byzantine Fault Tolerance)

IBFT 2.0은 기존 프라이빗 네트워크를 위해 지원되지만, QBFT가 권장되는 엔터프라이즈급 프로토콜입니다.

동작 원리

  • 승인된 계정(검증자)이 트랜잭션과 블록을 검증
  • 검증자가 순서대로 다음 블록 생성
  • 2/3 이상의 검증자가 서명해야 블록 삽입
  • 기존 검증자가 투표를 통해 검증자 추가/제거

특징

  • 즉시 완결성
  • 포크 없음
  • 최대 30개 검증자까지 성능 저하 없음
  • 비검증자 노드는 성능에 영향 없음

공식 문서: https://besu.hyperledger.org/private-networks/how-to/configure/consensus/ibft

3. Clique (Proof of Authority)

Clique는 QBFT와 IBFT 2.0보다 장애 허용성이 높으며, 최대 절반의 검증자 실패를 허용합니다.

핵심 특징

  • 높은 장애 허용성: 최대 50%의 검증자 실패 허용
  • 단일 검증자 지원: 최소 1개의 검증자로 운영 가능
  • 빠른 블록 생성: IBFT 2.0보다 빠른 합의 도달
  • 포크 발생 가능: 즉시 완결성 없음

트레이드오프

  • 검증자 수가 증가하면 포크 확률 증가
  • 체인 재구성(chain reorganization)에 주의 필요

사용 사례

  • 테스트 환경
  • 빠른 트랜잭션 처리가 필요한 경우
  • 즉시 완결성이 필요하지 않은 네트워크

공식 문서: https://besu.hyperledger.org/private-networks/how-to/configure/consensus/clique

4. Proof of Stake (PoS)

합의 클라이언트와 함께 Besu를 사용하여 Ethereum Mainnet의 Proof of Stake에 연결하고 참여할 수 있습니다.

특징

  • Ethereum Mainnet 지원
  • 합의 클라이언트(Consensus Client)와 통합 필요
  • 에너지 효율적
  • 검증자 스테이킹 필요

5. Ethash (Proof of Work)

Ethereum Classic에서 마이닝 활동에 사용되는 작업 증명(PoW) 알고리즘입니다.

특징

  • 계산 집약적
  • 높은 에너지 소비
  • Ethereum Classic 네트워크 지원

합의 알고리즘 선택 가이드

합의 프로토콜 선택 시 핵심 질문은 즉시 완결성이 필요한지 여부입니다.

의사결정 트리

즉시 완결성이 필요한가?
├─ YES → QBFT 또는 IBFT 2.0
│   └─ 기업급 기능 필요 → QBFT (권장)
│   └─ 기존 네트워크 → IBFT 2.0
└─ NO → Clique
    └─ 테스트 환경
    └─ 빠른 트랜잭션 처리

성능 고려사항

QBFT 네트워크는 성능 저하 없이 최대 14개의 검증자까지 확장 가능합니다.


EthSigner 통합

Besu는 클라이언트 내부에서 키 관리를 지원하지 않습니다. EthSigner를 Besu와 함께 사용하여 키 저장소에 액세스하고 트랜잭션에 서명할 수 있습니다.

EthSigner란?

EthSigner는 dApp과 Ethereum 클라이언트의 JSON-RPC 인터페이스 사이에 위치하는 passthrough 서비스입니다.

주요 역할

  • 대부분의 요청을 클라이언트에 변경 없이 전달
  • 트랜잭션 수신 시 저장된 Ethereum 키로 서명 생성
  • 서명된 트랜잭션을 Ethereum 클라이언트로 전달

주요 기능

1. 개인 키 보호

  • 안전한 개인 키 저장
  • 암호화된 저장소 사용
  • 외부 접근 차단

2. 다양한 키 저장 방식

  • V3 Keystore 파일: 암호화된 로컬 파일
  • HashiCorp Vault: 클라우드 키 관리
  • Azure Key Vault: Microsoft 클라우드 보안
  • 다중 서명자: 여러 개의 키 관리

3. 프로토콜 지원

  • JSON-RPC 프로토콜
  • HTTP 및 WebSocket 연결
  • RESTful API

4. 네트워크 호환성

  • Ethereum Mainnet
  • 테스트넷 (Goerli, Sepolia 등)
  • 프라이빗 네트워크

아키텍처

┌─────────────┐
│    dApp     │
└──────┬──────┘
       │ JSON-RPC Request
       ▼
┌─────────────┐
│  EthSigner  │ ← 키 저장소 (V3/Vault)
└──────┬──────┘
       │ Signed Transaction
       ▼
┌─────────────┐
│    Besu     │
└─────────────┘

설정 예시

Besu 시작

besu --network=dev \
  --miner-enabled \
  --miner-coinbase=0xfe3b557e8fb62b89f4916b721be55ceb828dbd73 \
  --rpc-http-cors-origins="all" \
  --host-allowlist="*" \
  --rpc-http-enabled \
  --rpc-http-port=8590 \
  --data-path=/path/to/datadir

EthSigner 시작

ethsigner --chain-id=2018 \
  --downstream-http-port=8590 \
  file-based-signer \
  --key-file=/path/to/keyFile \
  --password-file=/path/to/passwordFile

보안 고려사항

중요: EthSigner는 Chain ID가 설정된 네트워크에서만 작동합니다. Genesis 파일에 최소한 Spurious Dragon 마일스톤(eip158Block)이 포함되어 있어야 합니다.

공식 문서


사용 사례

1. 금융 서비스

은행과 금융 기관이 무역 금융, 결제 네트워크, 국경 간 결제 시스템을 구축할 수 있습니다.

활용 분야

  • 무역 금융 플랫폼
  • 실시간 결제 시스템
  • 국경 간 송금
  • 증권 거래 및 정산
  • 보험 청구 처리 자동화

2. 공급망 관리

제조업체, 소매업체, 물류 제공업체가 투명하고 감사 가능한 공급망을 생성할 수 있습니다.

주요 기능

  • 제품 추적 및 검증
  • 지속 가능한 관행 추적
  • 탄소 크레딧 관리
  • 원산지 증명
  • 가짜 상품 방지

3. 의료 서비스

민감한 환자 데이터와 의료 기록의 안전한 공유를 보장합니다.

활용 영역

  • 환자 데이터 공유
  • 의료 기록 관리
  • 임상 시험 데이터
  • HIPAA 규정 준수
  • 상호 운용성

4. 게임 산업

Besu의 확장성, 낮은 지연 시간, 스마트 계약 기능으로 분산화되고 투명한 게임 내 경제를 구축할 수 있습니다.

적용 사례

  • 게임 내 자산 소유권
  • NFT 기반 아이템
  • 플레이어 간 거래
  • 투명한 보상 시스템

5. 미디어 및 엔터테인먼트

활용 방안

  • 콘텐츠 권리 관리
  • 로열티 추적
  • 투명한 수익 분배
  • 디지털 저작권 보호

6. 공공 부문

정부 기관이 시민 서비스, 투표 시스템, 규제 준수 플랫폼을 위한 기관 간 네트워크를 구축할 수 있습니다.

적용 분야

  • 전자 투표
  • 신원 관리
  • 토지 등기
  • 정부 서비스 포털

7. 중앙은행 디지털 화폐 (CBDC)

국가 통화의 안전하고 효율적인 디지털화를 위한 확장 가능하고 상호 운용 가능한 플랫폼을 구축할 수 있습니다.


시작하기

시스템 요구사항

최소 사양

  • Java 11 이상
  • 4GB RAM
  • 2 CPU 코어
  • 100GB 디스크 공간 (체인 데이터)

권장 사양

  • Java 17
  • 8GB RAM
  • 4 CPU 코어
  • SSD 스토리지

설치

1. Besu 설치

# Homebrew (macOS)
brew tap hyperledger/besu
brew install besu

# Docker
docker pull hyperledger/besu:latest

# 바이너리 다운로드
wget https://github.com/hyperledger/besu/releases/download/VERSION/besu-VERSION.tar.gz

2. 네트워크 시작

개발 네트워크

besu --network=dev \
  --miner-enabled \
  --miner-coinbase=<YOUR_ADDRESS> \
  --rpc-http-enabled \
  --rpc-http-cors-origins="all" \
  --host-allowlist="*"

메인넷 연결

besu --network=mainnet \
  --rpc-http-enabled \
  --sync-mode=FAST

프라이빗 네트워크

# Genesis 파일 생성
besu operator generate-blockchain-config \
  --config-file=config.json \
  --to=network \
  --private-key-file-name=key

# 노드 시작
besu --genesis-file=network/genesis.json \
  --data-path=data \
  --rpc-http-enabled

빠른 시작 가이드

Developer Quickstart 사용

git clone https://github.com/ConsenSys/quorum-dev-quickstart.git
cd quorum-dev-quickstart
npx quorum-dev-quickstart

이 도구는 자동으로:

  • QBFT 네트워크 설정
  • 모니터링 도구(Grafana, Prometheus) 구성
  • Block Explorer 설치
  • 샘플 스마트 계약 배포

모니터링

Besu는 Prometheus 또는 debug_metrics JSON-RPC API 메서드를 사용하여 노드 성능을 모니터링할 수 있습니다.

도구

  • Prometheus: 메트릭 수집
  • Grafana: 시각화 대시보드
  • Quorum Explorer: 네트워크 탐색기

참고 자료

공식 문서

합의 알고리즘

EthSigner

추가 자료

커뮤니티

엔터프라이즈 지원


라이센스

Hyperledger Besu는 Apache License 2.0 하에 배포됩니다.

Apache 2.0 라이센스 특징

  • 상업적 사용 가능
  • 수정 및 배포 자유
  • 특허 사용권 부여
  • 상표권 제한
  • 책임 제한

라이센스 전문: https://www.apache.org/licenses/LICENSE-2.0


결론

Hyperledger Besu는 공용 및 프라이빗 블록체인 네트워크 모두에서 사용할 수 있는 강력하고 유연한 Ethereum 클라이언트입니다. 다양한 합의 알고리즘 지원, 엔터프라이즈급 기능, 그리고 활발한 커뮤니티를 통해 기업 블록체인 솔루션 구축에 이상적인 선택입니다.

Besu를 선택해야 하는 이유

  • Ethereum 생태계와의 완벽한 호환성
  • 엔터프라이즈급 보안 및 거버넌스
  • 유연한 합의 알고리즘 선택
  • 활발한 오픈소스 커뮤니티
  • Apache 2.0 라이센스의 자유로움

0개의 댓글