비트코인 생태계는 다양한 하드포크를 통해 발전해왔으며, 그중 대표적인 것이 Bitcoin Core(BTC), Bitcoin Cash(BCH), **Bitcoin SV(BSV)**입니다. 이들은 모두 동일한 블록 구조에서 출발했지만, 확장성과 성능 개선을 위해 서로 다른 방향으로 발전해왔습니다. 특히 Bitcoin SV는 “무제한 확장성”을 목표로 초대형 블록과 대량 트랜잭션 처리를 위한 구조로 발전했습니다.
공통된 기본 블록 구조
BTC, BCH, BSV 모두 블록의 기본 구조는 동일합니다:
class CBlock {
CBlockHeader header;
std::vector<CTransactionRef> vtx;
};
CBlockHeader
: 블록 헤더 (이전 블록 해시, 머클 루트 등)vtx
: 트랜잭션 리스트 (최신 Bitcoin Core에서는 CTransactionRef 타입의 shared_ptr을 사용)
이러한 코드 구조는 기본적으로 동일하지만, 블록 크기 제한과 내부 처리 방식에서 큰 차이가 있습니다.
BSV의 초대형 블록 처리 전략
Bitcoin SV는 사실상 블록 크기 제한을 제거했습니다. 이는 BTC의 4MB 제한과 BCH의 32MB 제한과는 크게 대비됩니다. 실제로 BSV는 2021년 STN(Scaling Test Network)에서 하나의 블록에 1,640만 개의 트랜잭션을 포함한 기록을 세웠습니다. 이는 비트코인 생태계에서 가장 큰 처리량입니다.
그럼에도 일반 노드에서는 이런 대형 블록을 자주 볼 수 없는 이유는 다음과 같습니다:
- 실험 목적의 이벤트: 이런 대규모 테스트는 주로 테스트 네트워크에서 진행되며, 메인넷에서는 일반적이지 않습니다.
- 보수적인 기본 설정: 대부분의
bitcoind
노드는 기본값으로 보수적인 블록 크기 제한을 설정하고 있습니다 (-maxblocksize
옵션). - 특수 노드 필요: BSV의 Teranode와 같은 고성능 처리용 노드만이 이런 초대형 블록을 효과적으로 처리할 수 있습니다.
- 네트워크 전파 문제: 대형 블록은 네트워크 전파와 검증 지연 문제를 일으킬 수 있어 많은 노드 운영자들이 기피하는 경향이 있습니다.
블록 확장 관련 주요 차이점
항목 | Bitcoin Core | Bitcoin SV |
---|---|---|
블록 크기 제한 | MAX_BLOCK_SERIALIZED_SIZE = 4MB | 제한 없음 (-maxblocksize 옵션으로 설정 가능) |
구현 위치 | src/consensus/consensus.h | 동일하지만 내부 조건 제거 |
트랜잭션 전파 | 제한된 mempool 기반 | 병렬 전파, 압축 블록 가능 |
스크립트 정책 | MAX_SCRIPT_SIZE , OP_RETURN 제한 | 대부분 제한 해제 (데이터 저장 가능) |
Bitcoin SV는 CheckBlock()
내에서 block.vtx.size()
에 대한 상한 검증 자체를 제거하여, 수천만 개의 트랜잭션도 제한 없이 포함할 수 있게 설계되어 있습니다.
메모리 측정의 어려움
C++로 구현된 비트코인 노드 시스템은 대부분 포인터 기반 동적 할당 구조로 설계되어 있어, 블록이나 트랜잭션이 메모리에서 차지하는 정확한 크기를 실시간으로 측정하기 어렵습니다.
그 이유는 다음과 같습니다:
- 포인터 중첩 구조: 최신 비트코인 코드에서는
CTransactionRef
와 같은 shared_ptr 포인터 타입을 사용하여 트랜잭션을 참조합니다. 이는 메모리 효율성을 높이지만 실제 메모리 사용량 측정을 복잡하게 만듭니다. - 참조 카운팅 기반 메모리 관리: 여러 데이터 구조가 동일한 트랜잭션 객체를 공유하여 메모리 사용을 최적화합니다. Bitcoin Core 개발자들이 PR #9125에서 언급했듯이, “트랜잭션은 고아풀, 메모리풀, 릴레이풀 등 여러 데이터 구조 간에 공유됩니다.”
- 동시성 캐시 구조:
CoinsViewCache
, LRU 캐시 등 다양한 캐싱 메커니즘이 복잡한 메모리 점유 패턴을 만듭니다. - 파일-메모리 이중 구조: 블록체인 데이터는 디스크와 메모리 사이에서 복잡한 적재 메커니즘을 가집니다.
이러한 구조적 특성으로 인해, 특히 BSV와 같이 대형 블록을 처리하는 시스템에서는 메모리 사용량이 시점과 상황에 따라 크게 변할 수 있으며, 블록 하나가 차지하는 메모리 footprint를 명확히 정의하기 어렵습니다.
Teranode: BSV의 차세대 노드 솔루션
BSV는 초대형 블록 처리 문제를 해결하기 위해 Teranode라는 차세대 노드 시스템을 개발 중입니다. Teranode는 다음과 같은 특징을 가집니다:
- 모듈화된 아키텍처: 단일 모놀리식 노드 대신 비즈니스 레이어, 네트워크 레이어, 프로세스 레이어, 스토리지 레이어로 분리된 마이크로서비스 아키텍처를 채택합니다.
- 테라바이트 규모 처리: 최종 목표는 1TB(1백만 MB) 크기의 블록을 처리하여 초당 700만 트랜잭션, 블록당 40억 트랜잭션을 지원하는 것입니다.
- UTXO 최적화: 대형 블록에서 발생하는 방대한 UTXO(미사용 트랜잭션 출력) 데이터베이스를 효율적으로 관리하기 위한 특별한 솔루션을 제공합니다.
결론
비트코인 SV는 블록 크기와 트랜잭션 처리량 측면에서 매우 공격적인 확장 전략을 취하고 있습니다. 그러나 C++ 기반의 포인터 중심 메모리 구조는 정확한 메모리 측정을 어렵게 만들어, 대규모 확장에 있어 중요한 고려사항이 됩니다.
Teranode와 같은 차세대 솔루션은 메모리 관리와 블록 처리 효율성을 크게 향상시킬 것으로 기대되지만, 동시에 이런 대규모 확장 접근법은 노드 분산화, 네트워크 지연, 검증 복잡성 등의 새로운 과제를 제시합니다.
현재 BSV는 1,640만 트랜잭션이 포함된 블록을 처리하는 능력을 입증했지만, 이러한 대규모 처리 능력이 실제 메인넷에서 안정적으로 구현되기 위해서는 계속해서 기술적 혁신이 필요할 것입니다.
답글 남기기