다운로드
닫기 메뉴 -

SyncChain: 보안 및 유용성 개선을 위해 동기화된 사이드체인

Published on: 24 4월, 2020

By Sergio Demian Lerner, IOV Labs Chief Innovation Scientist

[TL;DR] 저희는 SyncChain(싱크체인)이라는 새로운 유형의 병합 채굴 사이드체인을 개발했습니다. 이로써 빠른 페그인과 페그아웃(비트코인과 RSK 사이에서 페그인은 30분 정도로 낮으며, 페그아웃은 2시간 정도로 낮습니다)이 가능해지며, 페그를 이중 지불하지 않게 매개변수화할 수 있습니다. 이는 수백 개의 블록 확인이 필요하고 암호경제적 가정에만 기반하는 기존의 사이드체인에서 크게 개선된 결과입니다. 2016년 발표된 몇 가지 아이디어에서 구축된 싱크체인 동기화 프로토콜은 페그아웃 잠금해제에 사용하는 방식의 직교 방법입니다. 한 가지 흥미로운 설계는 연합 싱크체인을 만드는 것입니다. 마지막으로 RSK가 비트코인 SPV 사이드체인에서 비트코인 싱크체인으로 이동하는 것의 장단점을 논의해 보고, 싱크체인 네트워크 업데이트를 위한 임시 계획을 마련해 보겠습니다. 

소개

RSK가 처음 설계되었을 때 설계 목표 중 하나는 비트코인의 모든 결함이 RSK에 영향을 미치지 않게 최대한 RSK의 독립성을 유지하는 것이었습니다. 2015-2016의 기간 동안 비트코인은 하드포크 논쟁의 지속적인 압력과 위협을 받아왔고 거래 수수료가 크게 올라 저렴한 수수료를 요하는 금융 통합에는 사용할 수 없게 되었습니다. RSK는 이런 이유로 카운터파티성 오버레이 프로토콜 대신 병합 채굴 컨센서스를 채택하였습니다. 병합 채굴은 오버레이가 제공하지 못하는 (비트코인 블록 반전으로부터의 독립성을 포함하는) 완전한 독립성을 제공합니다. 저희는 그와 똑같은 이유로 외국 컨센서스 증명에 SPV 증명을 사용했습니다. 

비트코인이 무너질 위험은 시간이 지나면서 조금씩 줄어들어 왔습니다. 따라서 양방향 페그에 대한 요구 사항을 재고하며 조금 더 나은 대안을 위한 설계 공간을 재검토할 수 있게 되었습니다.

SPV 브릿지 보안

 

이전 블로그 게시물 여러 개에서는 RSK 페그의 작동 방식을 분석한 적이 있습니다. RSK 페그의 특성 중 하나는 비트코인 블록체인의 반전이 RSK Blockchain의 반전을 의미하지는 않는다는 것입니다. 따라서 RSK는 이중 지불을 방지하고자 100개의 비트코인 블록 확인을 기다리는 등, 비트코인 블록체인이 페그아웃 거래를 통해 반전되지 않으리라는 최고의 보증을 요구합니다. 병합 채굴 참여가 약 50%이고, RSK 해시율의 51%(비트코인 해시 레이트의 25%)에 해당하며 Mallory라 부르는 거대한 악성 채굴 풀이 있다고 가정해봅시다. Mallory는 모든 해시율을 이용해 가짜 헤더 전용 블록체인을 생성하고, 이를 브릿지에 공급해 브릿지가 Mallory가 행사하는 모든 가짜 거래를 수락하게 할 수 있습니다. 이런 가짜 헤더 체인은 유효한 비트코인 블록체인이 아니기에, Mallory는 비트코인 블록체인을 방해하지는 않지만 공격 준비 중 블록 보상을 수집할 수 없게 됩니다. RSK는 브릿지 컨트랙트에 있는 비트코인 최고 체인이 로컬 최고 체인과 일치하지 않는 경우, 연합 기능이 페그인 등록 메시지를 발행하지 않기에 현재 이런 공격에서 보호됩니다. 하지만 SPV 기반 페그인이 연합 개입을 제거해 최대한 분산화되는 경우에는 공격이 성공하리라고 예상할 수 있습니다. 이를 “가짜 페그인” 공격이라고 합시다. Mallory가 보호되지 않은 RSK의 변형에서 가짜 페그인을 수행하는 전력 비용은 약 천만 US 달러입니다. 비트코인 코인베이스를 살펴보면 가짜 페그인 공격이 “존재하지 않는 채굴자”에게서 기인하였다는 점을 쉽게 알 수 있으나, 이때 Mallory는 자기 시스템이 해킹을 당했다고 주장하며 미지의 상대방에게 책임을 떠넘길 수 있습니다. 

