📦 SegWit Segregated Witness
2017년 비트코인 업그레이드로, 서명("증인") 데이터를 트랜잭션 안에서 별도 구역으로 분리한 것. 덕분에 블록마다 여유가 생기고 오래된 버그 하나도 깔끔하게 고쳐졌어요.
🚚 쉽게 풀면 — 트럭과 트레일러
비트코인 트랜잭션에는 두 가지가 들어있어요: 실제 내용(어떤 코인이 어디로 가는지)과 유효성 증명(디지털 서명). 마치 배달 트럭에서 두꺼운 서명 영수증들이 짐 공간을 차지하는 것처럼요. SegWit은 그 영수증들을 뒤에 달린 가벼운 트레일러로 옮겨요. 영수증은 여전히 따라오며 배달을 증명하지만, 트럭(1MB 블록)에는 실제 짐이 훨씬 많이 실리게 됩니다.
⚖️ 새 한도 이해하기 — 메가바이트가 아닌 웨이트
SegWit은 기존 1MB 블록 크기 한도를 4,000,000 웨이트 유닛 한도로 바꿨어요. 핵심은 두 종류의 데이터를 다르게 계산한다는 점이에요.
| 데이터 종류 | 비용 | 설명 |
|---|---|---|
| 📤 일반 데이터 | 4 웨이트 유닛 / 바이트 | 트랜잭션이 하는 일 |
| ✍️ 증인 데이터 | 1 웨이트 유닛 / 바이트 | 서명 — 75% 할인 |
📊 이 할인 덕분에 블록당 더 많은 트랜잭션이 들어가요. 실질 처리 용량은 약 1.7~2배로 늘어났고, 꽉 찬 블록도 실제 데이터 기준으로는 1.8MB 안팎이에요.
🐛 고쳐진 버그 — 트랜잭션 가변성
SegWit 이전에는 트랜잭션 ID(TXID)를 계산할 때 서명 데이터도 포함됐어요. 누군가 서명을 살짝 바꾸면 TXID가 달라지면서, 그 트랜잭션을 추적하던 소프트웨어를 혼란에 빠뜨릴 수 있었죠. 이를 트랜잭션 가변성이라고 해요. SegWit은 TXID를 비증인 데이터만으로 계산하도록 바꿔 이 문제를 해결했어요. 바로 이 수정 덕분에 라이트닝 네트워크와 같은 레이어 2 시스템이 안정적으로 돌아갈 수 있게 됐어요.
🔁 왜 아무것도 안 깨졌나 — 소프트 포크
SegWit은 하위 호환 소프트 포크(BIP 141) 방식으로 적용됐어요. 업그레이드하지 않은 노드도 계속 작동했고, 서명 데이터만 제거된 채로 수신하면 그만이었죠. 새 코인도, 체인 분리도 없었어요. 2017년 8월 9일에 잠금(lock-in)되고, 약 2주 뒤 블록 481,824쯤에서 적용됐어요. 비교해 보고 싶다면 하드 포크가 어떻게 다른지 살펴보세요.
🏷️ 초보자가 SegWit을 만나는 곳 — 주소 형식
SegWit은 주로 지갑 주소 형식에서 체감돼요. SegWit 주소를 고르면 증인 데이터가 할인되기 때문에 수수료가 줄어드는 경우가 많아요.
- 3️⃣ Nested SegWit —
3으로 시작하는 P2SH 주소; 구형이지만 지원 범위가 넓어요 - 🔤 Native SegWit —
bc1q로 시작하는 bech32 주소; 보통 수수료가 가장 낮아요 - 🌿 Taproot —
bc1p로 시작하는 bech32m 주소; Taproot는 SegWit v0의 기반 위에 만들어져 있어요
❓ 자주 묻는 질문
- SegWit으로 비트코인 블록 크기가 4MB가 된 건가요?
- 아니요. 새 한도는 4,000,000 웨이트 유닛이지 4MB가 아니에요. 실제 트랜잭션은 일반 데이터와 증인 데이터가 섞여 있어서, 꽉 찬 블록도 실제 데이터 기준으로는 보통 1.8MB 안팎에 머물러요.
- SegWit이 새 코인을 만들거나 체인을 분리한 건가요?
- 아니요. SegWit은 하위 호환 소프트 포크라서 업그레이드하지 않은 노드도 계속 작동했고, 새 코인이나 별도 체인이 생기지 않았어요. 비트코인 캐시는 당시 확장성 논쟁에서 비롯된 별개의 하드 포크로, SegWit 자체와는 달라요.
- SegWit을 쓰려면 내가 뭔가 해야 하나요?
- 지갑에서 SegWit 주소를 고르면 거의 끝이에요. 네이티브 SegWit 주소는 'bc1q'로 시작하고, 증인 데이터가 할인되기 때문에 보통 수수료가 가장 낮아요. 구형 주소도 계속 쓸 수 있지만 수수료가 조금 더 나와요.