
SegWit은 “Segregated Witness”(분리된 서명)의 줄임말로, 비트코인의 거래 구조를 변경해 서명(증명, witness) 데이터를 거래 본문에서 분리한 프로토콜 업그레이드입니다. 2017년 소프트포크(BIP141 등)로 활성화되었습니다. 주요 내용과 효과는 다음과 같습니다. 핵심 아이디어 - 거래의 서명(스크립트 시그니처)을 별도의 “위트니스(witness)” 영역으로 분리하여 거래의 나머지(입출력 등)와 따로 저장/전송하도록 함. - 분리된 위트니스는 전통적 거래 식별자(txid) 계산에서 제외되어, 서명이 바뀌어도 txid가 변하지 않음. 주요 기술적 변화 - 트랜잭션 직렬화에 “marker”와 “flag” 필드가 추가되어 위트니스 유무를 표시. - txid(기존 거래 ID)는 위트니스 데이터를 제외한 부분으로 계산되고, wtxid(전 체인에서의 전체 거래 ID)는 위트니스를 포함해 계산됨. - 블록 용량 계산 방식이 바뀌어 “weight”와 “vsize(virtual size)” 개념이 도입됨: - weight = (stripped_size × 4) + witness_size (stripped_size = 위트니스가 제거된 바이트 수) - vsize = ceil(weight / 4) (실제 수수료 계산에 사용됨) - 이로 인해 위트니스 바이트는 가중치가 낮아 상대적으로 “할인”되어 같은 블록에 더 많은 유효 데이터가 들어갈 수 있음. 주요 이점 - 거래 변조 가능성(transaction malleability) 해결: 서명이 txid 계산에서 빠지므로 제3자가 서명 바이트를 바꿔 txid를 변경하는 공격을 막음. 이로써 라이트닝 네트워크 같은 오프체인/다단계 프로토콜 구현이 쉬워짐. - 효율적 용량 증가: 위트니스 할인 덕분에 동일 블록에서 더 많은 유효 거래를 포함할 수 있어 사실상의 확장 효과(수수료 하락 포함). - 수수료 절감: 위트니스가 할인되므로 SegWit을 쓰면 동일한 전송에 대해 낮은 수수료가 적용되는 경우가 많음. - 스크립트 검증 개선: BIP143 등에서 서명 검증 방식가 명확해져 트랜잭션 서명 검증이 간단하고 안전해짐. 호환성 및 주소 형식 - 소프트포크로 도입되어 구형 노드와의 호환성을 유지함(구형 노드는 위트니스를 무시). - SegWit 전용 주소(비크32, bech32 형식, 예: bc1...)와 P2SH로 래핑한 SegWit 주소(기존 지갑 호환용, 3으로 시작)가 있음. - SegWit 사용은 지갑과 거래소의 지원 여부에 따라 결정됨. 요약 SegWit은 서명 데이터를 거래 본문에서 분리해 거래 변조 문제를 해결하고, 블록당 처리 효율을 올리며 수수료를 낮출 수 있게 만든 비트코인 소프트포크 업그레이드입니다. 특히 라이트닝 같은 2계층 솔루션을 현실적으로 가능하게 한 핵심 변경입니다.