페룬(Perun) 분석 : 이더리움 스케일링 솔루션의 진화 - 과연 이더리움의 구원자인가?

in #kr7 years ago (edited)

안녕하세요, 블록체인이 가져올 새로운 미래를 꿈꾸는 @Cryptodreamers 입니다.

스크린샷 2018-04-22 오후 12.07.25.png



바르샤바 대학 출신의 연구진들이 이더리움의 새로운 스케일링 솔루션을 발표했습니다. 라이트닝 네트워크의 방식을 개선하여 솔루션을 제안한 이 프로젝트는 페룬(Perun)으로 명명되며, 슬라브 신화에서 나오는 빛의 신 페룬의 이름을 따서 지었다고 합니다.

페룬(Perun)이 제안하는 스케일링 솔루션은 어떤 내용을 담고 있을까요?
본 프로젝트를 검토한 비탈릭 부테린이 크게 감명받았다는 이 프로젝트는, 바로 며칠 전 4월 14일에 발표된 최신의 솔루션입니다. 과연 페룬은 이더리움 스케일링 문제를 해결해줄 구원자일까요? 페룬 프로젝트에서 공개한 백서를 기반으로 그들이 어떤 해결 방식을 제안한 것인지 분석하고자 합니다.

다만 사전에 말씀드리고 싶은 부분이 있다면, 비트코인의 라이트닝 네트워크 혹은 이더리움의 라이덴에서 사용되는 핵심 개념인 payment channel에 대해서 사전 이해가 다소 필요할 것으로 생각됩니다. 이전에 라이트닝 네트워크에 대해서 분석을 한 포스팅이 있으니, 사전에 학습이 필요하시다면 아래의 Reference에서 참고하셔도 좋을 것 같습니다.

지금부터 페룬의 전격 해부를 시작하겠습니다.


1. 소 개


비트코인과 같은 암호화폐는 지난 10년간 엄청난 인기를 얻어왔습니다. 이 화폐의 근원은 블록체인 혹은 원장이라고 불리는 기술입니다. Satoshi Nakamoto가 공개한 비트코인의 백서가 발표된 이후로 수 많은 암호화폐가 제안되었습니다. 그 중에서도 특히 이더리움이 흥미로운 것은 스마트 컨트랙트가 가능하도록 한다는 점입니다. 간단하게 설명을 하면, 스마트 컨트랙트는 장부에 기록되어 블록체인의 프로토콜에 의해서 실행됩니다.

블록체인 기술은 각각의 모든 거래가 장부에 저장되야만 합니다. 이런 특성으로 인해서 "매초마다 얼마나 많은 거래가 처리될 수 있는가?"에 대한 근본적인 한계점을 갖게 됩니다. 유저들이 가령 1센트도 안되는 소액의 거래를 하고자 할 때, 이러한 소액거래는 이더리움의 확장성(Scalability) 문제를 기하급수적으로 증폭시킵니다. 이러한 소액거래는 서비스 이용에 대한 합당한 비용을 지불하게 만드는 Wifi서비스나, IoT(Internet of Things : 사물인터넷)장치들을 활용한 댓가로 비용을 지불하는 새로운 비지니스 모델을 가능하게 합니다.

확장성의 문제와 관련해서 많은 양의 소액거래를 처리하기 전에, 분산원장 기반의 암호화폐가 꼭 처리해야할 문제들이 또 있습니다. 가장 먼저, 소액거래들은 즉각적으로 처리되어야만 합니다. 이런 점은 매우 중요한 화두입니다. 왜냐하면 원장에 기반한 암호화폐는 거래를 처리하기 위해 검증하고 확정하는 과정이 있기 때문에 이를 처리하기 위한 시간이 소요되기 때문입니다. 이보다 더 중요한 두 번째 이유는 장부에 거래를 기록하는 것이 비용이 든다는 문제입니다. 이러한 문제들을 해결하기 위해서 지불채널(Payment Channel)이라는 매우 흥미로운 기술이 제안되었는데, 이 기술을 통해서 두 명의 유저가 장부에 거래를 기록하지 않고도 아주 빠른 속도로 거래할 수 있습니다. (Payment Channel은 라이트닝 네트워크에서 제안된 개념입니다.)

이러한 시스템을 활용하는 예로 라이트닝 네트워크(Lightning Network)와 라이덴(Raiden)과 같은 기술들은 지불채널(Payment Channel)기술을 활용해서 지불 네트워크를 만듭니다. 이런 기술들은 지연된 암호화 거래(Hash locked transactions)를 활용해서 블록체인 위의 다중 채널의 매커니즘을 만들어 냅니다. 이런 기술들은 상태채널(State Channels)라는 용어로 일반화되어 분류되고, 쉽게 말해서, 채널을 만든 유저간에 스마트 컨트랙트를 실행할 합니다.



