블록체인 확장성 - 사이드체인과 지불 채널
Table of Contents
들어가며
블록체인 확장성 문제
오프체인 확장성 해결책이란 무엇인가요?
사이드체인 소개
지불 채널 소개
마치며
블록체인 확장성 - 사이드체인과 지불 채널
HomeArticles
블록체인 확장성 - 사이드체인과 지불 채널

블록체인 확장성 - 사이드체인과 지불 채널

고급
Published Feb 20, 2020Updated Apr 29, 2021
8m

들어가며

확장성은 요구 사항이 증가할 때 이를 처리하는 시스템이 확장되는 능력을 의미한다고 볼 수 있습니다. 컴퓨터를 사용할 때는 하드웨어를 업그레이드하여 기기의 성능을 높일 수 있으며, 이를 통해 특정 작업을 더 빠르게 수행할 수 있습니다. 블록체인에서 확장성은 더 많은 트랜잭션을 처리하기 위해 용량을 증가시키는 것을 의미합니다.
비트코인과 같은 프로토콜에는 많은 강점이 존재하지만, 확장성만은 예외입니다. 만약 비트코인이 중앙화된 데이터베이스에서 운영된다면, 관리자가 속도와 처리량을 높이는 것은 상대적으로 쉬운 일일 것입니다. 하지만 비트코인의 가치(예를 들면, 검열 저항과 같은)는 블록체인 사본을 동기화 한 다수의 참여자들에게서 나옵니다.


블록체인 확장성 문제

비트코인 노드를 운영하는 것은 상대적으로 저렴하며, 간단한 기기로도 가능합니다. 그러나 수천 개의 노드가 서로에 대해 최신 상태를 유지해야 하기 때문에 용량에 한계가 존재합니다. 
온체인(on-chain)에서 처리될 수 있는 트랜잭션에는 한계가 존재하며, 이를 통해 데이터베이스 크기가 지나치게 커지는 것을 방지할 수 있습니다. 데이터베이스가 너무 커지거나 너무 빠르게 업데이트 되면, 노드는 이를 따라갈 수 없을 것입니다. 또한 블록이 너무 크면, 네트워크에 신속하게 전달될 수 없습니다.

그 결과 우리는 병목 현상을 경험하게 됩니다. 블록체인은 정기적으로 출발하는 하나의 열차 서비스라고 볼 수 있습니다. 각 객실의 자리는 한정되어 있으며, 좌석 티켓을 얻기 위해서 여행자는 입찰을 해야 합니다. 만약 모두가 동시에 기차를 타려고 한다면, 가격은 높아질 것입니다. 마찬가지로, 트랜잭션이 지연되어 막히는 네트워크에서는 자신의 트랜잭션이 제 시간에 포함되게 하기 위해서 사용자는 더 많은 수수료를 지불해야 합니다.

한 가지 해결책은 객실을 더 크게 만드는 것입니다. 더 많은 좌석이 있다면, 처리량이 높아질 것이고, 티켓 가격은 낮아질 것입니다. 그러나 이전처럼 좌석이 모두 채워진다는 보장은 없습니다. 객실은 계속해서 넓어질 수 없으며, 블록 또는 블록 가스 확장에도 한계가 존재합니다. 이렇게 되면 네트워크에서 노드가 운영되는 데 더 많은 비용이 들게 되는데, 하드웨어가 최신 상태를 유지하는데 더 많은 비용이 필요하기 때문입니다.

이더리움의 창시자 비탈릭 부테린은 블록체인이 맞닥뜨린 도전 과제를 설명하기 위해 확장성 트릴레마(Scalability Trilemma)라는 용어를 만들어 냈습니다. 그는 확장성, 보안, 탈중앙화 사이에는 언제나 대가가 필요하다는 이론을 제시했습니다. 여기에는 일종의 특이한 관계가 존재하는데, 두 속성에 지나치게 초점을 맞출 경우, 세 번째 속성이 취약해지게 됩니다.