또 페그인 이중 지불 공격도 있습니다. 이 공격은 브릿지 컨트랙트에 대한 최고 대체 체인을 알리고 동시에 연합 기능을 분리해 해당 최고 대체 체인이 유일하다고 믿게 합니다. 이때 공격 전력 비용은 여전히 천만 US 달러이나 거기에 관리자 해킹 비용이 더해지고, 문제는 임의의 비트코인 생성이 아니라 초기 투자 금액을 두 배로 늘리는 것이 됩니다.

그의 반대 공격은 페그아웃 이중 지불입니다. Mallory는 이런 공격에서 페그아웃을 수행한 다음 RSK blockchain을 페그아웃을 명령하는 거래 지점으로 되돌립니다. 이 공격 역시 전력 비용이 높지만, 훔칠 비트코인의 양이 충분하다면 공격 위험은 존재합니다. RSK에는 Armadillo라는 모니터링 도구가 있어 분산형 경보로 “무료” 병합 채굴 공격을 막을 수는 있으나, 공격이 여전히 가능하다는 점을 참고해 주시기 바랍니다.

SPV 브릿지의 또 다른 단점은 페그인과 페그아웃을 위해 100개의 비트코인 블록 확인(혹은 동일한 누적 난이도에 해당하는 RSK 블록)이 필요하다는 것입니다. 이는 유용성을 악화시킵니다. 보안 및 유용성 측면에서 SPV 브릿지보다 더 나은 것을 찾을 수 있을까요?

양방향 페그의 보안

양방향 페그 설계를 비교하고자 이중 지불 공격이나 마이너들의 비트코인 도난을 방지하는 8가지 보호 기능을 정의해 보겠습니다. 이때 다른 그룹의 공격은 고려하지 않기로 합니다. 해당 보호 기능은 두 개의 작업 증명 블록체인을 통한 교차 체인 전송을 허용하는 모든 페그 시스템 S에 적용됩니다. 보호 기능은 보안 가정이나 공격 비용(공격자 예산에 대한 가정)을 기반으로 하여 정의됩니다. 보호 기능은 가장 강력한 수준(1)에서 가장 약한 수준(8) 순서로 나열되나, 시스템이 하나 이상의 보호 기능을 제공할 수도 있습니다. 명시된 보호 기능 조합으로는 시스템 S을 완전히 설명하지 못할 수도 있습니다. 시스템이 페그인과 페그아웃에 서로 다른 보호 기능을 이용할 수 있기 때문입니다. 페그아웃은 항상 약한 하위 프로토콜이기에 이 섹션에는 제시된 모든 프로토콜에 대한 페그아웃 보안에 집중할 것입니다. 공격자는 가장 약한 지점을 선택하기 때문입니다. 시스템에는 또 건실함과 생존 상태에 서로 다른 가정이 필요할 수도 있으나, 이 분류에서는 건실함에 집중하기로 하겠습니다. 또 단순화를 위해 노드 격리 가능성 같은 기타 네트워크 상호 보완 공격은 무시하기로 합니다. 이중 지불 공격이 일반적으로 공격자의 블록 보상 손실을 일으키지는 않는다는 점을 참고하시기 바랍니다. 공격자가 블록체인을 되돌려 개인적으로 새로운 최고 체인을 생성하면 이러한 새로운 체인은 자신에게 보상을 지불하므로 다른 채굴자들만 보상을 잃게 됩니다. 이러한 규칙의 유일한 예외는 Armadillo가 제공하는 보호 기능이나 수신 시간에 따라 블록 점수를 매기는 일부(일반적으로 파손된) 컨센서스 알고리즘입니다[1][2][3].

비트코인은 다른 사이드체인의 누적 작업 증명을 평가할 수 없으므로, 어떤 형태의 정적 또는 동적 다중 서명 그룹이 페그아웃에 서명하고 페그인을 수신한다고 가정합니다. 하지만 페그된 코인을 수신하여 다중 서명하는 악성 보유자 관련 공격은 모두 무시하기로 합니다. 또 키 소유자가 100% 정직하거나 RSK처럼 개인 키에 접근하지 못하게 하는 하드웨어 보안 모듈(HSMs)을 실행한다고 가정합니다.

다음 표에서는 RSK를 다른 유형의 양방향 페그와 비교하는 대신 비트코인을 병합 채굴 사이드체인과 연결하도록 수정하였습니다. 이렇게 하면 프로토콜을 공정하게 비교하는 데 도움이 됩니다.

