[케블리] #18. 트루빗(Truebit), 이더리움 확장성(Scalability) 한계의 대안이 될 수 있을까

in kr •  6 years ago  (edited)

KblockResearch TeamLogo

Kblock 공식 리서치팀, 케블리


안녕하세요 케블리 입니다. 케블리는 '전세계의 블록체인 비즈니스를 함께 찾고 공부해 나눈다’는 KBlock의 목표에서 ‘나눈다’를 본격적으로 실천합니다.


#18. 트루빗(Truebit), 이더리움 확장성에 도전하다

작년 12월 즈음, 한국에서는 전례 없는 특이한 광경들이 연출되었습니다. 그것은 마치 수 많은 사람들이 무엇인가에 홀린 듯 만나기만 하면 너나할 것 없이 ‘코인’ 이야기를 하기 시작했습니다. 장소는 중요하지 않았습니다. 식당, 카페, 강의실 등 여기저기서 코인 이야기 하는 모습을 쉽게 목격할 수 있었습니다. 일반인들에게는 다소 생소하게 느껴졌던 블록체인의 개념은 그렇게 대중들과 가까워졌습니다. 물론 대부분은 코인 ‘시세’에 대한 이야기였지만 그로 인하여 사람들이 블록체인에 관심을 가지게 된 것은 부정할 수 없는 사실입니다. 그러나 블록체인은 세상을 바꾸고 제 2의 인터넷 시대가 도래할 것이라는 무성한 소문과는 다르게 실제로 블록체인의 효용성을 경험해봤다는 사람을 주변에서 찾기란 아직까지도 쉽지 않습니다.

“가장 큰 이유는 바로 블록체인의 확장성 문제(Scaling Issue)에 있다.”

확장성 문제란, 네트워크에 참여하는 모든 노드가 모든 거래를 기본적으로 기록하도록 설계하는 블록체인이 태생적으로 갖는 한계로 사용자가 급증함에 따라 증가하는 트랜잭션을 효율적으로 처리하지 못하는 것을 의미합니다. 수치적으로 비교해서 말하자면 전 세계적으로 결제 서비스를 제공해주는 비자(VISA)의 경우 1초당 1667여개의 트랜잭션을 처리하는데 반해 블록체인은 (이더리움을 기준으로) 1초당 겨우 20여개의 트랜잭션을 처리하고 있습니다. 결제라는 단일 서비스와의 비교라는 것을 생각하면 현저히 낮은 수준의 처리 능력을 가지고 있는 셈입니다.

“그러면 하나의 블록에 담는 트랜잭션의 양을 늘리면 되는 거 아니야?”

라고 물으실 수 있지만 그렇게 간단한 문제는 아닙니다. 만약 더 많은 트랜잭션을 담기 위해 블록의 크기를 늘리게 되면 블록을 검증하는 노드들은 용량에 대한 부담이 생기고 이는 네트워크로부터의 이탈을 야기할 수 있기 때문입니다. 또한 작업 증명을 하는 노드의 수를 제한하게 되면 네트워크 처리 속도는 빨라질 수 있지만 탈중앙화라는 블록체인의 기본적인 성질이 훼손 될 가능성이 높습니다. (이에 새로운 증명 방식을 도입하려는 움직임이 꾸준히 나타나고 있습니다만 이에 대한 논의는 해당 포스팅에서는 논외로 하겠습니다)

금일 포스팅에서는 이러한 블록체인(이더리움)의 확장성 문제를 해결하기 위해 많이 알려져 있지는 않지만 차별화된 경쟁력을 가지고 도전하고 있는 트루빗(Truebit) 프로젝트에 대해 소개해 드리고자 합니다. 그리고 소개하기에 앞서 확장성 이슈를 해결하기 위한 대표적인 솔루션으로는 어떠한 프로젝트들이 있는지 간단히 살펴보고, 트루빗은 그들과 어떤 차이가 있는지 비교하면서 알아보도록 하겠습니다.

SOLUTIONS : Sharding, Raiden Network, and Plasma