이러한 이유로, 많은 이들은 보안이나 탈중앙화가 블록체인 자체에서 극대화 되어야 되는 반면, 확장성은 오프 체인(off-chain)에서 이뤄져야 한다고 보고 있습니다.


오프체인 확장성 해결책이란 무엇인가요?

오프 체인 확장은 블록체인 크기를 증가시키지 않고, 트랜잭션이 체결되게 하는 방법을 의미합니다. 프로토콜들은 트랜잭션을 메인 체인에 올리지 않고도, 사용자가 자금을 전송하거나 수신할 수 있는 체인에 접속할 수 있게 합니다. 이제 우리는 해당 영역에서 가장 잘 알려진 접근법인 사이드체인과 지불 채널에 대해 자세히 알아볼 것입니다.


사이드체인 소개

사이드체인이란 무엇인가요?

사이드체인은 별개의 블록체인입니다. 그러나 독립적인 플랫폼은 아니며, 어떤 식으로든 메인 체인에 연결되어 있습니다. 메인 체인과 사이드체인은 상호 운영이 가능하며, 이는 두 체인 간에 자산이 자유롭게 이동될 수 있음을 뜻합니다.

자금이 전송되는 것을 보장할 수 있는 방법은 많습니다. 자산이 메인 체인에서 이동되어 특정 주소에 입금될 수도 있습니다. 다만, 해당 자산은 진짜로 전송되는 것이 아니라, 해당 주소에 동결되게 되며, 사이드체인에 해당하는 금액이 발행됩니다. 보다 간단한 방법(비록 중앙화된 옵션이지만)은 사이드체인에 입금된 것을 자산으로 교환해 주는 관리인에게 자금을 전송하는 것입니다.


사이드체인은 어떻게 작동하나요?

우리의 친구 앨리스가 다섯 개의 비트코인을 갖고 있다고 가정해 보겠습니다. 그녀는 비트코인 사이드 체인에서 이에 상응하는 자산-사이드코인(sidecoins)-과 비트코인을 교환하고자 합니다. 해당 사이드체인은 양방향 연결(two-way peg)을 사용하며, 사용자는 메인 체인에서 사이드체인으로, 혹은 그 반대로 자신의 자산을 전송할 수 있습니다.

사이드체인은 별개의 블록체인이라는 점을 기억하시기 바랍니다. 따라서 이는 다른 블록, 노드, 검증 메커니즘을 갖습니다. 사이드코인을 얻기 위해 앨리스는 다섯 개의 비트코인을 다른 주소에 전송할 것입니다. 다섯 개의 비트코인은 이를 전달받고 앨리스의 사이드체인 주소에 다섯 개의 사이드코인을 입금할 누군가의 소유가 될 수도 있습니다. 이 외에도 소프트웨어가 특정 지불을 감지하면, 자동으로 사이드코인이 입금되는 최소한의 신뢰만이 필요한 일종의 대안이 있을 수도 있습니다.



앨리스는 자신의 코인을 사이드코인으로 변환했지만, 언제라도 자신의 비트코인을 되찾기 위해 해당 과정을 반대로 진행할 수 있습니다. 이제 앨리스는 사이드체인에 접속하게 되었으며, 해당 블록체인에서 자유롭게 거래할 수 있습니다. 앨리스는 메인 체인에서 하던 것과 마찬가지로, 다른 이들에게 사이드코인을 전송하거나 수신할 수 있습니다.

예를 들면, 앨리스는 밥의 바이낸스 후드티에 대해 하나의 사이드코인을 지불할 수 있습니다. 앨리스가 비트코인을 되찾고자 한다면, 나머지 사이드코인을 특정 주소로 전송할 수 있습니다. 트랜잭션이 확정된 후, 네 개의 비트코인의 동결이 해제되고 앨리스가 소유한 메인 체인의 주소로 전달될 것입니다.


왜 사이드체인을 이용하나요?

이쯤에서 궁금해하실지도 모르겠습니다. 앨리스는 왜 비트코인 블록체인을 사용하지 않을까요?