첫 번째 보호 기능 “무조건적 보안”은 S에 대한 프로토콜 규칙에 따라 이중 지불이 발생할 수 없음을 의미합니다. 다음으로 “계산 불가능”(2)은 공격자가 어려운 계산 작업을 수행할 수 없다는 가정하에 S에 대한 이중 지불이 가능하지 않음을 뜻합니다. 그다음 보호 기능은 “비트코인 M.A.D”(3)입니다. M.A.D.는 상호 확증 파괴를 의미합니다. 이중 지불 공격자가 강제로 메인체인을 되돌려야 하면 메인체인 기본 토큰 가격에 영향이 가며, 장기 채굴 인센티브에도 영향이 가 메인체인도 페그에 적용되고 무사히 유지되어 프로토콜이 비트코인 M.A.D로 보호됩니다. 같은 개념을 (5)와 같은 사이드체인에 적용할 수 있습니다. “장기 공격 인식” (4) 보호 기능은 공모 채굴자 그룹의 악성 조치를 미리 감지할 수 있는 것입니다. RSK와 Armadillo 모니터링 시스템에는 장기 공격 인식의 암호경제적 변형이 있는데, 공격자가 공격을 준비하고 있음을 밝히거나 개인적으로 생성한 블록에 대한 블록 보상을 포기해야 하는 형식입니다. 다음 보호 기능은 “비트코인 블록 보상 손실”(7)입니다. 이는 SPV 증명에 기반한 모든 암호경제적 시스템을 뜻하며, 가짜 거래로 블록을 채굴하는 공격자가 시스템을 속여 반대쪽 체인에는 잠겨있지 않은 체인에서 코인을 해제하는 것을 말합니다. 이 보호 기능은 현 RSK 페그 프로토콜(Armadillo 모니터링 시스템 보유)에 존재하며 XCLAIM 및 TBTC에도 존재합니다. 또 다른 분류는 제목 그대로 설명 가능합니다.

싱크체인 설계 

싱크체인은 암호 경제학(cryptoeconomics)이 제공하는 것보다 훨씬 강력한 보안 보증을 제공합니다. 이는 페그인과 페그아웃에 무조건적인 보안을 제공합니다. 싱크체인과 함께라면 이중 지불 위험을 제거할 수 있으므로, 병합 채굴 네크워크에 과도한 부담을 주지 않습니다. 이 백서에서 저희는 모든 변형에 대한 싱크체인의 설계에 대해 설명했습니다. 우리는 이 짧은 블로그 스팟에서 싱크체인의 기본 아이디어와 가장 단순한 변형 만을 소개할 것입니다. 모든 변형은 지연된 듀얼 패런팅, 페그 거래 링크(연결), 그리고 코인 베이스 앵커링이라는 3가지 구성 요소에 기초를 두고 있습니다. 싱크체인의 근본 개념(듀얼 패런팅)은 2016년 블로그 게시물 중 하나에 설명이 되어 있습니다. 그 아이디어는 사이드체인 블록이 사이드체인 패런트와 메인체인 패런트를 모두 지정해야 한다는 것입니다. 사이드체인 블록을 처리하기 전의 상속 상태는 양쪽 패런트를 처리한 후의 상태에 해당하며, 한 쪽 패런트의 반전은 사이드체인 차일드(자녀) 블록의 반전을 일으킵니다.  하지만 이 기술은 메인체인보다 블록 속도가 높은 사이드체인에는 사용할 수가 없습니다. 메인체인 블록의 반전으로 많은 사이드체인 블록이 반전될 수 있기 때문입니다. 더 높은 블록 비율을 지원하나 긴 반전을 겪지 않는 새로운 형태의 반전이 필요합니다.

지연된 듀얼 패런팅

듀얼 패런팅은 메인체인과 사이드체인을 얽어매는 하나의 기술입니다. 이 기술은 각 사이드체인 블록이 두 개의 패런트(부모)를 사이드체인에 하나, 그리고 메인체인에 하나 두는 것에 기반합니다. 그러나 저희는 이 기술을 그대로 사용하지 않고 지연된 듀얼 패런팅(DDP)라고 하는 듀얼 패런팅의 변형을 이용합니다. 먼저 용어를 단순화하기 위해 메인체인 패런트를 “체크포인트”라고 부르겠습니다. 하지만 싱크체인 체크포인트와 다른 권위(authority) 기반 체크포인트 시스템을 혼동하지는 마시기 바랍니다[4][5]. DDP를 이용하면 체크포인트가 타임스탬프와 메인체인 블록 확인 횟수 모두에 따라 블록 수만큼(평균 K 블록만큼) 지연되게 설정됩니다. 예를 들어서 K의 실제 값이 3이면 체크포인트가 강제로 평균 30분 정도 지연되는 것입니다. 다음 도표는 K=3의 예시를 나타냅니다.

지연된 듀얼 패런팅

앞서 설명한 바와 같이 즉각적인 반결의 문제는 비트코인 블록 반전으로 약 20개의 RSK 블록 반전이 자동으로 발생한다는 점입니다. 이는 UX 관점에서 한계에 도달했다는 것일 뿐만 아니라 더 중요하게 거래 결제 보안 리스크입니다. 지연된 체크포인트의 경우 K개 이상의 메인체인 블록이 반전된 경우에만 RSK 블록체인이 반전됩니다. 간단한 설명을 위해 이 블로그 글 전체에서는 RSK 평균 블록 간격이 30초이며 비트코인 평균 블록 간격이 10분이라고 가정하겠습니다. 그런 다음 비트코인 블록 체인이 R>K인 R블록으로 반전되면, RSK 블록체인은 (R-K)*20 블록으로 반전됩니다. 다음 도표에서는 단일 비트코인 블록만이 반전된 경우 RSK에서의 갑작스러운 제거가 없음을 볼 수 있습니다.

