[BlockChain] BTC와 BCH (feat. Fork,segwit)

kysung95·2021년 4월 7일
4

BlockChain

목록 보기
1/5
post-thumbnail

안녕하세요. 김용성입니다.
저는 Frontend 개발자를 지망하는 학생이지만 그 외에 BlockChain에도 많은 관심을 가지고 있습니다. 또한 현재 DApp을 만드는 것을 계속해서 시도하고 있기도 하죠.(열심히 ethereum,solidity 배우는 중 ㅎㅅㅎ)

그래서 제가 지난 년도에 BlockChain을 처음 접할 때 재미있게 공부했던 부분들 중 몇가지를 선별하여 BlockChain 시리즈로 구성하여 포스팅할까 합니다.

이번 포스팅에서 다룰 내용은 바로 블록체인의 Fork와 관련된 대표적인 이슈입니다. 또한 이와 더불어 Fork의 종류인 soft fork와 hard fork에 대해 설명드리고 segwit이나 기타 용어들에 대해서도 설명드리도록 하겠습니다. 그 후 본론으로 들어가서 현재 BTC(여러분들이 흔히 아는 비트코인을 뜻합니다.)으로부터 BCH(비트코인 캐시) 라는 녀석이 생겨나게 된 배경과 그에 대한 저의 의견을 포스팅하도록 하겠습니다. 재미있게 봐주세요.

정의

Fork

Fork는 많은 사람들에게 흔히 식사를 할 때 사용하는 ‘식기’를 뜻하는 것으로 알려져 있습니다. 그 외에 Fork에는 ‘분기점’이라는 의미가 있습니다. 따라서 ‘Fork가 일어난다’ 라는 말은 ‘새로운 분기점이 생겨났다’ 라는 의미로 해석할 수 있습니다. 소프트웨어는 오류를 수정하고 성능을 향상시키기 위해 지속적인 업데이트를 필요로 합니다. 암호 화폐 세계에서는 이러한 업데이트를 Fork 라고 부릅니다. 또한 Fork는 기존 블록체인과의 호환성 유무에 따라 softfork와 hardfork로 나뉩니다.

SoftFork

SoftFork는 새로운 블록 생성 규칙을 적용한 블록을 기존 블록체인에 연결하는 것을 말합니다. 쉽게 설명하면, 보다 더 유연한 처리방식을 SoftFork라고 합니다. 목적을 단순 오류 수정, 기능 개선에 두었을 때는 이러한 유연한 방식인 SoftFork가 선호됩니다. 또한 기존 블록체인에 연결하는 방식이므로 블록 생성 노드의 업데이트만 필요사항이 되고 기존 블록체인과 호환이 가능합니다.

HardFork

HardFork의 경우 블록체인의 기존 문제를 해결하고, 이전 블록체인과 전혀 다른 프로토콜을 가지는 블록체인으로 변화시킵니다. 새로운 버전으로 업데이트 하지 않은 노드들은 트랜잭션을 처리할 수 없으며, 블록체인에 새로운 블록들을 기록할 수 없습니다. 따라서 HardFork를 사용할 경우 모든 노드들의 업데이트가 불가피하며, 이 과정이 진행된 후에는 기존 블록체인과의 호환 또한 불가능합니다. 그렇지만 기존의 프로토콜을 바꾸고 개선하거나, 새롭고 독자적인 프로토콜을 만들 때, 그리고 신규 기능을 추가하고 롤백 및 에러 복구를 하기 위해서는 이 HardFork를 사용해야 합니다.

(SoftFork와 HardFork의 차이점을 한 눈에 알아볼 수 있게 나타낸 표입니다.)

표를 살펴보시면 Segwit이라는 아주 낯선 용어가 보이네요. segwit에 대해서도 설명드리도록 하겠습니다.

Segwit

Segwit은 2015년에 개발된 프로토콜 업그레이드로 블록체인 네트워크가 여전히 직면하고 있는 확장성 문제를 해결하기 위해 도입되었습니다.
비트코인은 거래내역을 기록하는 블록 크기가 1MB에 불과하여 초당 7건, 하루 최대 60만건의 거래내역밖에 처리하지 못하는 한계가 있었습니다. 각 블록들은 다수의 트랜잭션들을 포함하고 있고, 블록의 크기는 한 블록에서 승인될 수 있는 트랜잭션 수에 영향을 미칩니다.
이러한 점들에 기반해서 기존 블록 안에 모든 기록과 정보를 다 저장해두는 방식에서 필수 정보인 거래내역만 블록에 저장하고, 디지털 서명 부분을 분리함으로써 블록당 저장 용량을 늘릴 수 있게 하는 방향의 업그레이드를 고안해내었는데 이것을 Segwit이라고 합니다. Segwit을 통해 얻을 수 있는 이점은 이뿐만이 아니였습니다. 이중거래를 통해 다른 거래를 채택하게끔 하는 거래 가변성이라는 보안 취약점 또한 봉쇄를 할 수 있었습니다. 2017년 8월부터 활성화되기 시작하였고, 그로부터 2달 후에는 Segwit을 사용한 비트 코인 거래비율이 10%가 되면서 사용률이 증가하기 시작하였습니다.
⭐️⭐️이는 softfork를 통해 업그레이드되어 비트코인 네트워크에 구현되었고, 후술하는 이슈의 발단이 됩니다.