2. 페룬 : 이더리움의 가상채널(virtual channels)


이번 챕터에서는 Perun(이더리움 위에서 지불을 하기위한 상태채널(state channel)의 시스템)에 대해서 쉽게 소개를 하겠습니다.
좀 더 세부적이고 기술적인 내용은 페룬의 백서를 참고하셔야 합니다. 페룬은 채널들을 연결하는 새로운 기술을 제공합니다. 페룬은 다중채널 위에서 거래를 연결해주는 라우팅 거래(Routing transaction)라는 현존하는 기술보다 몇 가지 나은 점이 있습니다.

무엇보다도 중요한 것은, 페룬은 채널의 양끝에 있는 당사자간의 거래를 위해서 중개를 해줄 필요성이 없다는 것입니다. (역자 주 : 라이트닝 네트워크에서 다자간 거래는 중개자가 반드시 필요합니다.) 이는 페룬에서 유일무이한 가상결제채널(Virtual payment channel)이라고 불리는 상태채널을 만들어 내기 때문에 가능한 일입니다. 이 개념들을 아래쪽에서 설명해드립니다. 좀 더 간결한 설명을 위해서, 몇 가지 거래 수수료와 같은 실질적인 개념들은 생략하겠습니다. 먼저 간단한 결제 채널을 한 번 생각해보죠. 페룬에서는 이러한 결제채널을 기본결제채널(Basic payment channel)이라고 명명하겠습니다.

2.1 장부 채널(Ledger Channel)


앨리스와 밥, 두 당사자간에 존재하는 장부채널은 상당한 양의 거래를 처리할 수 있는 오프체인 채널입니다. (항상 예시는 앨리스와 밥이네요...) 좀 더 자세히 이야기하자면, 이 장부는 결제채널에서 당사자간에 분쟁이 생겼을 때, 혹은 단순히 채널을 종료(closing)하길 원할 때 활용됩니다. (역자 주 : 라이트닝 네트워크에서는 결제채널을 최초로 생성할 때 혹은 결제채널을 종료할 때만 비트코인의 블록체인의 장부에 기록됩니다.) 두 당사자가 분쟁을 겪지 않는한, 채널에 기록되어 있는 잔고를 항상 자유롭게 업데이트 할 수 있습니다. 서로 거래를 하면 잔고가 계속 달라질테니까요. 오프체인의 거래는 두 당사자가 개입되어 있는 장부에 언제든지 마감될 수 있으니, 유저들은 상대방을 속이려고 할 이유가 없습니다. 그래서 거래 당사자들은 항상 선한 방식으로 행동하게 됩니다.

긍정적인 관점으로 본다면, 결제채널에서 두 당사자가 선한 행동을 할 때 오프체인에서 이루어지는 거래들은 절대 채널이 닫히기 전에는 거래 수수료를 내지 않아도 됩니다. 이런 점 때문에 결제가 즉각적으로 이루어질 수 있고, 이더리움의 블록체인 장부에 기록되는 거래의 부담을 줄일 수 있죠. 기술적으로 이야기한다면, 이 채널들은 스마트 컨트랙트로 실행될 수 있습니다. 이런 스마트 컨트랙트들은 분쟁이 발생한 상황에서, 합당한 방식으로 거래를 종료시킬 수 있습니다. 아래쪽에서 이러한 채널들이 제공하는 기능에 대해서 자세하게 설명하겠습니다.

먼저, 장부결제채널(Ledger payment channels)입니다. 거래 당사자들인 앨리스와 밥은 채널을 만드는 과정을 통해서 장부채널에 거래를 위한 코인을 예치합니다. 앨리스는 xA개의 코인을 예치하였고, 밥은 xB개의 코인을 예치하였다고 해봅시다. 처음에 이 채널의 잔고는 (xA, xB)로 표현될 수 있겠죠. 앨리스는 xA개의 코인을 채널에서 소유하고 있고, 밥은 xB개의 코인을 채널에 갖고 있다는 표현입니다.

그림으로 한 번 살펴볼게요. 앨리스는 채널을 만들고 코인 2개를 예금했고, 밥은 3개를 예금했습니다.

스크린샷 2018-04-21 오후 8.46.50.png

이런 작업이 끝나고나면, 앨리스와 밥은 이더리움 블록체인과 무관하게, 거래당사자간의 잔고와 거래기록을 계속해서 업데이트 할 수 있습니다. 예를 들어, 앨리스가 1 코인을 밥에게 채널로 보냈다면 <그림1>에서 보듯, 채널의 잔고는 (1, 4)가 되겠죠. 아래쪽 그림과 같이 표현됩니다.