단일 메인체인 블록의 반전은 싱크체인의 반전을 유발하지 않습니다

K의 최솟값은 1입니다. 즉, 확인을 위한 추가 블록이 하나 있는 경우에만 블록 체크포인트가 가능합니다.

듀얼(이중) 노드

싱크체인을 사용하려면 각 사이드체인 클라이언트가 메인체인 노드와 사이드체인 특정 노드의 인스턴스를 모두 실행해야 합니다. 저희가 싱크체인을 개발한 주된 이유는 유효하지 않은 비트코인 블록체인 브랜치가 SPV 기반 브릿지 컨트랙트에서 유효한 SPV (헤더 전용) 체인으로 표시되지 않게 하기 위해서였습니다. SPV 증명은 정직한 네트워크에 감추어져 M.A.D 텐션을 줄일 수 있기 때문입니다. 텐션을 극대화하기 위해, 저희는 마이너들이 공격을 위해 블록 채굴을 시작하자마자 그리고 그 공격이 끝나기 전 시점에 그러한 투명성이 마이너들을 감지하고 판단하고 결국 처벌할 수 있기를 원합니다. 따라서 저희는 다음과 같은 사실을 확신할 수 있습니다. 브릿지가 페그인 또는 페그아웃을 확인하기 위해 허용하는 블록이 무엇이든 간에 해당 블록은 완전히 노출되며(헤더 및 거래 페이로드 모두), 비트코인 코어 레퍼런스 소프트웨어가 정의한 대로 해당 블록을 비트코인 블록체인에 포함시킬 수 있습니다. 따라서 싱크체인 노드는 사이드체인 전용 노드와 함께 메인체인 레퍼런스 노드를 실행해야 합니다. 다시 말해서 싱크체인 노드는 bitcoind의 인스턴스와 rskj의 인스턴스를 실행합니다.

사용자는 여전히 사이드체인 전용 노드(rskj)만을 실행할 수 있으나, 페그인과 페그아웃을 검증할 수 없게 됩니다. 그런 의미에서 페그인이나 페그아웃 거래가 발생하자마자 SPV 클라이언트와 동일한 보안 모델을 사용하여 자동으로 SPV “라이트웨이트” 노드가 됩니다. 

지연된 듀얼 패런팅을 생성하려면 바로 이것이 필요합니다. 체크포인트 셀렉션 알고리즘(CSA). CSA는 메인체인 체크포인트를 선택하고 체크포인트가 올바르게 선택되었는지를 검증하는 컨센서스 알고리즘입니다. CSA는 기본적으로 블록 타임스탬프에 따라 결정을 내려야 합니다. 그러나 비트코인의 블록 타임스탬프는 벽 시계의 시간을 반영하기는커녕 세계 시계도 반영할 수 없습니다. 싱크체인 백서는 두 가지 간단한 RTA 알고리즘(MedianTime11AdjustedTime)이 제시되어 있으므로 여기서 다시 논의하지 않겠습니다. 

체크포인트 및 블록 처리

사이드체인 블록 헤더에서 체크포인트는 메인체인 블록 넘버(checkPointBN)와 메인체인 블록 해시(checkPointHash)로 정의됩니다. 축소된 크기의 해시 다이제스트 헤더로 공간을 절약하는 것도 가능합니다. 

모든 사이드체인 노드는 반드시 메인체인 노드 (RSK의 경우 bitcoind)를 실행하여 RSK 블록 헤더에서 체크포인트의 정확성을 모니터링해야 합니다. RSK 체크포인트 해시가 블록 숫자로 참조되는 비트코인 블록 해시와 일치하지 않는다면, 해당 RSK 블록은 “일시적으로 유효하지 않은” 상태가 됩니다. 해당 RSK 블록은 비트코인 최고 체인이 재구성되는 경우 나중에 재고될 수 있습니다.

모든 비트코인 블록이 체크포인트가 되는 것은 아닙니다. checkPointBN 값이 모든 블록을 커버하지는 않으며, 격차가 존재합니다. checkPointBN 블록이 비트코인 블록의 페그인 거래를 참조하거나 블록을 건너뛰어 페그인 거래를 뛰어넘을 때, RSK 컨센서스는 관련 RSK 블록에 페그인 메시지를 보내는 거래를 포함해야 함을 지시하고, 브릿지 계약은 즉시 페그인 관련 코인을 방출합니다. 컨센서스는 또한 페그인 거래가 다른 거래보다 우선권을 가지게 하는데, 이는 페그인 거래가 블록에서 다른 거래보다 선행되게 한다는 뜻입니다. 

페그 거래 연결 