이더리움은 대표적인 스마트 계약 플랫폼입니다. 스마트 계약이란 기존의 아날로그 계약을 디지털화 한 것으로 ‘미리 정해진 임의의 규칙을 바탕으로 자동적으로 디지털 자산을 이동하는 시스템’을 말합니다. 간단히 말하자면 A와 B가 가위바위보를 하고 진 사람이 이긴 사람에게 1ETH를 준다고 했을 때 해당 규칙을 블록체인 상에 입력을 하면 조건이 만족하는 시점에서 프로그램이 자동적으로 1ETH를 진 사람에게서 이긴 사람으로 이동을 시킵니다. 이는 거래내역만을 기록하는 비트코인과 차별화되는 요소이기도 합니다. (블록체인은 합의 알고리즘에 의해 블록이 생성되기 때문에 생성된 블록에 담긴 프로그램 또한 신뢰할 수 있다고 보는 것입니다)


1_z57YrF43Ug1sbw8airBQzg.png

[그림 1. Pending Ethereum Transactions After CryptoKitties' release]

스마트계약은 블록체인을 단순히 금융에만 한정 짓지 않고 다양한 분야에서 사용할 수 있는 길을 열어주었습니다. DApp(Decentralized Application)이라고 하여 현재 우리가 모바일에서 사용하는 어플리케이션과 동일한 기능을 하는 프로그램을 이더리움과 같은 플랫폼 위에서도 만들 수가 있습니다. 그러나 아직까지 제대로 된 DApp이 없는 이유는 이더리움도 확장성 문제로부터 자유롭지 못하기 때문입니다. 지난해 11월, 이더리움 플랫폼 위에서 구현한 고양이 수집 게임 ‘크립토키티’는 출시된 지 얼마 되지 않아 20만여명의 플레이어를 모으는 등 선풍적인 인기를 끌었지만 이더리움 네트워크의 하루 트랜잭션 중 20%를 차지하며 전체 네트워크 속도가 떨어지고 거래 비용이 상승하는 문제를 발생시켰습니다.

이처럼 단일 프로그램을 구동하는 것만으로도 네트워크 과부하 및 병목현상이 발생하는 것은 이더리움에게는 매우 치명적인 약점이 아닐 수 없습니다. 플랫폼이라는 말이 무색해지는 순간입니다. 이에 이더리움 확장성 문제를 해결하기 위해 개발자들은 다양한 방법을 모색하기 시작했고, 대표적인 방법으로 온체인 솔루션의 (1) Sharding과 오프체인 솔루션의 (2) Raiden Network, 그리고 (3) Plasma가 있습니다.

온체인 및 오프체인 솔루션이란
블록체인의 확장성 문제를 해결하는 방법에는 크게 온체인(On-Chain) 솔루션과 오프체인(Off-Chain) 솔루션으로 나눌 수 있습니다. 온체인 솔루션은 말그대로 블록체인 상에서 확장성 문제를 해결하는 것으로 거래 처리 속도나 용량을 늘리는 등 처리 방식의 효율화를 의미하며, 오프체인솔루션은 블록체인 외부에서 거래를 처리하여 네트워크의 효율화를 꾀하는 것을 뜻합니다.

(1) Sharding (샤딩)


image49.png

[그림 2. DB Sharding Process]

샤딩은 데이터베이스에서 확장성을 확보하기 위해 일반적으로 사용되는 방법으로, 데이터베이스의 양이 많아지면 보다 효과적인 관리를 위해 데이터를 분할하여 활용하는 것을 의미합니다. 예를 들어 회계 장부에 대한 데이터를 관리한다고 했을 때 수입 및 지출에 대한 내역을 하나의 장부에 담는 것이 아니라 연 단위로 나누어 기록하는 것이 대표적인 예입니다. 이에 블록체인 네트워크를 분할하여 각각의 하위 네트워크가 동시에 다른 거래들을 처리함으로써 초당 트랜잭션 처리 속도를 빠르게 하는 것이 바로 샤딩입니다. 비탈릭은 한 인터뷰에서 샤딩을 은하수에 비교하기도 했습니다.


1_Utj_kmEEENsOEyHPVJ9Ndw.png

[그림 3. The Architecture of Sharding in Blockchain]

“샤딩은 쉽게 블록체인 내에 수백개의 독립된 은하수를 만든다고 생각하면 된다. 각각의 은하수는 다른 각기 다른 분야를 담당한다. 하나의 은하수가 하나의 독립된 블록체인을 의미하는 것은 아니다. 하나의 은하수는 계정을 관리하고, 또 다른 은하수는 계약을 관리하고, 또다른 은하수는 전송 처리를 담당하는 개념이다. 각각의 은하수 내에서 처리되는 내용은 해당 은하수에만 영향을 끼친다. 하지만 모든 은하수는 합의(Consensus)를 통해 서로 연결되어 있기 때문에, 하나의 은하수를 파괴하려면 모든 은하수를 같이 파괴해야 한다”

물론 실제로 샤딩을 블록체인 네트워크에 적용하기 위해서는 회계 장부보다 훨씬 더 복잡한 메커니즘이 필요하기 때문에 구체적인 모델은 아직도 개발 중에 있습니다. 다만 샤딩을 적용했을 때 분할된 네트워크 간의 연결과 밸런스를 어떻게 유지할 것인지 등 난제가 많아 상용화에는 다소 시간이 걸릴 것으로 보입니다. (여기를 누르시면 보다 자세한 샤딩 메커니즘 확인이 가능합니다)

(2) Raiden Network (라이덴 네트워크)

라이덴 네트워크는 비트코인에서 사용하는 라이트닝 네트워크(Lightning Network)와 유사한 프로젝트로, 거래가 발생할 때 최종 거래에 대한 내역만 블록체인에 기록하고 중간 과정의 거래들은 State Channel 기술을 이용하여 별도로 처리하는 구조를 말합니다. 중간 과정의 거래들은 블록체인 네트워크 상의 합의 과정을 거치지 않기 때문에 네트워크의 과부하를 최소화할 수 있으며 수수료 또한 발생하지 않습니다. (별도의 채널을 열고 닫을 때에는 수수료가 발생하지만 중간 거래 과정에서는 수수료가 발생하지 않습니다)


gggg.PNG

[그림 4. The Architecture of Raiden Network ]

A가 B에게 와이파이 사용에 대한 비용을 1초당 100원 정도 지불해야 한다고 가정해 봅시다. 이때 A가 1분 정도 와이파이를 이용했을 때 A와 B 사이에는 60번의 거래가 발생하게 됩니다. 만약 이 모든 거래 내역을 블록체인에 기록을 하게 된다면 네트워크 부담은 그 만큼 커질 수밖에 없습니다. 따라서 60번의 거래는 별도의 채널을 생성하여 관리하고 최종적으로 A가 B에게 6천원을 지불한 것에 대해서만 기록을 한다면 불필요한 자원 낭비를 줄일 수 있다는 것이 라이덴 네트워크의 의도입니다.

별도의 채널을 생성하는 방법으로는 State Channel 기술을 사용하고 있습니다. State Channel은 참여자간의 상호작용이 가능한 양방향의 통신 채널(a two-way discussion channel)을 의미합니다. 해당 채널은 허가 받은 사람만이 참여할 수 있고 비밀키 같은 역할을 하는 Hashlock을 사용하여 프라이버시 및 보안에 강합니다. 또한 별도의 합의 과정을 필요로 하지 않기 때문에 거래 처리 속도가 매우 빠르고 비용도 저렴합니다. 공식 홈페이지에 따르면 라이덴 네트워크의 확장성은 초당 1억개의 거래 처리가 가능한 것으로 알려져 있습니다.


ggggggg.PNG

[그림 5. Capital Flows in State Channel Technology ]

다만 State Channel과 관련하여 여러 채널로 인한 복잡성 및 비효율성 증가는 라이덴 네트워크가 해결해야 할 과제입니다. 예를 들어 State Channel에서 A와 B, 그리고 B와 C 사이에 채널이 생성되어 있을 때, A와 C 사이의 거래도 B(허브)를 통해 가능합니다. 그러나 이러한 채널들이 무수히 많아진다면 복잡한 링크에 따른 자금의 유동성 및 라우팅의 비효율 문제가 발생하게 됩니다. 라이덴 네트워크 개발자 또한 이를 인지하고 있으며 지속적인 업데이트를 통해 보완점을 찾아가고 있습니다. (여기를 누르시면 보다 자세한 라이덴 네트워크 메커니즘 확인이 가능합니다)

(3) Plasma (플라즈마)


image7.png

[그림 6. The Architecture of Plasma ]

플라즈마는 라이덴 네트워크와 유사해 보이지만 별도의 채널을 생성하는 것이 아니라 블록체인 네트워크 위에서 확장된 스마트계약을 가능케 하는 일련의 하위 체인(Child-Chain)을 생성하여 기록을 최소화하는 기술입니다. 즉, 나무 구조처럼 이더리움(Root-Chain) 위에 특정 영역을 담당하는 하위 체인을 생성하여 특정 영역과 관련된 거래는 하위 체인 수준에서 처리하고 그에 따른 결과를 이더리움에 주기적으로 확인하는 방식입니다.


plas2-08-10-2017.png


plas3-08-10-2017.png

[그림 7. A Fraud Proof Mechanism]

여기에서 특이한 점은 하위 체인 내에서도 채굴자들에게 암호화 화폐를 보상으로 제공하듯이 별도의 토큰 생성이 가능하다는 것입니다. 하위 체인이 특정 영역을 맡고 있는 만큼 해당 영역 내에서 발생하는 거래에 대한 증명 또한 중요하기 때문에 토큰을 통해서 경제적 인센티브를 부여합니다. 다만 어떤 블록이 유효하지 않은 경우에는 누구든지 허위 증거를 제출하여 빠르게 블록체인을 롤백 할 수 있는 장치를 마련(A Fraud Proof)하였으며, 하위 체인이 공격을 시도한다고 해도 하위 체인은 이더리움 블록체인의 검증을 반드시 통과해야 하기 때문에 이더리움 스마트계약에 의한 페널티가 가능합니다.

플라즈마는 무엇보다 DApp과의 연계 가능성이 매우 높습니다. 현재의 DApp은 이더리움 블록체인에 모든 데이터를 기록하고 있습니다. 이는 단순히 속도의 저하를 가져올 뿐만 아니라 더 많은 데이터 사용에 따른 수수료 및 블록 사이즈 증가의 문제를 야기합니다. 이에 DApp에 플라즈마를 적용할 경우 대부분의 거래는 하위 체인에서 처리하고 검증에 필요한 최소한의 데이터만을 이더리움과 동기화하여 위의 문제를 해결할 수 있습니다. 또한 플라즈마는 다른 솔루션들과의 호환이 가능하다는 장점도 있습니다. 예를 들어 이더리움 블록체인에서 특정 솔루션으로 인하여 X만큼 속도가 빨라졌다면 플라즈마에서는 X에 더해 플라즈마로 인한 효율성만큼 더 빨라지게 됩니다.

다만 플라즈마도 뫼비우스의 띠처럼 하위 체인을 이용하는 사람들은 해당 체인에 대한 블록을 모두 다운로드 받고 체인의 유효성을 증명해야 하는 또 다른 비효율성의 문제를 발생시킵니다. 이에 최근 이더리움의 창시자인 비탈릭 부테린은 이를 해결하기 위한 ‘플라즈마 캐시’ 솔루션을 공개했습니다. 이는 일정 수준의 보증금을 이더리움으로 지불하면 거래 추적을 목적으로 만들어진 플라즈마 코인을 지급 받을 수 있고, 이를 활용하면 하위 체인 내 모든 블록을 다운로드 받지 않아도 본인의 거래와 관련된 블록만 검증할 수 있게 한 것입니다.

플라즈마 프로젝트는 이더리움 재단에서 가장 관심을 가지고 있는 프로젝트로 비탈릭은 블록체인의 확장성을 증가시키는 것이 최우선이며 그 다음으로는 체인 간의 상호운영성을 바탕으로 생태계를 확장해 나가는 것이라고 말했습니다. 아직 메커니즘이 구체화되지는 않았지만 최근 텐더민트를 보유한 코스모스 개발팀이 합류하는 등 향후 어떻게 프로젝트의 구조가 설계되고 구현될지 기대됩니다. (여기를 누르시면 보다 자세한 플라즈마 메커니즘 확인이 가능합니다)

TRUEBIT : A Solution Focused on Computation


트루빗(Truebit)은 이더리움 스마트계약 확장성 솔루션으로 위의 솔루션 프로젝트들과 비교하면 많이 알려져 있지 않은 프로젝트입니다. 그래서 간혹 해외에서는 ‘under-the-radar effort’라는 표현을 쓰기도 합니다. 그러나 트루빗은 다른 솔루션들과는 차별화된 특징을 가지고 있습니다. 그것은 바로 다른 솔루션들은 이더리움 블록체인의 ‘전송(transaction)’ 절차에 집중하고 있는 것에 반해 트루빗은 전송을 포함하여 이더리움 블록체인의 ‘연산(computation)’ 증가에 초점을 맞추고 있다는 것입니다.


fuelyour2.png

[그림 8. The Truebit Proejct]

여기서 한 가지 짚고 넘어가야 할 내용이 있습니다. 이더리움 블록체인은 평균적으로 15초마다 한 개의 블록을 생성하며 각 블록에는 약 100여개의 거래 내역이 기록됩니다. 그리고 동시에 블록을 증명하기 위해 얼마나 많은 연산 능력이 필요한 지 측정이 이루어집니다. 왜냐하면 코드가 복잡하면 복잡할수록 그에 따른 수수료가 증가하기 때문입니다. 또한 일정 수수료 이상으로는 제한되어 있기 때문에 사실상 연산 처리에 대한 한계도 존재하게 됩니다. 수수료 제한을 높일 수도 있지만 그렇게 되면 보상을 받지 못하는 이전 블록의 증명에 대해서 채굴자들은 증명을 할지 말지에 대한 딜레마(Verifier’s Dilemma)에 빠지게 됩니다.

트루빗은 위의 문제에 대한 해결책으로 오프체인을 통한 연산 및 증명의 방법을 제안합니다.


1_WNhQuDM4rQmzlGMzBrhpNQ.png

[그림 9. The Process (1) - Request from a dapp user]

특정 DApp을 사용하는 유저가 복잡한 코드에 대한 실행을 원한다고 가정했을 때, 해당 코드를 이더리움 위에서 실행하지 않고 트루빗 프로토콜로 넘깁니다. 넘기는 방법은 매우 간단합니다. 공개된 API의 명령 함수에 따라 트루빗 스마트계약에 ‘실행하고 싶은 코드(Program)’와 ‘실행에 필요한 입력 값(Input)’, 그리고 ‘실행 결과에 따른 보상(Reward)’ 3가지의 값만 전달하면 됩니다.


1_udfmXK3Gdipz0jeuX_jdIA.png

[그림 10. The Process (2) - Open a marketplace for truebit miners]


1_S5XXEA_RwX3rFItXQ9plWQ.png

[그림 11. The Process (3) - Solution submitted by a truebit solver ]


1_aE_o5ybyhFcTI9F3tdNuAg.png

[그림 12. The Process (4) - Challenge from a truebit verifier]

그러면 트루빗 네트워크를 통해 해당 의뢰에 대하여 누구나 참여할 수 있는 일종의 마켓이 열리게 됩니다. 그럼 보상을 받고 싶은 누군가는 ‘Truebit WebAssembly VM’을 이용하여 문제를 풀고 그에 대한 결과물을 ‘해결사’의 자격으로 제출하게 됩니다. 이때 결과물에 대한 책임으로 예치금을 걸어야 하며 동시에 ‘도전자’ 타이머가 시작이 됩니다. 타이머가 끝날 때까지 새로운 도전자가 나타나지 않으면 해당 결과물은 정답으로 간주되고 DApp 유저에게 전달이 됩니다. 그런데 만약 새로운 도전자가 나타나 다른 결과물과 함께 예치금을 걸어 놓으면 ‘증명 게임(Verification Game)’이 시작됩니다.


1_CH9Ujy712KHypWknQk2Riw.png
1_95W6ZJRo1ggLeIeuwiKs0w.png
1_d53nANh7LQjqDiqVnYAYvA.png
1_uQsArlkYPXGUDWcHefYZlw.png

[그림 13. Verification Game]

증명 게임은 매우 간단한 형식으로 진행됩니다. 의뢰가 들어온 코드를 실행하는데 있어 총 14단계가 있다고 한다면 처음과 마지막 단계를 비교하고(결과물이 다르기 때문에 마지막 단계는 다른 값이 나올 수 밖에 없습니다) 그 다음에는 7단계를 비교하는 식으로 점점 범위를 좁혀 나갑니다. 최종적으로 해결사와 도전자 간의 불일치하는 지점을 찾게 되면 해당 지점에 대한 코드를 트루빗 스마트계약 상에서 실행하여 누구의 값이 맞는지 판단이 이루어집니다. 이때 올바른 결과물을 입력한 사람은 보상과 함께 예치금을 돌려 받으며 잘못된 결과물을 입력한 사람은 예치금을 돌려받지 못하게 됩니다.

트루빗은 최근 위의 메커니즘을 이용하여 도지코인을 이더리움 테스트넷에 전송하는 ‘도지더리움 브릿지(Dogethereum Bridge)’ 실험을 성공적으로 마쳤으며, 이는 트루빗 기술이 처음 적용된 사례였습니다. 물론 해당 실험에는 특별한 인센티브 없이 선의적 기부에 의존하였다는 점에서 아직까지 트루빗 경제 구조에 대한 유효성이 입증된 것은 아닙니다. 다만 트루빗 개발자들은 지속적으로 연산력을 사고 팔 수 있는 장터를 설계하고 있으며, 이는 이더리움 플랫폼을 통해 동영상 처리나 머신 러닝과 같은 연산 수행이 가능해질 것으로 보고 있습니다. (여기를 누르시면 보다 자세한 트루빗 메커니즘 확인이 가능합니다)

SCALING ISSUES : Impossible is Nothing


현재 블록체인이 가지고 있는 한계는 명확합니다. 그러나 한계가 명확하다는 것은 어떻게 그것을 극복해 나갈지 방향성 또한 확실히 할 수 있다는 것을 의미합니다. 이더리움 재단은 위의 여러 솔루션들 중에 하나를 ‘선택’하는 것이 아니라 솔루션 간의 ‘시너지’에 집중하고 있습니다. 비록 그들은 독립된 프로젝트이지만 이더리움에 모두 필요한 것들이기 때문입니다. 샤딩을 통해 초당 처리 속도를 극대화하고, 라이덴 네트워크를 통해 불필요한 거래를 최소화하며, 플라즈마를 통해 DApp의 효율적인 데이터 처리를 가능하게 만들 수 있습니다. 그리고 마지막으로 샤딩, 라이덴 네트워크, 플라즈마 3가지 솔루션과 더불어 많이 부각되지는 않았지만 트루빗을 통해 고차원적인 연산 기반의 서비스를 구현할 수 있을 것입니다. 앞으로 더 다양하고 흥미로운 프로젝트들이 나타나겠지만 트루빗이 블록체인 확장성 문제를 어떻게 해결해 나아갈지 함께 지켜보도록 하겠습니다.

References



image.png


Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

많은 정보 얻고 갑니다~

좋은정보 감사합니다.
팔로 꾸욱~💕

우와~이런 정보를..좋은 정보 감사합니다.

Congratulations @kblock! 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!

내용이 정말 좋네요 ^^ 잘보고 갑니다!