스크린샷 2018-04-21 오후 8.47.02.png

채널의 잔고는 여러번 업데이트 될 수 있고, 앨리스와 밥의 채널에 있는 잔고의 총액은 변화가 없겠죠. 어떤 시점에 두 당사자가 거래를 종료하고 채널을 닫고 싶어한다면, 예를 들어서 앨리스가 채널을 닫고 싶어 한다면 현재의 잔고는 (X'a, X'b)와 같고, 이 잔고대로 이더리움의 블록체인에 통보하고 잔고현황에 일치하게 정산을 받으면 됩니다. 앨리스는 X'a개의 코인을 받고, 밥은 X'b개의 코인을 받겠죠.

예를 들어, 그림2와 같은 채널이 종료되었다면, 앨리스는 1개를 받고 밥은 4개를 각각 받을 것입니다. 이하의 그림과 습니다.

스크린샷 2018-04-21 오후 8.47.08.png


장부상태채널(Ledger state channel)
(지금부터 용어가 헷갈릴 수 있으니 앞에서 언급된 장부결제채널과 혼동하지 않도록 주의하셔야 합니다) 앞서 언급한 것과 같이, 좀 더 일반화된 결제채널(payment channel)을 상태채널(State channel)라고 합니다. 상태채널은 결제채널의 기능성을 매우 높여 줄 수 있습니다. 상태채널은 결제는 물론이고, 오프체인의 채널 안에서 스마트 컨트랙트를 활용할 수 있습니다. 아주 엄밀하게 말한다면, 채널의 상태에 경제적인 잔고 상황 이외에도, 문자 σ 를 활용해서 계약과 관련한 정보를 담을 수 있습니다. 그리고 x 라는 값은 계약에서 묶여있는 코인(blocked coin : 펜딩되어 있는 코인)이죠. 상태채널의 유저들간에 분쟁이 없는한, 그들은 언제나 σ 를 자유롭게 업데이트 할 수 있습니다. 하지만 당사자간 누군가가 악의적인 행동을 하기 시작한다면, 상대방은 마지막으로 업데이트된 σ 수치가 포함된 장부를 블록체인에 통보하고 스마트 컨트랙트를 종료할 수 있습니다. 대부분의 거래에서 당사자들은 이런 행동을 할 필요가 없지만, 문제가 발생할 경우에 스마트컨트랙트에 기록된 σ 의 상태를 업데이트함으로써 "평화롭게" 해결 할 수 있습니다.

이것에 대해서 들여다볼 수 있는 한 방법은 상태채널이 제공하는 "가상의 두 당사자 장부(Virtual 2-party ledger)"를 통해서 입니다. 두 상태채널을 만들었던 두 당사자들은 "가상계약장부(Simulated contract ledger)"를 유지할 수 있는데요, 이를 통해서 실제 장부에 등록하지 않고서도 가상의 장부거래를 실행해볼 수 있습니다. 그렇기 때문에 두 당사자가 분쟁에 휘말리지 않을 수 있죠. 이 문제의 보안성은 언제든지, 어느쪽의 당사자든 현재 채널의 상태를 실제 장부에 올릴 수 있다는 것입니다.

페룬에서는 상태채널을 구성하는 몇 가지 독립적인 계약의 상태 (σ1, . . . , σm)를 활용해서 이와 같은 개념을 좀 더 확장할 수 있습니다. σi 라는 것은 계약이 생성되는 즉시 업데이트되고 함께 시행됩니다. 모든 σi 는 그에 대응되는 xi 라는 변수를 갖고 있고, 이는 이에 상응하는 계약에 대해서 묶여있는 코인수를 이야기합니다. 매번 새로운 거래가 생성될 때 마다, 앨리스와 밥은 그 계약에 코인들을 묶어야합니다. (특정한 계약에 코인이 사용될 수 없는 상태로 펜딩된다는 뜻입니다.) 그래서, 앨리스와 밥이 채널에서 가진 사용가능한 코인의 총량은 채널의 일생동안 계속해서 변화할 수 있습니다. 이러한 상태채널들은 우리가 밑에서 설명하려고 하는 가상채널(Virtual channels)을 이야기하는데 핵심적인 부분이 됩니다.



2.2 가상 채널(Virtual channels)


페룬에서 가장 중요하고 참신성이 돋보이는 부분은 바로 채널들을 연결하는 새로운 방법입니다. 이는 기존의 결제채널(payment channel) 네트워크에서 활용되었던 "결제 라우팅(payment routing)"의 대안으로 나온 것입니다. 즉, 페룬은 가상채널을 통해서 채널의 체인들에서 중개자의 필요성을 최소화합니다. 그래서 개인간의 결제를 이어주는 중개자들에 의존성을 최소화합니다.