모든 비트코인 페그인 및 페그아웃 거래는 서로 연결되어 있습니다. 여기에는 여러 이유가 있습니다. 하나는 공격자가 직접 페그인이나 페그아웃을 실행한 페그 다중 서명의 이중 지불을 강제화하는 비트코인과 RSK 블록체인의 재구성 공격을 피하기 위한 것입니다. 연결은 공격면을 크게 줄입니다. 그러나 두 번째 이유는 페그아웃을 확보하는 방법과 관련이 있으며, 페그아웃 이중 지불의 불가능함을 입증할 수 있게 합니다. 다음의 도표는 RSK와 같은 연합 사이드체인의 페그인 및 페그아웃을 표시합니다. 페그 자금은 연합 다중 서명의 보호를 받으며, 다중 서명 개인 키를 보유한 당사자를 functionaries(관리자)라고 합니다. 제시된 체인에는 나중에 설명할 링크인 및 링크아웃이라는 두 개의 추가적 내부 거래가 있습니다. 빨간색 선은 “더미” 인풋/아웃풋을 사용하는 레퍼런스 체인에 해당합니다. 관리자가 서명하는 모든 거래는 이 체인에 연결됩니다. 각 거래는 하나의 더미 인풋을 소비하고 하나의 더미 아웃풋을 생성하기에 소비되지 않은 거래 아웃풋은 항상 하나뿐입니다. 이 특별한 UTXO를 로큰이라고 (링크 토큰을 줄인 말) 하겠습니다. 저희는 “로큰 체인”을 사용하여 로큰을 소비하고 생성하는 거래 체인을 참조합니다. 로큰 값은 비트코인 더스트 제한보다 높은, 작은 일정 값입니다.

로큰 체인

멤버를 추가하거나 제거하여 연합 기능을 업그레이드할 때는 주의가 필요합니다. 이는 RSK에 자동적으로 자금이 낡은 연합 다중 서명에서 새로운 것으로 옮겨가는 강제 지연 과정을 일으킵니다. 아직 싱크체인에 적합한 이동 과정을 제안하지는 않은 상태이나, 안전하게 처리할 수 있으리라고 생각합니다.

페그인

모든 페그인 및 페그아웃 과정을 제어하는 브릿지 스마트 컨트랙트는 페그인 거래에서 수신된 코인을 다른 UTXO로 전달하기 위하여 자동으로 관리자에게 명령을 내리는데, UTXO의 주소는 페그인의 것과 같거나 다를 수 있습니다. 하지만 이는 같은 컨센서스가 동일하게 제어하는 주소입니다. 수신된 코인의 초기 포워딩은 링크인이라고 부를 비트코인 거래에서 수행됩니다. 링크인 거래는 로큰을 소비하고 새로운 로큰을 생성합니다. 다음 예제 도표는 블록 1이 사이드체인 블록 A로 체크포인트가 될 때, 메인체인 블록 1의 사용자 시작 거래(도표의 “Peg-in Tx”)가 브릿지 동작을 트리거하는 방법을 나타냅니다. 첫 번째 조치는 3개의 사이드체인 블록의 초기 대기 기간입니다. 이후 블록 B에서 브릿지는 연합 기능 담당자에게 명령을 내려 링크인 거래에 서명하고 이를 전파하게 하며, 이는 즉시 페그인 자금을 소비하고 최종 다중 서명 페그 주소로 이동합니다.

페그인 과정

사이드체인 코인은 블록 A에서 즉시 해제되지만, 링크인 거래가 메인체인에 포함될 때까지는 페그아웃이 발생할 수 없습니다. 

페그아웃

이전 글에서 명시된 바와 같이 저희는 다음 사실을 보여드렸습니다. 작업 증명 사이드체인은 페그인/아웃 절차에서 마이너들의 협력 없이 페그인 및 페그아웃의 완전한 원소성을 제공할 수 없습니다. 공격자는 대안으로 메인체인을 되돌릴 수 있으며, 사이드체인과 메인체인을 다시 연결하고 마침내 메인체인 토큰과 사이드체인 토큰을 모두 유지하는데 성공합니다. 이제 저희가 마이너들의 도움 없이 어떻게 암호 경제적 보호를 달성할 수 있는지, 그리고 마이너들의 도움을 받아 어떻게 무조건적인 보호를 달성할 수 있는지 보여드리겠습니다.

Liquid와 같이 PBFT 유형의 컨센서스에 기반한 완전히 연합된 사이드체인 시스템은 결제 완료성(settlement finality)이 있기 때문에 페그아웃의 완전한 원소성을 제공할 수 없다는 점에 주목해야 합니다. Liquid 거래가 끝나면, 비트코인이 사이드체인을 반전시켜도 순 비트코인 베스트체인과 일치하도록 되돌리지 않습니다.

페그아웃 프로토콜

저희는 M.A.D와 표준 나카모토 컨센서스에 추가되는 다양한 가정에 기반한 무조건적 보증을 달성하는 세 가지의 다른 프로토콜을 찾았습니다. 다음 섹션에서는 각 프로토콜을 간략히 설명하겠습니다.

  • MPCW (More-Populous-Chain-Wins) SyncChain에 대한 페그아웃
  • T-Synchronized (TS) SyncChain에 대한 페그아웃
  • GHOST-CSC (not T-synchronized) SyncChain에 대한 페그아웃

