핵심 인사이트

  1. 소프트 포크(Soft Fork)는 하위 호환(Backward Compatible) 프로토콜 업그레이드 — 업그레이드하지 않은 노드(구버전)도 새 규칙으로 만들어진 블록을 유효하다고 인식하며, 네트워크 분리 없이 규칙을 강화할 수 있다.
  2. 소프트 포크의 핵심은 "규칙을 강화(Tighten)"하는 것 — 이전에 허용되던 트랜잭션 유형을 새 규칙에서 제한하거나, 기존 필드를 재해석하여 새 기능을 추가한다. 구버전 노드는 새 블록이 기존 규칙을 여전히 따르는지만 검증하므로 분기 없이 동작한다.
  3. 비트코인의 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줄 비유 설명

  1. 소프트 포크 = 도서관 규칙 강화 — "반납 기한 없음"에서 "2주 이내 반납" 규칙 추가. 기존 규칙엔 위반 안 됨. 구버전 몰라도 OK!
  2. SegWit = 여권 수하물 분리 — 서명(수하물)을 따로 분리해서 블록(비행기)에 더 많은 거래(승객) 탑승. 수수료 67% 절감!
  3. 소프트 포크 장점 = 점진적 전환 — 하드 포크(전체 동시 교체)와 달리 단계별 전환 가능. 거래소가 조용히 SegWit으로 이전!