비트코인과 관련하여 세그윗이라는 용어가 많이 등장하던데요, 세그윗이 어떤 기술인가요?
아까전에 뉴스 기사를 보다가 "비트코인이 프라이버시 같은 측면에서 부족한 면이 있지만 세그윗이나 라이트닝 네트워크 같이 세컨 레이어에서 이런 이슈를 해결하고 있다."라는 말이 있더라구요.
라이트닝 네트워크는 여러 번 들어봤지만 저한테는 세그윗이라는 말이 생소하네요.
세그윗이라는 기술이 새롭게 등장한 기술인지, 어떤 기능을 하는 것인지 궁금해요.
답변 부탁드릴게요 o.o
세그윗에 대해서는 아래 정의를 살펴보시는게 정확합니다.
간단히 정리하면 거래 가변성(거래 내용이 변경되는)을 차단하기 위한 소프트 포크로 시작되었으나 부가적으로 블록 크기를 늘리는 효과가 있는 기술입니다.
세그윗(SegWit)
‘분리된 증인(Segregated Witnesses)’의 줄임말인 세그윗은 거래 처리 용량이 늘어나는 일종의 기술적 업그레이드를 의미한다.
비트코인 커뮤니티가 확장되면서 처리 속도가 늦어지는 등의 문제가 발생하게 되는데, 기존 블록에 서명을 분리해 처리 용량을 늘리는 것이 필요할 때, 사용되는 수단인 것이다.
비트코인 블록체인의 블록을 두 칸으로 분류해 살펴보면 거래내용 부분은 내용이 빡빡하게 채워지지만, 서명란은 공간만 크고 실제 서명의 크기는 작은데 이 공간을 세그윗 업그레이드로 확보해 처리 속도를 개선시키는 것이라 볼 수 있다.
더 자세한 설명은 아래를 참조해주세요.
https://cryptokiwi.kr/currency?id=btc&category=2&content_id=217
세그윗은 2013년~2014년쯤 제안된 기술입니다. 이 기술은 확장성을 해결하기 위해 제안된 것이 아닌 거래 가변성 공격(transaction malleability attack)을 해결 하기 위함이였습니다
거래 가변성 공격을 쉽게 설명하면 다음과 같이 정의 할 수 있습니다
거래내역에 위변조가 발생했음에도 불구하고 프로그램 버그로 인하여 유효한 거래로 인정 되는 것
입니다.
우리가 거래를 발생시키면 해당 거래를 찾는데 흔히 쓰는 것은 거래 아이디 (txid)입니다. 이 아이디는 세그윗이 적용되기전에는 거래 서명과 거래 내역등을 이용해 생성하였습니다.따라서 서명이 바뀌면 새로운 거래 아이디가 생성이 되는 것입니다.
서명이 바뀌면 위변조 된 것으로 파악을 하고 해당 거래내역을 유효한 것으로 인식하지 말아야 합니다. 그럼데 프로그램 버그로 인해 위조된 서명이 올바른 서명으로 인식되버린 것입니다. 사람들은 이점을 이용해 거래소들을 다음과 같이 공격했습니다
출금을 요청
거래소는 출금을 위한 거래내역을 생성 및 전파 (이하 거래1)
공격자는 거래소로 부터 생성된 거래내역의 서명을 변경
변경된 서명으로 tx id가 다른 거래가 생성되고 이를 전파 (거래2)
만약 거래 2가 포함된 블록이 확정되버리면 거래 1은 자동으로 폐기되버림 (
공격자는 거래소에게 출금이 되지않있다고 신고
거래소는 거래 1에 해당하는 tx가 없으므로 다시 출금을 위한 거래내역을 생성 및 전파
즉 공격자는 거래소로 부터 이중 출금을 받은 것입니다. 그리고 마운틴 콕스는 이런 공격에 의해 피해를 입었다고 발표한 바가 있습니다
이 거래 가변성 공격을 해결 하기 위해 다양한 방법들이 제안되다가 누군가는 매우 간단한 아이디어를 제시합니다. 거래 아이디 생성할때 거래 서명을을 사용하지 말자는 것이였습니다. 즉 거래 서명과 거래 내역을 분리하여 관리하는 것입니다.
그런데 여기서 사람들은 골때리게도 세그윗이 적용된 블록들의 데이터를 계산할때 거래 서명을 포함시키지 않고 계산해버립니다. 따라서 블록에 담을 수 있는 거래 숫자들이 증가하였고 그로 인해 확장성이 증가했다는 것입니다
하지만 세그윗은 확장성 해결을 위한 본질이 될 수 없습니다. 최대 2배정도의 효과를 얻더라도 여전히 10tps내외이기 때문입니다. 따라서 확장성을 위한 라이트닝 네트워크 혹은 사이드체인 기법 등이 연구 개발되고 있는 상황입니다.
세그윗 및 거래 가변성 공격에 대한 것은 bip141 및 bip 148을 보시면 도움이 되리라 생각합니다