이전 글에서 저희는 세 가지 변형을 모두 설명했습니다. 이 글에서는 TS SynChain만을 보여드리겠습니다. RSK 계정에서 비트코인으로 토큰을 다시 옮기기 위해 페그아웃 요청이라는 RSK 거래를 생성해 RBTC를 브리지 스마트 컨트랙트로 이동시킵니다. 다음 그림에서 이 거래는 A로 표시된 블록에 포함되어 있었습니다. 짧은 RSK 블록 수 확인 뒤에(3 등등) 브릿지는 연합 관리자가 서명을 넣을 수 있는 자리 표시자를 포함하는 링크 아웃 거래 템플릿을 생성합니다. 이 템플릿은 부분 서명 비트코인 거래 (PSBT) 기준을 사용할 수 있습니다. 그런 다음 브릿지는 연합 관리자의 거래 서명을 요청하는데, 이 이벤트를 링크 아웃 요청이라고 합니다. 이는 그림의 RSK 블록 B에서 발생합니다. 링크 아웃 거래는 반드시 OP_RETURN, 블록 A의 블록 해시, 그리고 A의 블록 번호로 구성되는 특수 데이터 출력을 포함해야 하며, 이 데이터 페이로드를 사이드체인 체크포인트 슬롯이라고 합니다. 이 슬롯은 하나 이상의 실제 사이드체인 체크포인트를 포함할 수 있습니다. 이때 사이트 체인 체크포인트가 메인체인 체크포인트와 함께 상호 체크포인트 레퍼런스를 생성한다는 점을 참고하기로 합니다.

페그아웃 절차

링크아웃 거래에 관리자의 서명의 대부분이 수집되고 나면 거래가 전파되며 곧 비트코인 블록체인에 포함될 것을 예상할 수 있습니다. 이는 그림의 비트코인 블록 4에서 발생합니다. 링크아웃 거래는 반드시 로큰 체인의 일부여야 합니다(로큰을 소비하고 새로운 로큰을 생성해야 함).  링크아웃 거래가 비트코인 블록 4에 포함되고 나면, 블록 4는 RSK 블록의 체크포인트로 참조됩니다(아니면 같은 효과로 체크포인트로 건너뛸 수 있음). 블록 4의 체크포인트는 일반적으로 약 30분 지연됩니다. 그림에서 블록 4는 RSK 블록 C에서 참조됩니다. 그 후 브릿지는 일부 블록을 기다립니다 (그림에서 166). 대기 시간이 끝나면 브릿지는 페그아웃 거래 템플릿을 생성하고 연합 관리자에게 서명을 요청합니다. 페그아웃 거래는 필요한 금액을 비트코인 사용자에게 실제로 돌려주는 최종 거래입니다. 연합이 나머지 페그 모두와 링크 거래에 서명하면 이는 로큰 체인에 링크됩니다. 페그아웃 거래는 비트코인 블록에 포함되며, 이는 그림의 블록 11에서 발생합니다. 이는 약 30분 후에 RSK 체크포인트에 참조되며 해당 로큰은 다른 링크인이나 링크 아웃 거래에 이용할 수 있습니다. 전체 페그아웃 절차에는 평균 2시간 10분이 소요되며, 두 번의 연합 서명이 필요하고 두 개의 비트코인 거래를 생성합니다. 로큰을 소비하는 거래가 메인체인에 포함되기 위해 대기하는 동안 페그인 거래가 확인되면 페그인은 대기 상태가 됩니다. 실제로 많은 링크인과 페그아웃 거래는 단일 로큰 생성 및 파괴 입력/출력을 갖는 하나의 배치로 결합될 수 있습니다.

페그아웃 보안

다음 섹션에서는 일부 이론적 공격과 싱크체인이 이에 저항하는 방법을 보여드리겠습니다. 모든 암호화폐 수락 시스템에 가장 중요한 공격은 이중 지불입니다. 공격자는 이중 지불 시 RSK를 반전시키거나, 비트코인을 반전시키거나, 두 가지 모두를 반전시킬 수 있습니다. 현재 RSK는 비트코인 마이너들의 35~50% 사이에서 병합 채굴됩니다. 이 글에서는 RSK 해시율이 비트코인보다 낮다고 가정하고 있으므로, 공격자가 비트코인을 반전시키는 경우 병합 채굴로 두 개 체인 모두를 반전시킬 수도 있게 됩니다. 

RSK만 반전시킨 이중 지불 페그아웃 