가상채널의 생성은 상태채널 위에 결제채널을 만듦으로써, 채널에 적용된 기술들을 반복적으로 활용하는 아이디어에 기반하고 있습니다. 우리의 관점은 즉, 상태채널의 스마트 컨트랙트를 결제채널을 만드는데 사용했던 것 처럼, 장부에 기록된 스마트 컨트랙트를 표준 장부위의 결제채널에 활용될 수 있는지에 대한 것입니다. 이 일반적인 개념의 작동원리에 대해서 설명하기 위해서는 상당한 디테일이 필요합니다. 어려운 것은 유저들의 무리들이 겹겹이 쌓인 가상채널들이 열리고, 업데이트되고, 동시에 닫히는 것과 같은 문제들을 잘 통제하는 것입니다. 이런 이슈들은 기술백서에 자세하게 나와있습니다. 아래쪽에 이 주제에 대해서 개략적인 설명을 드리겠습니다.

3명의 거래 당사자가 존재하는 두 개의 가상결제채널(Virtual payment channels)가 있습니다. 앨리스와 밥, 잉그리드 (드디어 새로운 이름이 나왔군요!)가 있습니다. 이 경우에서 앨리스와 잉그리드의 장부상채태널을 X라 하고, 잉그리드와 밥의 장부상태채널을 Y라고 합시다. 그렇다면 위에서 사용했던 방식과 동일하게 X장부상태채널을 (xA, xI )로, Y장부상태채널을 (yI , yB)로 나타내고 이를 통해 각 채널의 잔고상태를 각각 표현할 수 있습니다. 아래쪽에서 그림은 이런 상황이죠

(xA, xI ) = (3, 3) and (yI , yB) = (4, 5)

스크린샷 2018-04-21 오후 8.47.16.png

페룬에서 앨리스와 밥은 잉그리드의 도움을 통해서 결제채널을 만들 수 있습니다. 하지만 장부의 내용은 건드릴 필요가 없습니다. 각각의 채널들을 위에 보이는 장부와 구분짓기 위해서 "가상(virtual)"이라고 부릅시다. 가상채널의 경우, 모든 거래 당사자가 선한 행동을 하는 한, 앨리스와 밥은 채널이 만들어지고 닫히는 경우에만 잉그리드를 통해서 거래해야합니다. 그렇지만 이 채널을 통해서 이루어지는 앨리스와 밥의 개별적인 거래는 잉그리드의 개입이 필요없습니다.

우리의 목적은 앨리스, 잉그리드 그리고 밥이 임의로 악의적인 행동을 하는 것으로부터 보호를 하는 것입니다. 특히, 중개자인 잉그리드의 신뢰성이 필요하다는 가정없이 말입니다. 아래쪽의 그림으로 볼 수 있듯, 앨리스는 2코인을 X채널에 예치했고, 밥은 3코인을 Y채널에 예치했습니다.

스크린샷 2018-04-21 오후 8.47.23.png



(여기서부터는 그림을 보시면서 천천히 따라가 보세요)
일반적인 경우, 이 가상채널 X에 예치된 앨리스의 예치금을 vA 라고 표현하고, 채널Y에 있는 밥의 예치금을 vB라고 간주해봅시다. 기술적인 수준에서 이런 방식으로 통제가 됩니다. (a)앨리스와 잉그리드는 채널X에서 계약을 하고, 앨리스의 vA만큼 자신의 코인을 묶고 , 잉그리드는 vB만큼 자신의 코인을 묶습니다. (b)잉그리드와 밥은 채널 Y에서 계약을 하고, 잉그리드는 vA만큼 자신의 코인을 묶고, 밥은 vB만큼 그의 코인을 묶습니다. 결과적으로, 채널X의 잔고(cash)는 현재 (xA − vA, xI − vB) 입니다. 채널 Y의 잔고는 (yI − vA, yI − vB) 입니다. 가상채널 X와 Y위(그림4)에 만들어진 가상채널(그림5)의 생성이 아래의 그림6에 표현되어 있습니다.

스크린샷 2018-04-21 오후 8.47.31.png

가상채널의 생성의 결과로 잉그리드는 장부채널에서 그녀의 돈을 묶어야하고, 이것은 단점으로 보여질 수 있다는 점을 알고 있습니다. 곧 이어질 "섹션 2.4"에서 이 문제에 대한 해결책을 논의할 것입니다. 한 번 가상채널이 만들어지고 나면 여러번 업데이트 될 수 있고, 같은 방식으로 장부채널도 업데이트 될 수 있습니다. 예를 들어, <그림5>는 (2, 1)로 바뀔 수 있습니다.

