
견해 | '사이드체인'을 어떻게 이해할 것인가?
작성자: barryWhiteHat
번역: 아검
서론
레이어-2는 이더리움 생태계에서 점점 더 중요해지고 있으며, 이미 널리 인정된 사실이다.
하지만 “레이어-2”라는 용어는 다소 모호한 표현이다.
일부 사람들이 “레이어-2”라 말할 때는 단지 “이더리움 레이어-1 상에 존재하지 않는 것”을 의미하기도 한다.
그러나 실제로는 해당 솔루션이 어떻게 이더리움 레이어-1과 상호작용하는지가 매우 중요하다. 같은 “레이어-2”라는 이름 아래 있더라도 서로 다른 방식은 완전히 다른 특성을 가질 수 있다.
“레이어-2”라는 명칭이 특정한 보안 속성을 갖춘 시스템에만 사용되어야 한다고 주장할 수도 있다(예를 들어, AWS 위에 배포된 서비스는 누구나 레이어-2라고 생각하지 않겠지만, 비슷한 보안 수준임에도 불구하고 레이어-2로 간주되는 프로젝트들도 있다). 그러나 그 논의는 여기서 다룰 주제가 아니다.
본 글에서는 사이드체인(sidechain)의 속성에 대해 이야기하고자 한다.
사이드체인이란 무엇인가?
사이드체인의 기본적인 정의는 다음과 같다. 일련의 검증자들이 자신의 체인 최신 상태를 메인체인 상의 스마트 계약으로 제출함으로써 진행되는 시스템이다. 이러한 상태 체크포인트들은 브리지 계약(bridge contract)에 의해 활용되어 사용자의 입금 및 출금을 지원한다.
일반적으로 이 검증자들 사이에는 리더 선출 프로세스가 존재하며, 특정 시점에 누가 사이드체인 블록을 생성할지를 결정한다. 예를 들어 PoA(Proof of Authority) 또는 PoS(Proof of Stake) 알고리즘이 그것이다.
(역자 주: 본 정의에서 알 수 있듯이, 저자가 논의하는 대상은 메인체인 상에서 유효성 증명 메커니즘이 없는 사이드체인이다. 오늘날 "사이드체인"이라는 용어가 넓게 사용되고 있는 만큼, 저자가 다루는 것은 일반적인 사이드체인 개념의 하위 집합이다. 하지만 원래의 "사이드체인", 즉 협의의 사이드체인 개념은 바로 저자가 제시하는 바와 일치한다. 독자 여러분이 "사이드체인"을 전문 용어로 볼 것인지, 아니면 파생된 의미로 볼 것인지에 따라 달라진다.)
사이드체인은 이더리움 생태계에서도 중요한 역할을 해왔다. 연구자들이 더 나은 해결책을 개발하기 전까지는 확장성과 사용 편의성을 위한 임시적 해결책이었다. xDai와 같은 제품은 더 나은 사용자 경험에 대한 수요를 드러내며 이를 확산시켰다.
그러나 사이드체인은 광범위한 이더리움 커뮤니티가 기대하는 수준의 보안성을 제공하지 못한다. 그렇다고 사이드체인 자체를 절대 사용해서는 안 된다는 뜻은 아니다.
사용자들이 모든 것을 알고도 사용하기로 선택한다면, 그건 그들의 자유의지이며, 어떤 맥락에서는 타당할 수도 있다.
하지만 사용자들이 정보 부족 상태에서 사용한다면 위험하다.
본 글은 정보를 제공하려는 목적에서 쓰였다. 모두가 이미 이런 특성들을 완전히 이해하고 있다면, 또 한 번 글을 쓰는 것도 무방하다. 하지만 이 글을 통해 자신의 오해를 깨닫게 되는 사람이 있다면, 그건 좋은 일을 한 셈이다.
그렇다면 사이드체인은 구체적으로 어떤 보안 속성이 부족할까? 거의 모든 사이드체인은 다음 세 가지를 제공하지 못한다:
-
검열 저항성(censorship resistance)
-
확정성(finality)
-
자금 소유권 보장(funds ownership guarantee)
이 모든 특성을 요구한다면, 사이드체인 외의 다른 솔루션을 찾아야 할 것이다. 물론 사이드체인의 핵심 구조를 유지하면서도 이러한 측면에서 개선된 설계도 가능하다. 개방적인 논의가 모두에게 도움이 된다고 생각한다.
검열 저항성
분명히 사이드체인은 잘 설계된 블록체인보다 검열 저항성이 약하다. 그렇지 않다면 굳이 블록체인을 만들 이유가 없었을 것이다. 하지만 좀 더 깊이 살펴보자. 만약 어떤 사이드체인에 N명의 검증자가 있고, M명의 검증자가 합의하면 임의의 트랜잭션을 검열할 수 있다고 가정하자. 그러면 (N-M)명의 검증자가 연합하면 하나의 블록 전체를 검열할 수 있다. 이는 흥미로운 딜레마를 낳는다: 트랜잭션 검열을 어렵게 만들수록 블록 검열은 쉬워진다. 둘 다 바람직하지 않은 일이기 때문에, 사이드체인은 근본적으로 강력한 검열 저항성을 얻을 수 없다(역자 주: 논리는 다음과 같다. M명의 검증자가 특정 블록 생성을 거부하면 블록 생성이 불가능하다면, 당연히 M명만으로도 특정 트랜잭션을 포함하지 않도록 블록 생성을 거부함으로써 검열할 수 있다. 반대로 N-M명이 합의하면 임의의 블록을 생성할 수 있다면, 그들은 항상 다른 내용을 포함한 블록을 생성하거나 아예 사라짐으로써 특정 블록을 검열할 수 있다). 이 문제는 PoS를 사용하는 경우에도 여전히 존재하며, 심지어 지분량에 따라 블록 생성 권한을 배분하면 더욱 악화될 수 있다. 왜냐하면 임계값을 넘는 독립 실체의 수가 더 적어질 수 있기 때문이다(최상의 경우라 해도 지분이 완전히 고르게 분포되어 있을 때이며, 그때조차도 PoS를 사용하지 않을 때와 동일한 수준일 뿐 더 나아지지는 않는다).
데이터 가용성 보장(Data Availability Guarantee)
가정하자. (N-M)명의 검증자만으로도 새로운 블록을 생성할 수 있다고 하고, 다른 모든 검증자들이 새로운 상태를 검증하기 위해 전체 상태 데이터를 필요로 한다고 하자. 그러면 (N-M)명의 악의적 검증자들이 다음을 수행할 수 있다:
-
새로운 블록을 생성한다
-
정직한 검증자들과 블록 데이터를 공유하지 않는다
-
결과적으로 N-(N-M) = M명의 정직한 검증자를 합의 과정에서 제외시키고, 시스템을 완전히 장악하게 된다
이런 일이 발생할 가능성은 얼마나 될까? 구체적인 세부사항 없이는 판단하기 어렵지만, 다음과 같이 생각해볼 수 있다: 합리적인 검증자가 왜 다른 사람들과 데이터를 공유하려 할까? 전통적인 PoA 메커니즘에서는 데이터를 공유하지 않으면 평판에 손상을 입을 수 있다. 그러나 실제로는 데이터를 고의로 숨겼다는 것을 증명하기 어렵기 때문에, 평판 메커니즘도 제대로 작동하지 않는다. 다른 모든 참여자가 모든 데이터를 체인에 올릴 때까지는 증거를 제시할 길이 없다. 이 해결책이 optimistic rollup처럼 들리는가? 맞다, 그게 바로 그런 것이다. 이는 곧, 더 나은 보안성을 갖춘 사이드체인은 본질적으로 optimistic rollup으로 "퇴화(degenerate)"된다는 뜻이다. 대부분의 사이드체인 설계에서 검증자는 자신의 작업에 대해 어떤 형태로든 보상을 받는다. 정직한 검증자들에게는 보상이 N명 사이에서 나누어진다. 그러나 부정직한 검증자들 사이에서는 동일한 보상이 N-(N-M)=M명 사이에서만 나누어지므로, 검증자들은 업데이트된 상태를 다른 사람들과 공유하지 않을 유인이 생긴다(역자 주: 여기서의 계산에 오류가 있을 수 있음). 근본적인 문제가 있다: 데이터 가용성 공격(data availability attack)을 판별하기 어렵다는 점이다. 정직한 검증자 입장에서는 공격이 발생한 것인지, 아니면 단순한 동기화 문제인지 구분하기 어렵다.
확정성(Finality)
상태 전환이 다음과 같은 흐름으로 진행된다고 하자: state1 => state2 => state3 각 전환마다 기존 상태에서 트랜잭션이 실행되어 상태를 변경해야 한다. 확정성은 일단 트랜잭션이 처리되면 그것을 되돌릴 수 없다는 것을 의미한다. 사이드체인의 체크포인트는 검증자들의 합의를 거쳐 이더리움 블록체인에 전송되며, 이더리움의 합의 메커니즘에 의해 영구적으로 고정된다. 그래서 일부 사람들은 사이드체인의 확정성이 이더리움의 확정성과 동등하다고 생각할지도 모른다. 사이드체인 블록을 롤백하려면 이더리움 블록도 롤백해야 하기 때문이다. 그러나 이것은 완전히 잘못된 이해이다. 왜냐하면 확정성은 트랜잭션을 되돌릴 수 없다는 것이지, 이전 상태를 새로운 상태로 교체할 수 없다는 말은 아니기 때문이다. (N-M)명의 검증자가 합의하면 다음과 같은 상태 전환을 수행할 수 있다: state1 => state2 => state1 (state3 대신 state1을 사용하는 것은 이미 확정된 것으로 간주된 state2를 롤백하는 것과 같지만, 이 과정에는 이더리움 메인체인의 롤백이 전혀 필요하지 않다).
사이드체인 자금 소유권 보장
현재 상태가 state1={Alice:1000,Bob:0}이라고 하자. 즉, Alice가 1000을 가지고 있고 Bob은 아무것도 없다. 만약 Bob이 악의를 갖고 있으며 POA 검증자 중 다수를 통제하거나(또는 효율적으로 매수할 수 있다면), 어떻게 행동할 수 있을까? 그는 state1 => state2라는 상태 전환을 실행할 수 있으며, state2={Alice:0,Bob:1000}이 된다. 즉, Alice의 모든 돈을 훔쳐 Bob에게 준 것이다. 따라서 사이드체인의 방어 능력은 "(N-M)명의 검증자가 그러한 부당한 상태 전환을 승인하지 않을 것"이라는 점에만 의존하게 된다. 이것은 널리 알려진 사실이지만(적어도 나는 그렇게 믿는다), 그래도 다시 한번 상기시킬 필요가 있다고 본다. 당신이 사이드체인에 가질 수 있는 신뢰는, 검증자 다수가 그런 일을 하지 않을 것이라는 믿음에 기반할 수밖에 없다. 사이드체인의 대부분의 보안 분석은 이 지점에 집중되어야 한다. 어느 정도는 신뢰할 수 있는 누군가가 있을지도 모른다. 우리가 많은 경우 중심화된 서비스 제공업체를 여러 이유로 신뢰하듯이 말이다. 때때로 이러한 타협은 가치가 있을 수 있다. 중요한 것은 이것이 일종의 타협임을 인식하는 것이다.
거버넌스 절차를 방어 수단으로 사용하는 문제점
"위에서 언급한 모든 문제는 거버넌스 절차를 통해 해결할 수 있다"는 주장이 있다. 그러나 이 접근법은 결함이 있다. 왜냐하면 전체 시스템이 결국 거버넌스 프로세스에 종속되기 때문이다. 이 점이 특히 걱정되는 이유는, 사이드체인의 다른 속성들이 모두 '극장'이 되어 버린다는 점이다(무엇을, 언제, 왜 그런 속성이 필요한가?). 예를 들어, 거버넌스 절차가 위 문제들을 방지하는 궁극적 수단이라면, PoS나 PoA 같은 메커니즘은 모두 중요하지 않게 된다. 시스템의 진정한 PoA는 거버넌스 프로세스 자체가 되는 것이다. 그리고 명백하게도, 시스템의 거버넌스 프로세스 자체도 동일한 방식의 공격에 취약하다.
어떤 상황에서 사이드체인의 특성이 유용할 수 있는가?
빠른 블록 생성 시간(따라서 더 나은 사용자 경험) 같은 사이드체인의 부가적 특성을 제외하고도, 사이드체인의 특성이 오히려 장점이 되는 특정 상황이 있다. 예를 들어:
-
정말로 N-M명의 검증자만으로도 임의의 상태 전환이 가능하도록 하고 싶은 경우. 고급 관리 권한을 원하는 기업용 애플리케이션이 대표적인 예시다.
-
M=0이고 N명의 검증자가 임의의 상태 전환을 수행할 수 있는 경우. 예를 들어 네 명이 참여하는 게임 등이 있다. 다만 문제는, 검증자 1명만으로도 이 체인을 중단시킬 수 있다는 점이다.
맺음말
과거에는 일정 수준의 이더리움 조합성(composability)과 상호운용성을 유지하면서 사용 가능한 유일한 방법이 사이드체인이었다.
이제 다른 레이어-2 확장 솔루션들이 성숙해짐에 따라, 사이드체인이 다른 솔루션들과 어떻게 더 잘 통합될 수 있는지를 고민할 시점이다. 사이드체인이 통합할 수 있는 몇 가지 속성들은 다음과 같다:
-
수수료 없이 대규모 이전을 실현하여, 사용자가 수수료 문제로 인해 출금할 수 없는 상황에 빠지는 것을 방지한다.
-
검열 저항성이 더 강한 다른 방식으로 리더 선출 메커니즘을 대체한다(PoS는 어쩌면 잘못된 방향일 수 있다. 관련 게시물 참조).
-
체인 상의 두 상태 간 차이를 조정하기 위해 조정기(coordinator)가 필요하다.
-
오류 증명(wrongness proof)을 도입하여 부당한 상태 전환을 방지한다.
optimistic rollup과 optimistic VM 기술이 발전함에 따라, 프로젝트가 선택할 수 있는 타협의 범위도 변화하고 있다. 지금이 바로 사이드체인의 속성과 관련된 타협들을 재고할 적절한 시기이다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News