RSK의 해시율이 비트코인보다 낮다고 가정할 때, RSK 반전은 가장 쉬운 이중 지불 방법처럼 보입니다. 우리는 RSK 블록이 비트코인 블록에 의존하기에 페그인 거래가 동기화되는 방식을 알 수 있습니다. 그러나 다른 방향으로는 동기화가 보장되지 않습니다. 따라서 페그아웃의 경우 강제로 비트코인에서 링크아웃 거래가 발생하게 합니다. 링크아웃 거래의 타임스탬프는 RSK가 해당 페그아웃 요청을 수행하지 않으면 능가할 수 없는 범위를 설정합니다.

Nakamoto 컨센서스는 거래가 해결된 것으로 간주되는 경우를 제외하고 블록체인 처리의 모든 측면에 명확한 규칙을 설정합니다. 거래 해결 경우는 각 사용자가 결정하게 되며, 유일하게 주어지는 지침은 블록 확인 수가 많을수록 반전 가능성이 낮다는 것입니다. 페그아웃 이중 지불이 불가능함을 보장하려면 반드시 거래 수락이 충족해야 할 조건을 사이드체인의 Nakamoto 컨센서스에 추가해야 합니다. 먼저 정의를 소개하도록 하겠습니다. 로컬 최고 체인이 지금 현지 시간보다 T초 뒤라면 네트워크 노드는 T-동기화됩니다. 사이드체인은 싱크체인을 구축하기 위해 다음과 같은 새로운 조건을 충족해야 하며, 노드는 거래가 T-동기화된 경우에만 이를 해결된 것으로 간주합니다. 또 엄청난 양의 누적 난이도로 거래 W가 확인되면 이를 수락하기로 할 수도 있으나, 현재로서는 가장 간단한 정의를 사용하도록 하겠습니다. 

T-동기화 특성으로 인하여, 모든 사이드체인 반전 공격에 블록 C의 타임스탬프를 지나는 타임스탬프를 갖춘 최소 하나의 사이드체인 블록을 추가해야 한다는 사실을 알 수 있습니다. 이는 블록 4가 체크포인트되는 지점입니다.  따라서 블록 4와 블록 C 사이의 시간이 T보다 길면 (사이드체인의) 공격자 체인은 거래를 절대로 확인할 수 없게 됩니다. 이는 노드 로컬 타임이 반전되지 않았다고 가정합니다. 

비트코인과 RSK 반전으로 이중 지불 페그아웃(그러나 나중에 페그아웃 tx 재생하기)

이중 지불 공격을 수행할 수 있는 한 가지 방법은 링크아웃 거래 전에 비트코인 블록체인을 반전시키거나, 동시에 페그아웃 요청 전에 RSK 블록체인을 반전시켜서 링크아웃과 페그아웃 거래를 훨씬 나중의 블록에 모두 보유한 새로운 비트코인 브랜치를 생성하는 것입니다. 예를 들어서 공격자가 10개의 비트코인 블록을 반전시키고 페그 거래 없이 10개의 다른 블록을 채굴해 마지막으로 링크아웃과 페그아웃을 모두 포함하는 11번째 블록을 추가한다고 합시다. 부정직하지만 합리적 마이너들이라고 가정했을 때, 10 블록 반전은 대략 150만 달러(1) 이므로 페그아웃 거래로 전송할 수 있는 최대 금액입니다. 무조건적인 보안을 원하지 않는 경우, 우리는 앵커링과 더불어 더 잘해야 합니다. 앵커링을 사용하면 링크아웃 거래가 미래의 블록으로 이동하는 것을 방지할 수 있습니다.

페그아웃 앵커링

거래를 앵커링할 수 있는 가장 쉬운 방법은 바로 스택에서 인수로서 블록 해시를 받고 주어진 블록 해시가 소비되는 입력이 생성된 곳의 블록 해시와 일치하지 않는 경우 블록을 무효화하는 새로운 옵코드 OP_CHECK_INPUT_BLOCK_HASH를 추가하는 것입니다. 우리는 이 새로운 옵코드를 비트코인 커뮤니티가 수락할 것이라고 생각하지 않습니다. 왜냐하면 다른 것들을 대신할 수 있는 비트코인을 생산할 수 있기 때문입니다. OP_CHECK_INPUT_BLOCK_TIME는 동일한 트릭을 수행할 수 있는 대체 옵코드입니다. 이 옵코드는 소비되는 입력에 상응하는 블록이 옵코드 인수보다 높은 경우 거래를 무효화합니다. 반대로 이 옵코드는 훨씬 적게 대체 가능성을 변경합니다. 그러나 새로운 특정 옵코드 없이 동일한 결과를 달성하는 방법이 여전히 하나 존재하는데, 바로 링크아웃과 페그아웃 거래 블록 사이의 블록 B에 존재하는 코인베이스 거래의 출력을 페그아웃 거래에서 소비하는 것입니다. B가 반전되면 페그아웃 거래는 무효화되며, 링크아웃을 없애는 유일한 방법은 B를 반전시키는 것입니다. 단점은 코인베이스 거래 출력에 100 블록 만기 기간이 있기 때문에, 이 구속력이 페그아웃에 100 블록 지연을 도입한다는 점입니다. 페그아웃 거래는 100 블록 기간 전에 포함될 수는 없으나, 훨씬 전에 서명하고 발행할 수 있으므로 사용자에게는 페그아웃 거래가 발생한다는 아주 강력한 보증이 됩니다. RSK는 페그아웃을 코인베이스에 결속시키기 위해, RSK 병합 채굴 마이너들에게 특정 연합 주소에 1 satoshi (2) 를 지불하는 추가 출력을 포함시키고, Satoshi를 페그아웃 거래에서 소비하도록 요청할 수 있습니다.

