Perun: 암호화폐 가상 채널 허브
김성준, Virtual Machine & Optimization Lab in Seoul Nat’l University
본 포스팅에서는 Dziembowski, Stefan, et al. “Perun: Virtual payment hubs over cryptocurrencies.” 2019 IEEE Symposium on Security and Privacy (SP). IEEE, 2019.[1]을 다룬다.
개요
암호화폐의 탈중앙화를 가능케 하는 블록체인 기술은 분산 원장을 유지하는 합의 메커니즘으로 동작한다. 이때 네트워크에 참여하는 모든 노드는 합의된 단일 상태를 유지할 필요가 있는데, 이로부터 기인하는 낮은 확장성이 주된 단점으로 꼽힌다. 이러한 확장성 문제는 특히 적은 양의 돈을 전송하는 마이크로 트랜잭션에서 대두된다. 마이크로 트랜잭션은 즉각적으로 수행되는 것이 중요한데 반해, 일반적인 암호화폐에서는 트랜잭션 하나가 컨펌되기까지 수 분에서 수십 분 가량 소요되기도 한다. 송금하는 금액과는 무관한 트랜잭션 수수료는 덤이다.
블록체인의 낮은 확장성을 해결하는 방법에는 크게 두 가지가 있다. 하나는 비트코인의 세그윗(SegWit) · 빅 블록, 이더리움의 플라즈마 (Plasma) · 샤딩 (Sharding) 등 블록체인의 구조를 개선하여 확장성을 증가시키는 온체인 솔루션이다. 다른 하나는 오프체인 솔루션으로, 체인 밖에서 연산을 수행함으로써 트랜잭션 처리량을 증가시킨다. 지불 네트워크는 대표적인 오프체인 솔루션 중 하나로, 비트코인의 라이트닝 네트워크 (Lightning Network)와 이더리움의 라이덴 네트워크 (Raiden Network)가 이에 속한다. 특히 라이트닝 네트워크는 실제로 사용되고 있으며 지불 채널의 총 용량이 꾸준히 증가하는 등 지속적으로 성장하고 있다[2]. 이번 포스팅에서는 가상 채널을 도입함으로써 기존 지불 네트워크에서의 라우팅 트랜잭션의 단점을 해소한 Perun 시스템을 소개한다.
지불 채널이란?
거래하고자 하는 두 당사자 Alice와 Bob이 있을 때, 지불 채널을 활용하면 오프체인 트랜잭션을 활용하여 블록체인의 확장성에 제한받지 않고 빠른 속도로 거래를 수행할 수 있다. 지불 채널을 이용하는 거래는 지불 채널 개설, 업데이트, 폐쇄의 3단계로 구성된다.
먼저, 거래하고자 하는 두 당사자 Alice와 Bob이 있을 때, Alice는 비트코인 네트워크에 일정량의 비트코인을 보증금으로 사용하는 펀딩 트랜잭션을 보낸 뒤 이를 Bob에게 알린다. Bob은 비트코인 네트워크에 접속하여 Alice가 정말로 펀딩 트랜잭션을 전파했는지 확인하고, 맞다면 Bob 또한 자신의 보증금을 담아 펀딩 트랜잭션을 전파한다. 이로써 Alice와 Bob 사이에는 지불 채널이 형성되며 자유롭게 거래할 준비를 마친다.
지불 채널이 형성되었으면, 이후 거래는 블록체인을 거치지 않고 오프체인 상에서 이루어진다. Alice와 bob은 거래에 따른 최신 상태마다 버전 정보를 기록하고, 업데이트된 상태에 대해 서로의 서명을 담은 메시지를 교환한다. 이는 블록체인을 거치지 않기에 거래 처리 속도에 제한이 없고, 채굴자에게 일정량 지급했어야 할 트랜잭션 수수료 또한 필요하지 않다.
Alice와 Bob이 지불 채널을 폐쇄하기로 합의했다면, 이들은 블록체인에 채널을 폐쇄하겠다는 내용의 트랜잭션을 전파한다. 트랜잭션이 유효하다면 채널에 묶여있던 잔액은 각 사용자의 주소로 환급되며 모든 과정이 종료된다.
지불 네트워크의 등장
Alice와 Ingrid, Ingrid와 Bob 사이에 채널이 있을 때 Alice와 Bob 사이에 비트코인을 전송하는 상황을 가정해보자. 위에서 다룬 지불 채널은 거래를 하고자 하는 두 사용자 간에 채널 개설이 반드시 요구되므로, Alice와 Bob의 직접적인 거래는 불가능하다. 이때 비트코인의 라이트닝 네트워크는 해시타임락 컨트랙트(HTLC)를 이용한 라우팅 트랜잭션 기능을 제공하며, 라우팅 트랜잭션의 도움으로 Alice는 Ingrid를 거쳐 bob에게 코인을 송금할 수 있다. 라이트닝 네트워크에 대하여 자세히 알아보고 싶다면 링크의 글을 참고하자.
하지만 (1) 중개인을 거쳐 거래가 이루어지기에 지연 시간이 발생하고, (2) 라우팅에 참여하는 모든 중개인들이 일정량의 수수료를 요구할 수 있으며 (3) 중개인이 모든 거래마다 참여해야 하므로 높은 가용성(availability)이 보장되어야만 한다는 문제점이 있다. 이번 글에서 다룰 Perun 시스템은 가상 채널을 도입함으로써 기존 라우팅 트랜잭션의 문제를 해결한다.
Perun의 가상 채널
가상 채널은 중개자 Ingrid의 도움으로 Alice와 Ingrid, Ingrid와 Bob 사이에 존재하는 원장 채널을 이용하여 개설된다. 이는 원장 채널이 원장의 도움으로 개설되는 것과 유사하지만, 몇 가지 유의미한 차이점 또한 존재한다. 먼저, 원장 채널은 오직 두 파티 간의 지불만을 다루며, 원장 채널과는 달리 가상 채널에서는 블록체인이 관여하지 않으므로 채널 내부에서 스마트 컨트랙트를 수행할 수 없다. 이를 해결하기 위해 가상 채널에서는 기존 원장 채널이 제공하는 기능을 확장한다. 하나는 새로운 가상 채널을 개설할 때 이에 참가하는 파티 {Alice, Bob, Ingrid}들이 추가적인 서명된 정보를 교환하며, 엔드 유저 {Alice, Bob}는 원장 채널 업데이트 메시지에 더 많은 정보를 담는다. 이들은 추후 개설 증명서(opening certificate) 및 폐쇄 증명서(closing certificate)로 활용된다.
가상 채널 개설
가상 채널의 개설은 파티들이 개설 증명서를 교환함으로써 이루어진다. 먼저, Alice와 Bob은 각자 자신의 서명이 담긴 개설 증명서를 Ingrid에게 전송한다. Ingrid는 두 파티로부터 증명서를 모두 수신하면 자신의 서명이 담긴 개설 증명서를 Alice와 Bob에게 전송한다. Alice와 Bob은 Ingrid로부터 받은 개설 증명서를 서로에게 포워딩하는 것으로 가상 채널 개설이 완료된다. 각자의 서명이 담긴 개설 증명서는 어떤 파티로 하여금 가상 채널 개설에 동의하였음을 부정할 수 없도록 보장한다. 이때 원장 채널에 대한 별도의 업데이트는 없으며, 원장 채널에 존재하던 코인은 가상적으로 제거됨을 유의하자.
가상 채널 업데이트
가상 채널에서의 업데이트는 원장 채널에서의 그것과 유사하다. 새로운 거래가 진행될 때마다 최신 업데이트의 버전 정보를 유지하며, 새로운 채널 버전에 각 파티가 서명한 메시지를 서로 교환한다. 이때 기존 지불 네트워크에서는 모든 중개자가 업데이트에 관여했다면, 가상 채널 내부에서는 어떠한 중개자도 업데이트에 관여할 필요가 없다. 이는 중개자 Ingrid가 오프라인 상태이더라도 유효한 채널 업데이트가 가능하여, 매 업데이트마다 중개자에게 수수료를 지급할 필요가 없음을 의미한다.
가상 채널 폐쇄
가상 채널 개설 단계에서 미리 합의된 validity가 만료되면 Ingrid에 의해 가상 채널 폐쇄 절차가 시작된다. Ingrid는 원장 채널 폐쇄에서의 스마트 컨트랙트와 유사한 역할을 수행하지만 신뢰할 수 없다는 큰 차이점이 존재하기에 절차가 더 까다롭다. 먼저, Alice와 Bob이 가상 채널의 최신 버전 상태에 대한 메시지를 Ingrid에게 보낸다. Ingrid는 이들 메시지의 버전을 비교하고, 더 높은 버전의 메시지대로 원장 채널의 잔액을 업데이트한다. Ingrid는 (1) 각각의 원장 채널에 대한 업데이트 정보에 추가로 (2) 가상 채널이 폐쇄되었다는 정보를 포함한 메시지에 자신의 서명을 담아 각 엔드 유저 Alice와 Bob에게 전송한다. 이는 가상 채널이 제 시간 내에 정상적으로 폐쇄되었다는 사실에 대한 증명이며, 이를 폐쇄 증명서라고 부른다. Alice와 Bob은 Ingrid가 보낸 폐쇄 증명서를 확인한 뒤, 이상이 없다면 각자 자신의 서명을 담아 Ingrid에게 재전송하는 것으로 가상 채널의 폐쇄 및 원장 채널 업데이트가 이루어진다.
Perun 시스템은 안전한가?
논문 저자들은 UC 프레임워크[3]를 활용하여 본 시스템의 보안성에 대한 분석 또한 수행했다. 그 결과 Perun 시스템이 아래 기술된 5가지 보안 요구사항을 충족시킴을 보였다. 이는 Alice, Bob 및 Ingrid가 임의의 corruption에 안전하며, 중개자 Ingrid가 정직하다는 가정이 필요하지 않다는 뜻이기도 하다.
- 채널 개설에 대한 합의: 채널에 포함되는 모든 파티 {Alice, Bob}이 동의해야만 채널이 개설됨. 가상 채널이라면 중개자 Ingrid도 포함됨
- 채널 업데이트 합의: Alice와 Bob 모두 컨펌해야만 채널 업데이트가 이루어짐, 상수 시간 소요
- 채널 폐쇄 보장: 채널 폐쇄를 요청하면 주어진 시간 내에 폐쇄됨을 보장
- 엔드 유저로의 잔금 전송 보장: 가상 채널이 폐쇄될 때, 가상 채널에서의 최신 잔금이 각 원장 채널의 엔드 유저에게 전송됨
- 중개자의 잔금 중립성(balance neutrality): 가상 채널이 폐쇄될 때, 한 원장 채널에서 x만큼의 코인을 잃었다면 다른 원장 채널에서는 x만큼을 얻음
구현 및 평가
논문 저자들은 이더리움의 프로그래밍 언어인 솔리디티(Solidity)를 활용하여 채널 컨트랙트를 구현했다[4]. 각 프로시저에서의 온체인 트랜잭션 개수, 비용, 메시지 개수, 서명 개수를 평가 요소로 산정하였다. 실험 결과 가상 채널 폐쇄 과정에서 모든 파티 구성원이 정직하게 행동했다면 온체인 트랜잭션이 전혀 발생하지 않기에 트랜잭션 수수료 또한 발생하지 않았으며, 누군가 악의적으로 행동하여 이를 처벌하는 컨트랙트를 호출하기 위한 온체인 트랜잭션이 필요한 상황에서도 1달러 미만의 비용이면 충분했다. 그 밖에도, 기존 해시타임락 기반 시스템에서는 매 거래를 수행할 때마다 중개자를 포함한 메시지 교환이 적어도 6번 필요한데 반해, Perun 시스템에서는 중개자와 메시지를 주고받을 필요 없이 두 거래 당사자 간의 메시지 2개면 업데이트가 이루어진다는 점을 장점으로 꼽았다.
결론
본 포스팅에서는 오프체인 솔루션인 기존 지불 네트워크에서 단점으로 지목되었던 문제를 다루었고, 이를 해결하기 위해 가상 채널 개념을 도입한 Perun 시스템을 소개했다. 지불 채널이 개설되면 채널 업데이트에는 수수료가 필요하지 않은 것처럼, 가상 채널도 마찬가지로 일단 개설되면 더 이상 중개자에게 수수료를 지불하지 않고도 자유로운 거래가 가능하다는 특징이 있다.
가상 채널의 중개자는 사실상 원장 채널에서의 블록체인 원장과 동일한 역할을 수행한다. 블록체인 원장과는 달리 신뢰할 수 없는 중개자에게도 신뢰를 부여할 수 있게끔 개설 증명서 및 폐쇄 증명서라는 별도의 장치를 마련했다는 점에서 눈여겨볼 만하다.
레퍼런스
[1] https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8835315
[2] https://www.tokenpost.kr/article-41538
[3] R. Canetti. “Universally Composable Security: A New Paradigm for Cryptographic Protocols”. In: 42nd FOCS. Las Vegas, NV, USA: IEEE Computer Society Press, 2001, pp. 136–145.