스크린샷 2018-04-21 오후 8.47.41.png

장부채널처럼 가상채널 역시 비슷한 방식으로 닫힙니다. (기술백서에 명시되어 있는 내용인데, 가상채널은 때때로 검증(validity)이 필요할 때 닫힙니다.) 하지만 실제로 가상채널이 닫히는 상황은 일반적으로 발생하는 상황이라 할 수 있습니다. 장부채널이 닫히는 것과 비교했을 때 주요한 차이점은 장부에서는 볼 수 없지만 장부채널 X, Y의 경제적 상태변화를 볼 수 있다는 점입니다. 예를 들어, <그림7>의 가상채널을 닫는 것은 아래와 같이 묘사될 수 있습니다.

스크린샷 2018-04-21 오후 8.47.51.png

(이하 나오는 수식 표현에서 a = 앨리스, b = 밥, i=잉그리드 라고 생각하시면 됩니다.)
조금더 깊게 들어가서, 만약 가상채널의 최종 잔고 상태가 (V'a, V'b)이고, 현재 X채널과 Y채널의 상태가 각각 (X'a, X'i), (Y'i, Y'b)라면, 결과적으로 채널이 닫히면 X와 Y의 결과는 (X'a + V'a, X'i + V'b) , (Y'i + V'a, Y'i + V'b)가 됩니다. 장부에서 가상채널을 대루는 이 계약에서 채널X와 Y는 사라지게 됩니다. 예를 들어, <그림7>의 가상채널이 닫힌 결과는 아래와 같습니다.

스크린샷 2018-04-21 오후 8.47.59.png

채널을 만들거나 닫는 모든 결과는 잉그리드에게 아무런 영향을 끼칠 수 없다는 점을 인지해야 합니다. 예를 들어 잉그리드가 한 채널에서 돈을 잃는다면, 다른 채널에서 다시 돈을 얻기 때문입니다. <그림4>와 <그림9>를 참고하세요.


2.3 좀 더 긴 가상상태채널(Longer virtual state channels)