(1) crypto51.app 웹사이트 참조.

(2) 코인베이스 거래는 블록에 포함되기 전 네트워크에 포워딩되지 않으므로 “더스트” 한도를 넘어설 필요가 없음.

코인베이스 앵커링이 있는 페그아웃 과정

RSK를 싱크체인으로 이동하기

싱크체인은 SPV 사이드체인보다 이점이 많지만, RSK가 싱크체인으로 전환할 수 있는 시기와 방법을 말하기에는 너무 이릅니다. 여기에는 이점도 있지만 이동 리스크도 따릅니다. 코딩, 테스트, 시뮬레이션 및 보안 감사는 반드시 각 설계 결정을 검증해야 합니다. 그러나 사용성과 보안 모두에서 많은 이점을 제공하는 깔끔한 설계에서는 편안함을 느낄 수 있습니다. R&D 단계가 모두 완료되자마자 바로 싱크체인으로의 이동에 대한 토론을 시작하고, RSK 커뮤니티의 피드백을 받아 2020년 또는 2021년에 이동을 실행할 수 있기를 희망합니다. 

요약

이 글에서 소개한 싱크체인은 새로운 유형의 사이드체인으로 페그인 시간을 16시간에서 30분으로 32배 단축할 수 있습니다. 또 페그아웃 시간도 16시간에서 1.6시간으로 단축할 수 있으며, 이때 속도 제한기를 유지하면 시간당 38 BTC 이상은 전송되지 않습니다. 또한 코인베이스 앵커링을 사용하여 16시간의 페그아웃 시간으로 무조건적인 페그아웃 보안을 제공하는 변형도 제시하였습니다. 이는 RSK가 암호경제학적 보안만으로 현재 요구하는 것보다 짧은 시간입니다. 또 비트코인을 위해 시간제한 없이 무조건적인 보안 기능을 갖춘 페그아웃을 지원하는 새로운 옵코드 OP_CHECK_INPUT_BLOCK_HASH를 제안하였습니다. 

싱크체인은 현재 RSK SPV 페그가 더 낮은 페그아웃 및 페그인 블록 확인을 달성할 수 있더라도, 병합 채굴 참여가 증가하는 경우 동일한 참여 수준에 더 적은 수의 확인을 제공합니다. 

싱크체인은 다음과 같은 다른 보조적 이점도 제공합니다. 

  1. rskj의 컨센서스에 따라 RSK가 실행하는 코드의 양을 줄입니다. 이 코드 기능 중 일부는 이제 비트코인이 직접 제공하게 됩니다. 
  2. 선택한 프로토콜에 따라 무조건적인 보안을 제공하거나 강제로 RSK에 대한 공격이 비트코인에 대한 공격이 되게 합니다. 이는 게임 이론에서 M.A.D의 속성입니다.
  3. 비트코인에서 직접 크라우드 펀드에 투자하는 것과 같은 주소 간 페그인을 허용합니다.

 

싱크체인에는 약간의 작은 단점도 있습니다. 예를 들자면 싱크체인은 짧은 거래 최종성을 제공할 수 없습니다. 장단점을 고려했을 때 싱크체인은 확실히 비트코인 사이드체인에 탁월한 프로토콜입니다.

참고 자료

[1] Ren Zhang 및 Bart Preneel. 출판 또는 소멸: 비트코인의 이기적 채굴에 대한 구버전 호환성 방어. RSA 컨퍼런스의 암호화폐 전문가 트랙, 277–292 페이지. Springer, 2017

[2] 51% 공격에 대한 보호 강화를 위한 Satoshi 컨센서스 수정 제안. 지연된 블록 제출에 대한 페널티 시스템.

https.//www.horizen.global/assets/files/A-Penalty-System-for-Delayed-Block-Submission-by-Horizen.pdf

[3] 체인 재구성 지연.

 https.//bitslog.com/2013/06/26/the-bitcoin-eternal-choice-for-the-dark-side-attack-ecdsa/

[4] Ledger 체크포인트를 통한 거래 완료성(Transaction Finality) (https.//ieeexplore.ieee.org/document/8975825 또는 https.//github.com/MuhammadNurYanhaona/checkpoint-paper/blob/master/checkpoint-paper-reviewed.pdf)

[5] 체크포인트를 통한 작업 증명 Ledger 보안 확보 (https.//eprint.iacr.org/2020/173.pdf)