BTC와 BCH

비트코인과 비트코인캐시는 엄연히 다른것입니다!!

먼저 BCH(비트코인캐시)에 대해 설명드리도록 하겠습니다. 시기는 2017년 여름(필자가 군대에 있던 시절^^)으로 거슬러 올라갑니다. 이 시기에 bitcoin hardfork 가 일어나서 가상화폐가 나오는데 이를 BCH(비트코인 캐시)라고 합니다.

왜 새로운 가상화폐가 나올정도의 hardfork가 진행되었을까요?

우리가 흔히 알고 있는 BTC의 인기가 올라감에 따라 여러 문제가 발생하였는데 블록의 용량이 워낙 적어 처리할 수 있는 거래량에 한계가 걸리기 시작하였고, 게다가 BTC의 가격이 폭등하면서 높은 수수료를 내지 않으면 거래 승인이 지연되는 문제가 발생했습니다. 이에 따라 위에 언급한 segwit이라는 것을 사용하였고, 이는 물론 프로토콜의 서명 부분을 개선함으로써, 괜찮은 효과를 가져왔지만, 이를 반대하고 블록 크기 를 증대해야한다고 주장하는 이들이 있었습니다. 이들은 segwit에 대해 만족하지 못하며 BTC에서 hardfork를 단행하였고, 분리된 블록 체인을 BCH(비트코인 캐시)라고 명명했습니다. 블록 크기를 증대해야한다는 사람들을 주축으로 생성된 만큼 BCH(비트코인 캐시)는 기존의 1MB에 불 과하던 블록 크기를 2~8MB까지 유동적으로 증가시킬 수 있는 BitcoinABC 기술을 적용하였습니다. 확장된 블록 크기만큼이나 더 많은 트랜잭션을 처리할 수 있어서, 거래 속도 개선과 수수료 절감효과 또한 톡톡히 나타납니다.
조금 정리해서 이야기 하자면, Bitcoin 거래량이 폭증하면서 Bitcoin측은 디지털 서명 부분을 비트코인 블록에서 분리하여 별도로 저장시키고 이를 통해 블록당 저장 용량을 증가시 키는 Segwit이라는 Softfork를 진행하였고, 이에 만족하지 못하는 이들이 Hardfork를 단행하여 떨어져 나온 체인들에 대해 BCH(비트코인 캐시)라는 대안 명칭으로 Hardfork branch 시켰습니다. 거래소를 운영하는 ViaBTC에서 2017년 8월 1일을 기점으로 기존 비트코인의 블록체인을 온전히 가진 새롭게 BCH를 내놓겠다고 선언하였고 이로 인해 새로운 알트코인의 형태를 지니게 된 BCH 는 BTC와 별개로 운영되게 되었죠.

Segwit의 문제점? 굳이 왜 Hardfork를 선호하였을까?