자, 이제 매우 자연스럽게, (a) 더 길고 (역자 주 : 더 많은 당사자들이 연루되어 길어진 상황을 말합니다), (b)상태를 가진 (역자 주 : 거래가 일어나서 장부의 잔고상황이 변화했음에도 최신의 업데이트된 정보를 보유하고 있는 상황을 말합니다) 가상채널을 만들 수 있는지에 대한 의문이 자연스럽게 생겨날 것입니다. 이것이 가능하다고 증명되었고, 이 두 가지 의문사항 (a), (b)는 밀접한 연관관계를 갖고 있습니다. 좀 더 자세히 이야기하자면, 누군가가 가상상태채널을 만든다면, 우리의 아이디어를 반복적으로 적용해서 몇 번을 하더라도 문제없이 적용시킬 수 있습니다. 이에 대한 자세한 내용은 기술적 백서에 명시되어 있습니다. (S. Dziembowski, S. Faust, and K. Hostakova. Foundations of State Channel Networks. Cryptology ePrint Archive, Report 2018/320. https://eprint.iacr.org/2018/320. 2018.)


2.4 채널을 더 연장한 경우(Further extensions)


위에서 설명된 채널 생성의 한 가지 단점은 다른 채널을 생성하기 위해서 특정한 당사자의 돈이 묶여야 한다는 점입니다. (역자 주 : 이점은 라이트닝 네트워크에서 동일하게 적용되는 한계점으로, 중개자는 타인의 거래를 위해 중개해주느라 자신의 코인을 묶어놓는 상황이 발생합니다.) 실제로 중개자가 코인을 사용하지 않더라도, 중개자가 코인을 묶어 놓아야 한다는 것은 중대한 문제입니다.

물론 현실적인 상황에서는 이러한 서비스를 제공하는 댓가로 중개자가 수수료를 받을 수 있을 것입니다. 그래서 이 문제에 대한 한 가지 해결방법은 돈이 묶이는 것에 대해서 채널을 활용하는 양끝의 당사자들이 비용을 지불하는 것입니다. 그 비용은 크게 비싸지 않겠죠. 왜냐하면 가상채널이 지속되는 시간에 대해서 리스크가 전혀 존재하지 않는 신용에 대한 댓가이기 때문입니다.

한 가지 다른 옵션은 큰 비용을 거래할 수 있는 채널이 아니라 적은 금액의 거래를 위한 가상채널을 자주 생성하는 방법입니다. 왜냐하면 가상채널을 만드는 것은 중개자의 개입이 필요하고, 이 해결책은 결국 거래 당사자간에 "어느 정도의 상호작용이 필요한가"의 문제와 "어느 정도의 돈을 묶을 것인가"하는 문제의 상충관계에 관한 것이기 때문입니다. (Routing payment 방법의 경우 최대한 적은 돈을 묶이도록 하고, 최대한 많은 당사자간의 거래가 가능하도록 설계한 경우로, 위의 상충관계가 극단적으로 적용된 사례라고 할 수 있죠.)

"섹션 4"에서 이 방법을 활용한 예시를 보여줍니다. 이 문제를 해결하는 세 번째 방식은 보안성을 다소 낮추더라도, 관대한 방식의 평판의 개념을 도입하여 활용하는 방법입니다. 즉, 완벽한 "악의적 행동에 대한 저항성(혹은 사기 회복성 : cheating-resilience)"보다는 다소 완화된 방식인 "악의적 행동에 대한 증거(cheatingevidence)"를 활용하는 방식입니다. 좀 더 자세히 이야기하자면, 만약 중개자가 악의적인 행동을 하려고 한다면, 당신은 당신의 돈을 반환받고 블록체인에 이 사실을 통보할 수 있습니다. 그래서 오랜 기간동안 중개역할을 해온 중개자에 의해서 사기를 당할 위험성은 상당히 낮다는 것이고, 심지어 소액거래의 경우 금액이 크지 않기 때문에 거래대금의 소액이 정산되지 않은 상태로 채널이 종료되더라도 수용할 수 있는 수준입니다.

또, 다른 한가지 중대한 문제는 거래당사자에 의한 지속적인 온라인 접근성의 문제인데요, 거래 상대방이 악의적으로 채널에서 업데이트 되지 않은 정보를 제출하지 않는지, 이를 확인하기 위해서 네트워크를 항상 감시하고 있어야 한다는 것입니다. 다시 말해서, 이 문제는 다른 결제 네트워크 (라이트닝 네트워크 등 이외의 네트워크를 말함)에도 존재하는 것이고, 이것에 대한 해결책도 존재합니다. 예를 들어, 네트워크를 모니터링하는 것을 다른 사람에게 맡기는 것 같은 방식이죠. (J. Poon and T. Dryja의 라이트닝 네트워크 백서에 언급되는 내용입니다.) 우리는 앞으로 모니터링과 이와 일련의 작업을 포함한 페룬의 업데이트를 제공할 것입니다. 또, 페룬에서는 익명성을 보장하는 것에 대해서도 해결책을 줄 수가 있습니다.




3. 프로젝트의 상황


상태채널(state channels)과 가상결제채널(virtual payment channels)이 두 개 이상 연결된 프로토콜에 대해서는 기술백서에 나와있습니다. 구현되는 프로토타입에 대한 것은 깃헙에 나와있습니다. (https://github.com/PerunEthereum/Perun)

이 백서를 작성하고 있을 시점에, 사이트에 컨트랙트 코드와 사용자의 코드 알고리즘의 일부가 공개되어 있을 것입니다. 여러 개의 채널이 연결된 가상상태채널의 페룬 기술에 대해서는 공식적으로 기술백서에 나와있습니다. 페룬에 업데이트가 있으면 네트워크 웹페이지에 포스팅 됩니다.




4. 가능한 적용방안


이 섹션에서는 간단하게 페룬의 실제로 적용가능한 방법에 대해서 설명하겠습니다.



4.1 소액 서비스 판매


두 당사자가 상호간의 신뢰가 없지만 전자상거래를 하고 싶을 때, 페룬이 사용될 수 있습니다. 예를 들어, 파일 공유와 분산된 웹하드 서비스 (BitTorrent을 썼을 때 자료를 공유하면 인센티브를 받는 그런 모델을 떠올리시면 됩니다.)같은 것에 적용될 수 있겠죠. 아니면, 인센티브 제도가 도입된 데이터 연결 네트워크를 떠올려 보세요. 이러한 시나리오에서 공정한 거래가 핵심적인 문제입니다. 서비스 제공이 먼저인가, 비용의 지불이 먼저인가 하는 그런 것말이죠.

좀 더 자세히 이야기하자면, 구매자가 판매자에게 1코인 가치의 서비스를 받기 위해 지불했다고 가정해봅시다. 하지만 구매자는 판매자를 전적으로 신뢰할 수 없기 때문에 선결제로 1코인을 다 결제하고 싶지 않죠. 마찬가지로 판매자 역시 같은 이유로 구매자에게 결제를 받지 못한 상태에서 서비스를 제공하고 싶지 않을 것입니다. 그렇기 때문에 두 당사자는 이 거래를 100개로 잘게 쪼개서, 0.01코인만큼의 소액결제로 팔고 사고 합니다. 예를 들어, 이런 소액 서비스는 무선 인터넷으로 제공된 데이터 패킷이 될 수도 있고 BitTorrent에서 작은 데이터일수도 있습니다. 당사자들은 별 문제가 없다면, 결국에 100번의 소액 서비스를 모두 진행하겠죠.

구매자와 판매자가 제 3자인 "결제허브(Payment Hub)"라는 중개자를 통해서 장부채널을 만들었다고 가정해봅시다. 결제연결(payment routing)의 방식은 각각의 소액 서비스를 할 때 본질적인 한계를 갖고 있습니다. 왜냐하면 각각의 결제는 허브의 개입이 필요하기 때문에 지연이 생기고, 또 그것으로 인해서 무거운 소통의 부담이 생기기 때문입니다. 페룬을 활용하면 구매자와 판매자간의 거래에서 허브의 개입은 확연하게 줄어듭니다.

일반적으로 당사자들은 장부 채널에 가상채널의 생성을 위해서 너무 많은 돈을 묶어두기를 원하지 않습니다. (섹션2.4에서 언급했던 내용이죠) 이 문제는 지속적으로 몇몇의 소액의 가상채널을 생성을 통해서 해결될 수 있습니다. 좀 더 자세히 이야기하자면, 그 가상채널들은 적은 금액의 예치금을 통해서 만들어 질 것이고, 위의 예시처럼 0.1코인이라고 한다면, 이 경우에는 구매자가 채널을 만들면 됩니다. 판매자는 채널에 돈을 넣을 필요가 없겠죠. 판매자는 계속 돈을 받기만 할 것이기 때문입니다. 각각의 소액 서비스의 제공이 완료되면, 구매자는 판매자에게 0.01코인만큼의 소액결제 하겠죠. 만약 대금이 결제되지 않으면 판매자는 프로토콜을 중단합니다. 그래서 판매자의 관점에서 최대한의 위험성이라고 한다면, 판매자가 한 단위의 소액 서비스에 대한 댓가를 지불받지 못하는 것입니다. (구매자 입장에서는 리스크가 없습니다.)

위의 거래가 10번 진행되면, (0.1 코인이 들어있는 채널을 0.01씩 10번 사용한 상황입니다.) 채널이 더 이상 활용될 수 없겠죠. 이러한 일련의 소액결제를 "소액거래(microtransaction)"이라고 부릅시다. 0.1코인의 소액거래는 0.01가치의 코인이 10번 소액거래가 일어난 것이고, <그림10>에 나와있습니다. 판매자와 구매자의 전체적인 거래는 10번의 소액거래로 이루어져있고, <그림11>에 나타나있습니다.



4.2 사물인터넷(Internet of Things)


또 달리 페룬이 자연스럽게 활용될 수 있는 부분은 사물인터넷(IoT)입니다. 많은 상황에서 사물인터넷 장비들의 전력 소모를 줄이기 위한 노력때문에 장비들은 블루투스나 NFC같은 짧은 범위의 기술에만 활용될 것입니다. 그래서 원격 장비와의 소통을 최대한으로 줄이겠죠. 각각의 제3자 서버를 통해 각각의 결제를 하는 것은 이러한 상황에서 답이 될 수 없습니다. 우리의 기술은 이러한 제 3자의 개입을 통한 거래를 할 필요가 없게 만들었죠.

또 다른 것은 페룬이 결제를 위한 중개자가 항상 활용할 수 있는 상황이 아닐 때, 해결책을 줄 수 있습니다. 예를 들어서 움직이는 차량에 설치된 네트워크 같은 것을 통해서 결제를 한다고 생각해보세요. 터널에 들어가서 인터넷이 끊기는 것과 비슷하게 계속해서 안정적으로 인터넷에 연결될 수 없죠. (소액거래가 반복적으로 이루어지는 것이기 때문에 거래가 중단되더라도, 판매자나 구매자 입장에서 큰 문제가 없겠죠.)

스크린샷 2018-04-21 오후 8.48.14.png



4.3 페어 게임(Fair games)


가상상태채널은 블록체인과의 직접적인 교류없이도 페어게임을 위해 활용될 수 있습니다. 가상상태채널을 활용하는 것은 또 계약의 프라이버시를 확보할 수 있는 추가적인 장점을 갖고 있습니다. (당사자들이 정직하다면, 계약의 기록은 비밀로 남을 수 있습니다)

스크린샷 2018-04-21 오후 8.48.58.png




분석을 마치며


국내최초 이더리움의 스케일링 솔루션인 Perun의 비기술백서를 전격해부해보았습니다. 라이트닝 네트워크나 라이덴에서 활용되는 개념인 Payment channel에 대해 이해하고 계신 것을 가정하여, 최대한 원본의 의미를 살리며 이해하실 수 있도록 부가적인 설명을 첨부하였습니다.

기존 결제채널(Payment channel)의 개념을 좀 더 발전시켜, 실제 발생되지 않은 상태를 계속 업데이트함으로써 중개자의 역할을 대폭 축소시켰다는 점은 라이트닝 네트워크를 비롯한 payment channel의 개념을 일약 진보시킨 획기적인 아이디어라고 생각됩니다. 이는 상태채널(State channel)에 스마트 컨트랙트를 활용함으로써 가능한 것이었습니다. 너무 멋지네요...

라이트닝 네트워크의 고질적인 한계점으로 제기되었던 "거래 당사자들의 상시 온라인"의 문제점, "중개자의 자본 펜딩에 의한 새로운 중앙화 허브의 필요성", "암호화된 시간 지연 거래에 따른 시간 지연의 문제" 등에 대해서도 간략하게나마 해결책을 제시하고 있어 매우 기쁩니다.

개인적으로는 오프체인의 거래 방식을 활용했을 때 발생하는 거래의 익명성의 문제가 기존의 제도권에서 받아들이기가 쉽지 않을 것이라는 생각을 합니다. 추후에 이 이슈에 대해서도 점점 많은 사람들의 공감을 얻어갈 것이라고 생각합니다.

현재 이더리움의 스케일링 솔루션으로 제안된 플라즈마(Plazma), 샤딩(Sharding)과 더불어 이더리움의 미래를 짊어질 새로운 프로젝트가 아닌가 생각이 들어 정말 가슴벅찹니다. 다만, 아쉬운 점은 비기술백서에서 다중 채널간의 거래원리에 대해서는 따로 언급이 없고 구체적인 설명들을 기술백서로 넘겨버렸기 때문에....그 난이도가 어느 정도일지 감이 없네요. 기술백서는 추후에 다시 분석하겠습니다.

이더리움의 솔루션으로 한 단계 업그레이드한 페룬(Perun). 앞으로의 비젼이 정말 기대됩니다.
페룬에 대해서 다양한 연구가 이루어져, 많은 의견과 생각을 공유하고 싶어집니다 :)
이상으로 페룬에 대한 소개및 분석을 마칩니다.





Reference

Coindesk news about Perun
https://www.coindesk.com/ethereums-newest-scaling-tech-calls-on-slavic-gods-for-security/

Perun network
https://www.perun.network/

Perun network : non-technical whitepaper
https://drive.google.com/file/d/1phBzFXt2QDEemh0JIOAI80nibe3JTRu5/view

Perun network : Virtual payment Hubs over Cryptographic Currencies
https://eprint.iacr.org/2017/635.pdf

Foundation of state channel networks
https://eprint.iacr.org/2018/320.pdf

Perun github
https://github.com/PerunEthereum/Perun

Ethereum plasma
https://plasma.io/

Ethereum plasma github
https://github.com/ethereum/plasma

Ethereum sharding
https://ethresear.ch/c/sharding

Lightning Network란 무엇인가? - 라이트닝 네트워크 (1부)
https://steemit.com/lightningnetwork/@cryptodreamers/lightning-network-1

Lightning Network란 무엇인가? - 라이트닝 네트워크 (2부)
https://steemit.com/lightningnetwork/@cryptodreamers/lightning-network-2

Lightning Network란 무엇인가? - 라이트닝 네트워크 (3부)
https://steemit.com/lightningnetwork/@cryptodreamers/lightning-network-3

라이트닝 네트워크는 불가능한 스케일링 솔루션이다 : Limitation of lightning network(1부)
https://steemit.com/lightningnetwork/@cryptodreamers/limitation-of-lightning-network-1

Sort:  

와우 좋은 글 감사합니다. 이런글은 풀보팅가야죠

감사합니다^^

이렇게 좋은글을 써주셔서 감사합니다^^

방문해주셔서 감사합니다~~!

Congratulations @cryptodreamers! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on any badge to view your own Board of Honor on SteemitBoard.

To support your work, I also upvoted your post!
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

좋은 글 잘 보고 갑니다^^ 빨리 이더리움 스케일링문제가 해결되었으면 좋겠네요.

감사합니다^^

유용한 이야기 잘 읽었습니다. 팔로하고 갑니다.
즐거운 주말 보내세요~^^

감사합니다.
좋은 하루 보내세요!

와~정말 잘 쓰셨어요.좋은글 잘 보고가요.^^

감사합니다~^^

일단 읽다가 일해야 해서 저장하고 잠시 멈춤이네요.
있다가 다시 읽어보겠습니다.
감사합니다.

감사합니다~! 화이팅입니다~!ㅎㅎ