사이드체인은 비트코인에서는 할 수 없는 것들을 할 수 있기 때문입니다. 블록체인은 각 요소들 간의 균형을 유지하는 정교하게 설계된 시스템입니다. 비트코인은 가장 안전하고 탈중앙화된 암호화폐이지만, 처리량은 그렇지 않습니다. 전통적인 수단들보다 비트코인 트랜잭션이 빠르긴 하지만, 다른 블록체인 시스템과 비교할 때는 여전히 느립니다. 블록들은 십 분마다 마이닝되며, 네트워크가 혼잡할 경우 수수료가 급격히 증가할 수 있습니다.

일상의 소규모 지불에 분명 높은 수준의 보안이 필요하지는 않을 것입니다. 커피를 사려는 앨리스는 트랜잭션이 승인될 때까지 기다리려 하지 않을 것입니다. 앨리스는 줄에서 기다려야 할 것이며, 트랜잭션이 승인될 때쯤 그녀의 음료는 차갑게 식어버릴 것입니다.

사이드체인은 일률적인 규칙들에 종속되지 않습니다. 실제로 사이드체인은 작업 증명(PoW) 기능을 사용할 필요도 없습니다. 여러분은 여러 합의 메커니즘 중 하나를 사용할 수 있으며, 단일한 검증자를 신뢰하거나, 해당 요인을 자유롭게 변경할 수 있습니다. 메인 체인에는 없는 업그레이드를 더할 수도 있으며, 더 큰 블록을 생성하고, 더 빠른 지불이 이뤄지게 할 수 있습니다.

흥미로운 사실은 사이드체인에서 치명적인 버그가 발생해도 이는 기반이 되는 체인에 아무런 영향을 미치지 않는다는 것입니다. 이를 통해 사이드체인을 실험적인 플랫폼으로 사용할 수 있으며, 네트워크 다수의 합의가 있지 않으면 불가능한 기능들을 실행할 수 있습니다.

만약 사용자가 장단점을 기꺼이 감수한다면, 사이드체인은 확장성 문제에 총체적으로 접근하는 효과적인 과정일 수 있습니다. 메인 체인 노드는 사이드체인의 모든 트랜잭션을 저장하지 않아도 됩니다. 앨리스는 하나의 비트코인 트랜잭션을 통해 사이드체인에 접속할 수 있으며, 수 백 개의 사이드코인 트랜잭션을 수행한 뒤 이를 빠져나올 수 있습니다. 비트코인 블록체인은 단 두 번, 앨리스가 이에 들어가고 나올 때만 관여하게 됩니다.

이더리움 플라즈마는 이와 유사하지만, 몇 가지 주된 차이점이 존재합니다. 보다 자세한 사항은 이더리움 플라즈마란 무엇인가요?를 참조하시기 바랍니다.


지불 채널 소개

지불 채널이란 무엇인가요?

지불 채널은 확장성 영역에서 사이드체인과 동일한 목적을 수행하지만, 근본적으로 무척 다른 차이점이 존재합니다. 사이드체인처럼 지불 채널은 블록체인이 너무 비대해지지 않게 하기 위해 트랜잭션을 따로 떼어 놓습니다. 그러나 사이드체인과 달리 지불 채널은 별도로 작동하는 블록체인을 필요로 합니다.

지불 채널은 스마트 콘트랙트를 통해 사용자가 자신의 트랜잭션을 블록체인에 전송하지 않고 거래할 수 있게 합니다. 이는 소프트웨어를 통해 강제되는 두 당사자 사이의 합의에 기반합니다.


지불 채널은 어떻게 작동하나요?

라이트닝 네트워크처럼 잘 알려진 모델에서, 두 당사자는 먼저 공동으로 소유한 하나의 주소에 코인을 입금합니다. 이는 다중 서명 주소인데, 자금을 사용하기 위해서는 두 개의 서명이 필요합니다. 앨리스와 밥이 이러한 주소를 생성했다면, 둘 모두의 동의가 있을 때에만 자금을 이동할 수 있습니다.

