본문으로 건너뛰기

세그윗

세그윗(SegWit)은 비트코인 거래에서 서명 데이터를 분리해 별도의 영역에 두는 업그레이드입니다. 이름은 ‘분리된 증인’을 뜻하는 Segregated Witness의 줄임말입니다.

세그윗은 거래를 담는 방식과 블록 크기를 계산하는 방식을 바꾸었습니다. 그 결과 증인 데이터에 낮은 가중치를 적용해 같은 무게 한도 안에 더 많은 거래를 담을 여지가 생겼고, 거래 식별자가 서명 변화에 따라 달라지는 문제도 완화되었습니다.

서명 때문에 거래 ID가 달라지는 문제

기존 거래 구조에서는 서명이 거래 내용과 한 덩어리로 포함되어 있었습니다. 이때 서명이 조금만 달라져도 거래 전체의 식별자, 즉 거래 ID가 달라질 수 있었습니다.

내용은 사실상 같은데 이름표만 바뀌는 셈입니다. 거래를 ID로 가리키는 시스템에서는 이런 성질이 문제가 됩니다. 아직 블록에 들어가지 않은 거래를 바탕으로 다음 거래를 미리 만들기도 어려워집니다.

이 문제는 라이트닝 네트워크처럼 거래를 이어서 처리하는 방식에도 장애가 될 수 있었습니다. 거래를 안정적으로 가리킬 수 있어야 다음 단계의 거래를 미리 준비할 수 있기 때문입니다.

봉인을 별도 칸에 두는 비유

서명이 찍힌 봉투를 생각해 보겠습니다. 봉인 모양이 조금 달라지면 봉투 전체가 다른 것처럼 보일 수 있습니다. 편지 내용은 그대로인데 겉모습과 이름표가 달라지는 것입니다.

세그윗은 봉인을 봉투 밖의 별도 칸에 두는 방식과 비슷합니다. 그러면 본래 봉투의 모양은 안정적으로 유지되고, 봉인은 옆 칸에서 따로 확인할 수 있습니다.

이 구조에서는 서명이 달라져도 거래 본체의 식별자가 영향을 덜 받습니다. 거래를 안정적으로 가리킬 수 있게 된 것이 중요한 변화입니다.

공간과 무게를 계산하는 방식

세그윗은 증인 데이터를 기존 거래 영역과 구분해 블록 무게에 반영합니다. BIP141의 블록 무게 한도는 4,000,000 단위이며, 증인 데이터에는 기존 데이터보다 낮은 가중치가 적용됩니다.

따라서 증인을 포함한 실제 블록 데이터 크기는 종전의 1메가바이트를 넘을 수 있습니다. 이는 증인 데이터를 압축해 바이트 자체를 없앤다는 뜻이 아니라, 블록의 유효성을 판단하는 크기 계산에서 다른 가중치를 적용한다는 뜻입니다.

세그윗 거래의 수수료가 줄어들 수 있는 것도 실제 저장 바이트가 반드시 줄어서가 아닙니다. 거래의 가상 크기와 사용자가 적용받는 수수료율에 따라 같은 조건에서 비용이 낮아질 수 있습니다. 실제로 얼마나 더 담을 수 있고 수수료가 얼마나 달라지는지는 거래 구성과 수수료 시장에 따라 달라집니다.

소프트포크로 적용한 이유

세그윗은 규칙을 조이는 소프트포크로 설계되었습니다. 새 규칙을 적용하지 않은 옛 노드도 새 형식에 맞는 블록을 받아들일 수 있도록 구성했기 때문에, 모든 노드가 동시에 업데이트되지 않아도 체인이 갈라지지 않고 업그레이드를 적용할 여지가 있었습니다.

이는 기존 노드와의 호환성을 고려하면서도 새로운 기능을 추가하는 방법이었습니다. 세그윗은 규칙을 조이는 방식으로 큰 변화를 만든 사례가 되었습니다.

라이트닝으로 열린 길

거래 ID가 안정되자 아직 블록에 실리지 않은 거래를 가리켜 다음 거래를 미리 구성하기가 쉬워졌습니다. 이 변화는 결제 채널을 열고 거래를 이어 가는 라이트닝 네트워크가 실제로 사용되는 배경 중 하나가 되었습니다.

세그윗이 라이트닝 네트워크 그 자체는 아닙니다. 다만 거래를 안정적으로 연결하는 데 필요한 조건을 마련해 그와 같은 구조가 활용될 수 있는 길을 열었습니다.

주소와 수수료의 변화

세그윗이 적용되면서 bc1로 시작하는 새로운 주소 형식도 등장했습니다. 이 주소 형식은 세그윗 거래와 연결되며, 같은 송금이라도 거래 구성과 수수료율에 따라 비용을 줄이는 데 도움이 될 수 있습니다.

다만 업그레이드가 활성화되었다고 모든 사용자가 즉시 새 형식을 사용한 것은 아닙니다. 개인키로 거래에 서명하는 서명 장치 앱과 거래소가 차례로 지원을 추가했고, 기존 방식의 주소와 거래도 여전히 유효하게 남아 있습니다.

세그윗이 블록을 키운 것인가

세그윗을 두고 블록 한도를 단순히 늘린 것이라고 오해하기 쉽습니다. 더 많은 거래를 담을 수 있게 되었기 때문입니다.

그러나 세그윗은 증인 데이터와 기존 데이터를 구분하고, 각각에 다른 가중치를 적용해 블록 무게를 계산하는 업그레이드입니다. 증인을 포함한 실제 블록 크기는 1메가바이트를 넘을 수 있으므로, ‘실제 크기는 그대로’라고 설명해서도 안 됩니다.

세그윗은 거래 ID를 안정시키고, 무게 한도 안에서 공간 활용도를 높이며, 옛 노드와의 호환성을 고려한 소프트포크로 적용되었습니다. 이후의 업그레이드 논의에서도 중요한 참고 사례가 되었습니다.

관련 개념은 라이트닝 네트워크탭루트에서 이어서 볼 수 있습니다.

링크 복사하기X에 공유페이스북에 공유쓰레드에 공유