핵심 인사이트
- 소프트 포크(Soft Fork)는 하위 호환(Backward Compatible) 프로토콜 업그레이드 — 업그레이드하지 않은 노드(구버전)도 새 규칙으로 만들어진 블록을 유효하다고 인식하며, 네트워크 분리 없이 규칙을 강화할 수 있다.
- 소프트 포크의 핵심은 "규칙을 강화(Tighten)"하는 것 — 이전에 허용되던 트랜잭션 유형을 새 규칙에서 제한하거나, 기존 필드를 재해석하여 새 기능을 추가한다. 구버전 노드는 새 블록이 기존 규칙을 여전히 따르는지만 검증하므로 분기 없이 동작한다.
- 비트코인의 SegWit(Segregated Witness)이 소프트 포크의 대표 사례 — 트랜잭션 서명 데이터를 별도 영역으로 분리하여 사실상 블록 크기를 늘리면서도 구버전 노드와의 호환성을 유지한 기술적 성취다.
Ⅰ. 소프트 포크 개념
포크 유형 비교:
하드 포크 (Hard Fork):
규칙 완화 (기존에 허용 안 되던 것을 허용)
또는 근본적 규칙 변경
구버전 노드: 새 블록을 무효로 인식
→ 체인 분리 (구버전 체인 vs 신버전 체인)
→ 모든 노드의 강제 업그레이드 필요
예: Ethereum의 DAO 포크 (ETH vs ETC)
소프트 포크 (Soft Fork):
규칙 강화 (기존에 허용되던 것을 제한)
구버전 노드: 새 블록을 유효로 인식 (하위 호환)
→ 체인 분리 없음
→ 채굴자 과반수 지지만으로 활성화 가능
예: 비트코인 P2SH (2012), SegWit (2017)
소프트 포크가 가능한 이유:
구버전: "이 블록이 내 규칙을 위반하지 않는가?" → 패스
신버전: "이 블록이 새로운 엄격한 규칙을 준수하는가?" → 추가 검증
새 블록은 두 규칙을 동시에 만족:
- 기존 규칙: 준수 (구버전 노드 통과)
- 새 규칙: 준수 (신버전 노드 통과)
소프트 포크 한계:
새 기능이 기존 포맷 내에서 구현되어야 함
근본적 구조 변경 불가
엔지니어링 복잡도 높음 (하위 호환성 유지)
📢 섹션 요약 비유: 소프트 포크 = 도서관 규칙 강화 — 기존: "책 반납 기한 없음". 신규: "2주 내 반납 필수". 기존 규칙엔 위반 안 됨(하위 호환). 새 규칙 모르는 사람도 2주 안에 반납하면 OK!
Ⅱ. BIP (Bitcoin Improvement Proposal) 활성화
BIP (Bitcoin Improvement Proposal):
비트코인 프로토콜 변경 제안 문서
소프트 포크 활성화 메커니즘:
IsSuperMajority (초기 방식):
950/1000 블록이 특정 버전 신호 → 활성화
문제: 채굴자가 신호 보내도 실제 업그레이드 안 함
BIP9 (Version Bits):
블록 헤더 versionbits 필드 활용
2,016블록마다 75% 이상 신호 → 활성화
타임아웃 없으면 실패 처리
예: SegWit (BIP141) BIP9으로 처음 시도
→ 채굴자 저항으로 실패
BIP148 (UASF: User Activated Soft Fork):
사용자/노드 주도 활성화
특정 날짜 이후 SegWit 미신호 블록 거부
"채굴자가 아닌 사용자가 규칙 집행"
→ 채굴자 게임 이론적 압박
BIP91:
80% 채굴자 동의 → 2,016블록 내 활성화
SegWit 활성화에 실제 사용됨
Taproot 활성화 (2021):
Speedy Trial:
2,016블록 기간 동안 90% 채굴자 신호
→ 성공 시 즉시 확정 (타임아웃 후 락인)
결과: 90%+ 신호 → 826,848블록에서 활성화
📢 섹션 요약 비유: BIP 활성화 = 법안 통과 과정 — BIP9(국회 75% 찬성), UASF(국민 청원으로 강제), BIP91(신속처리). SegWit은 채굴자 저항에도 결국 사용자 압박으로 통과!
Ⅲ. SegWit (Segregated Witness)
SegWit (BIP141, 2017):
"서명(Witness) 데이터를 분리(Segregate)"
문제 배경:
비트코인 블록 크기: 1MB 제한
트랜잭션 서명 데이터: 전체의 ~60~70%
처리량 병목:
1MB 블록 → 평균 7 TPS
트랜잭션 변조 취약성(TxID Malleability):
서명 데이터 변경 → 트랜잭션 ID 변경 가능
→ Lightning Network 구현의 전제 조건 해결 필요
SegWit 해결책:
구조 변경:
기존: [버전][입력][출력][잠금 시간]
SegWit: [버전][마커=0][플래그][입력][출력][증인(서명)][잠금 시간]
서명(Witness) = 별도 필드로 분리
가중치 시스템 (Weight):
기본 데이터: 4 weight units/byte
증인(서명) 데이터: 1 weight unit/byte
블록 한도: 4,000,000 weight units
실질 효과:
순수 SegWit 트랜잭션 블록: 최대 ~1.8~2.7MB 동등
→ 처리량: 7 TPS → 약 14~18 TPS
하위 호환성:
구버전 노드: Witness 필드 무시 → 블록 유효로 인식
신버전 노드: Witness 검증 → 추가 보안
부가 효과:
TxID Malleability 해결
→ Lightning Network 활성화 가능
→ 레이어 2 결제 채널 기반 구축
📢 섹션 요약 비유: SegWit = 여권 수하물 분리 — 여권(거래 데이터)과 수하물(서명)을 분리해서 같은 비행기(블록)에 더 많은 여행자(트랜잭션) 탑승. 수하물 요금 할인(서명 데이터 가중치 1/4)!
Ⅳ. Taproot 소프트 포크
Taproot (BIP340/341/342, 2021):
비트코인 최대 소프트 포크 중 하나
3가지 BIP 결합:
BIP340: Schnorr Signatures (슈노르 서명):
기존 ECDSA → Schnorr으로 교체
장점:
선형성(Linearity): 여러 서명 → 하나로 집계
MuSig: n-of-n 다중 서명을 단일 서명처럼
공간 절약: ECDSA 71바이트 → Schnorr 64바이트
BIP341: Taproot:
MAST (Merklized Alternative Script Trees)와 결합
스마트 컨트랙트 프라이버시:
복잡한 조건 스크립트 → Merkle 트리로 숨기기
"키 경로(Key Path)": 모두 동의 시 단순 서명처럼
"스크립트 경로": 조건 분기 시 해당 경로만 공개
장점:
복잡한 계약 = 단순 결제와 구분 불가 → 프라이버시
Merkle 브랜치만 공개 → 공간 효율
BIP342: Tapscript:
Taproot 스크립트 해석 규칙 업데이트
향후 업그레이드 유연성 추가 (OP_SUCCESS)
Taproot 활성화 결과:
826,848 블록 (2021년 11월)
채굴자 90%+ 신호로 소프트 포크 완료
즉각적 효과:
멀티시그 비용 감소
Lightning Network 채널 비용 절감
CoinJoin 개인정보 보호 향상
📢 섹션 요약 비유: Taproot = 비밀 금고 업그레이드 — 복잡한 잠금장치(스마트 컨트랙트)가 있어도 모두 동의하면 일반 열쇠(단순 서명)처럼 사용. 복잡한 계약도 외부에선 평범해 보임(프라이버시)!
Ⅴ. 실무 시나리오 — 거래소 SegWit 도입
암호화폐 거래소 SegWit 마이그레이션:
배경:
2017년 비트코인 수수료 급등
1 BTC 전송: 수수료 $30~50 (일반 유저 부담)
원인: 블록 공간 부족 (1MB, 7 TPS 한계)
SegWit 도입 의사결정:
비용 절감: SegWit 트랜잭션 수수료 약 30~40% 절감
구버전 노드: 기존 비SegWit 주소로 입금 계속 처리
신규: bech32 주소(bc1...)로 SegWit 활성화
마이그레이션 과정:
Phase 1 (1개월): 출금 SegWit 전환
거래소 HOT 지갑: Legacy → SegWit 지갑
출금 트랜잭션: SegWit 타입으로 전환
수수료 절감: 즉시 발생
Phase 2 (3개월): 입금 주소 SegWit 전환
신규 입금 주소: bc1... (bech32)
기존 주소 (1..., 3...): 계속 지원 (Legacy)
Phase 3: P2SH-SegWit (3...주소) 단계적 폐지
결과:
거래소 비트코인 출금 수수료: $30 → $10 (67% 감소)
블록 공간 효율: 약 40% 개선
사용자 불만 감소
교훈:
소프트 포크 특성 덕분에:
구버전 지갑도 새 SegWit 트랜잭션 수신 가능
= 거래소 마이그레이션이 점진적으로 가능
(하드 포크였다면 동시 전환 필요 = 위험)
📢 섹션 요약 비유: 거래소 SegWit 도입 = 택배 박스 슬림화 — 같은 내용물(거래)을 얇은 박스(SegWit)에 넣어 배송비(수수료) 67% 절감! 기존 박스(Legacy) 고객도 그대로 받을 수 있어서 혼란 없이 전환!
📌 관련 개념 맵
소프트 포크 (Soft Fork)
+-- 특성: 하위 호환, 규칙 강화
+-- 활성화 메커니즘
| +-- BIP9 (채굴자 신호)
| +-- UASF (사용자 활성화)
| +-- Speedy Trial
+-- 대표 사례
| +-- P2SH (2012)
| +-- SegWit (2017)
| +-- Taproot (2021)
+-- 비교
| +-- 하드 포크 (체인 분리)
+-- BIP 프로세스
+-- 제안 → 검토 → BIP → 구현 → 활성화
📈 관련 키워드 및 발전 흐름도
[비트코인 초기 (2009~)]
단순 스크립트 시스템
포크 개념 미정립
|
v
[P2SH 소프트 포크 (2012)]
복잡한 스크립트를 해시로
소프트 포크 첫 성공 사례
|
v
[블록 크기 전쟁 (2015~2017)]
SegWit vs 하드 포크 논쟁
비트코인 캐시(BCH) 하드 포크 분리
|
v
[SegWit 활성화 (2017)]
UASF + BIP91 조합
Lightning Network 기반
|
v
[Taproot (2021)]
Schnorr + MAST
프라이버시 + 효율성
|
v
[현재: 차세대 BIP 논의]
OP_CTV (Covenant)
비트코인 스마트 컨트랙트
👶 어린이를 위한 3줄 비유 설명
- 소프트 포크 = 도서관 규칙 강화 — "반납 기한 없음"에서 "2주 이내 반납" 규칙 추가. 기존 규칙엔 위반 안 됨. 구버전 몰라도 OK!
- SegWit = 여권 수하물 분리 — 서명(수하물)을 따로 분리해서 블록(비행기)에 더 많은 거래(승객) 탑승. 수수료 67% 절감!
- 소프트 포크 장점 = 점진적 전환 — 하드 포크(전체 동시 교체)와 달리 단계별 전환 가능. 거래소가 조용히 SegWit으로 이전!