앨리스와 밥이 10 BTC를 각각 하나의 주소에 입금했고, 해당 주소에는 이제 20 BTC가 있다고 해보겠습니다. 앨리스와 밥이 각각 10 BTC를 보유하고 있다고 적힌 잔고 증명서를 갖고 있다면 좋을 것입니다. 앨리스가 밥에게 하나의 코인을 주고자 한다면, 이들은 앨리스는 9 BTC, 밥은 11 BTC를 갖고 있다고 잔고를 업데이트할 수 있을 것입니다. 앨리스와 밥은 해당 잔고를 업데이트할 때마다 이를 블록체인에 전송하지 않아도 됩니다.



시간이 지나고 앨리스가 5 BTC 밥이 15 BTC를 갖고 있다고 해 보겠습니다. 그들은 이제 해당 잔고 증명서를 자신들의 주소로 전송하는 트랜잭션을 생성하고, 서명하고, 전송할 수 있습니다.

앨리스와 밥의 잔고 증명서에는 열 개, 백 개, 또는 천 개의 트랜잭션이 기록되었을 수 있습니다. 하지만 단 두 번의 온체인 활동만 블록체인과 관련되는데, 한 번은 첫 입금 트랜잭션이고, 다른 한 번은 마지막에 잔고를 재분배할 때 입니다. 이 두 번 외의 다른 모든 트랜잭션은 오프체인에서 발생하기 때문에 수수료가 없으며, 거의 즉각적으로 체결됩니다. 마이너 수수료를 지불하지 않아도 되며, 블록 승인을 기다리지 않아도 됩니다.

물론 위에서 언급한 경우를 위해서 두 당사자가 협력해야 하며, 낯선 이들 사이에서는 이상적이라 할만한 상황은 아닙니다. 하지만 특정 메커니즘을 사용해 상대를 속이려 할 때 대가를 치르게 할 수 있으며, 그 결과 참여자들은 서로를 신뢰하지 않고도 안전하게 교류할 수 있습니다. 


지불 라우팅

지불 채널은 다수의 트랜잭션을 필요로 하는 두 당사자에게 분명 편리한 것입니다. 그러나 또 다른 장점도 있습니다. 해당 채널 네트워크를 통해 앨리스는 직접적으로 연결되지 않은 주체에게도 자금을 지불 할 수 있습니다. 만약 밥이 캐롤에게 채널을 개설하고, 앨리스가 충분한 금액을 갖고 있다면 캐롤에게 자금을 지불할 수 있습니다. 앨리스는 밥의 사이드체인에 자금을 전송하게 되고, 다음으로 밥은 이를 캐롤에게 전송하게 됩니다. 캐롤이 다른 참여자 댄과 연결되어 있다면, 동일한 식으로 자금을 전송할 수 있습니다.

해당 네트워크는 모든 이들이 다수의 구성원들과 연결되어 있는 분산화된 망으로 발전합니다. 목적지에 이르는 다양한 길이 있기 마련이며, 사용자는 가장 효율적인 것을 택할 것입니다.


마치며

우리는 기반 블록체인에 부담을 주지 않고 트랜잭션을 가능하게 하는 두 가지 확장성 해결책에 대해 논의했습니다. 사이드체인과 지불 채널 기술은 아직 완성되지는 않았지만, 기반 레이어 트랜잭션의 단점을 우회하고자 하는 이들에 의해 점점 더 많이 사용되고 있습니다.

시간이 지나며 더 많은 사용자들이 네트워크에 참여하게 됨에 따라, 탈중앙화를 유지하는 것이 중요합니다. 이를 위해서는 블록체인 크기가 커지는 것을 제한하여 새로운 노드가 쉽게 참여할 수 있게 해야만 합니다. 오프체인 확장성 해결책을 지지하는 이들은 머잖아 메인 체인은 금액이 큰 트랜잭션에만 사용되거나 사이드체인을 연결하거나 해제할 때, 지불 채널을 열고 닫을 때만 사용될 것이라 믿고 있습니다.