보다 더 원론적으로 들어가서 BTC와 BCH가 나눠지게 된 이유에 대해서 생각해보게 되었습니다. 제가 앞에서 softfork와 hardfork에 대한 조사를 했을 때 단편적으로 든 생각은 ‘Softfork라는 것이 굉장히 편리한 것이 아닌가.’ 라는 생각이었습니다. 가끔 개발자 입장으로 외주 업무를 하다보면 유지보수에 대해서 깊게 생각하게 되는데, softfork라는 것 자체가 기존의 사용자들에게도 불편함을 끼치지 않고, 간단하게 편리하게 필요한 부분을 바꾸는 작업이라는 생각이 든 반면, Hardfork는 대공사라는 느낌이 강해서 많은 사람들의 불편함을 야기하는 공수가 큰 작업이라는 생각을 하였습니다. 그럼에도 불구하고 지금 Softfork인 Segwit을 선호하여 남아 있는 BTC 유저들과 Hardfork를 통해 분리되어 나온 BCH의 거래량 수준은 크지 않습니다. 게다가 BCH 옹호자들은 코인 개수가 늘어나는 즉시, 비트코인보다 비트코인 캐시의 거래 규모가 더 커질 것이라고 주장 하고 있습니다. 기존 노드들에 대한 대공사가 필요한 hardfork의 길이 분명함에도 ‘어째서 BCH 옹호자들이 생겨났을까’라는 생각을 가지고 이에 대한 조사를 해보았습니다.
우선 기존 BCH가 생겨나기 이전 BTC의 문제점에 대해서 먼저 생각해보면 가장 큰 문제는 확장성에 있었습니다. BTC의 1MB라는 적은 용량으로 인해 거래 처리시간이 지연되고 네트워크가 처리할 수 있는 거래수 또한 제한이 되었던 BTC는 Paypal이나 Visa 같은 거대 기업들에 비해 거래 처리 능력이 많이 떨어진다는 단점이 있었습니다. 이러한 상황은 거래의 처리 속도 향상을 위해 높은 거래 수수료를 내는 옵션이 주어지기도 했지만 그러한 방법은 비트코인을 효과적인 소액 페이먼트 수단으로서의 유효성을 잃게 만들었습니다. 지불하는 금액보다 수수료가 더 큰 소위 말하는 ‘배보다 배꼽이 더 큰 현상’을 만든 것입니다. 이러한 현상에 많은 회의감을 느꼈던 사람들은 ‘비트코인 언리미티드’라는 블록의 용량 제한을 없애버리자는 의견을 내놓습니다. 그로 인해 BTC 측은 타협안으로 segwit2X(블록사이즈를 2MB로 늘림)이라는 프로토콜을 개발해 내놓았고 심지어 이는 miner들의 95%라는 찬성율을 받았음에도 불구하고 네트워크는 블록사이즈 한도의 즉각적인 퍼포먼스를 보여주지 못했습니다. 뿐만 아니라 segwit2X는 단지 논의 대상일 뿐이었고, 이에 많은 사람들은 segwit2X 또 한 문제를 해소하기보다는 문제를 지연시키는 것에 불과하다는 생각을 가지게 되었던 것입니다. 이러한 일련의 이유들로 인해 ‘비트코인 언리미티드’ 라는 의견에 기반한 Hardfork를 선호하는 이들이 계속 생겨난 것으로 보입니다.

개인적인 의견

항목들을 정리하며 Hardfork를 선호하는 사람들에 대해 생각을 많이 해보았습니다. 필자 본인은 Bitcoin 및 Blockchain이라는 것이 생겨난 원초적인 이유에 대해 먼저 생각하고 저의 주장을 확립하였습니다. 비트코인이라는 것은 중앙은행을 통한 거래에 대한 회의감에서 시작되었다고 생각합니다. 조사를 통해서 생각하게 된 점은 기존의 금융방식에 대한 비판을 가지고 시작된 비트코인 이 너무 한정적으로 운영되게 된 이유는 적은 블록사이즈로 인한 것이 매우 크다는 점입니다. 물론 bitcoin 블록 사이즈를 1MB로 제한한 이유에 대해서도 찾아보았습니다. 스팸이나 DDOS 공격의 가능성을 낮추기 위한 것이였고, 1MB 제약에 대해서도 비트코인 거래가 많지 않을 때에는 중요한 단점으로 비춰지지 않았을 것입니다. Segwit이라는 것은 물론 이러한 제약에 대한 해결책으로 매우 훌륭한 방안이라고 생각하나 저 역시 이러한 segwit을 통한 해결은 굉장히 단기적인 해결책이라고 생각합니다. 조사해본 결과 visa에서는 초당 평균적으로 2000 건의 거래가 가능하다는 점을 알게되었습니다. Segwit2X를 통해 대략 65% 정도의 서명 데이터를 밖으로 처리하고,블록의 크기를 2MB로 늘린다 한들 비트코인 거래량의 용량 증가 기대치는 약 4배에 불과합니다.

제가 생각하기에 이러한 거래 처리 능력으로는 비트코인이라는 것 자체가 어떤 사람들의 주요한 페이먼트 시스템으로 자리잡히는 것보다는 되려 투자수단의 일례로만 작용할 것 같다는 생각이 들었습니다. 따라서 저는 Hardfork와 BitcoinABC라는 프로토콜을 통해 생겨나게 된 BCH라는 새로운 독립된 버전을 지지한다는 의견을 펼치고싶습니다.


오늘의 포스팅은 이것으로 마치도록 하겠습니다.
긴 포스팅 글 읽어주셔서 감사합니다. :)

profile
김용성입니다.

1개의 댓글

comment-user-thumbnail
2021년 4월 16일

몰랐던 정보를 알아 기쁘네요
감사합니다👍

답글 달기