스케일링 해결책 - 2부 On chain Solution - Ethereum
이번 스케일링 해결책 2부에서 다룰 암호화폐는 이더리움입니다. 이전에 암호화폐의 선호도에 대해서 이야기하면서 비트코인 대비 상대적으로 온체인상에서의 스케일링 해소가 쉽다는 것을 다루었습니다. 이는 SW베이스에서 GasLimit을 높여 한개의 블록이 포함할 수 있는 전송의 숫자(또는 계약의 숫자)를 높이는 방식입니다. 쉬운 방법으로 보입니다만 이에 따른 문제점도 생겨날 수 밖에 없기에 무한정 Gaslimit을 올리기는 어려운 구조입니다. 과연 어떠한 문제점이 네트워크 상에 발생을 할지 이야기 해볼 계획입니다.
이외에도 Casper의 도입으로인한 POS전환, 그리고 이후에 기대되는 샤딩에 대해서 간단하게 이야기해볼 계획입니다. 어려운 개념이지만 쉽게 풀어서 이야기하도록 하겠습니다. 편안하게 봐주시면 좋겠습니다.
이더리움에는 블록의 사이즈 증가에 대한 어려움은 상대적으로 낮지만. 문제점은 동일
출처 : 이더스캔
참고 : 이더리움의 전송한도는 1월 4일 도달.
이더리움의 스케일링에 대한 방법은 2017년 상반기부터 본격적으로 논의되기 시작했습니다. Status ICO가 진행된 2017년이 그 시발점이 되었습니다. 단일 ICO로 인해 이더리움의 네트워크가 마비되었고, 마비가 되어버린 네트워크는 가치의 전송이라는 제기능을 하지 못하였기 때문입니다. 이미 이전부터 이더리움의 경우에는 스케일링 솔루션에 대한 온체인의 해결책(현재의 POW를 POS로 바꾸는)은 계획되어있었으나 시장에서 해당 부분에 대한 니즈가 생겨난 시점은 Status ICO시점이라고 봐도 무방할 것입니다.
출처 : 이더스캔
참고 : 블록에 포함되는 Gaslimit은 지속적으로 증가. 현재 800만 수준.
그렇다면 현재의 블록체인의 구조를 유지한 상황에서 이더리움 네트워크의 일간 전송한도를 높이기 위한 방법은 무엇이 있을까요? 이더리움 네트워크도 비트코인과 마찬가지로 일간전송한도를 결정짓는 변수는 블록의 크기와, 블록의 생성속도 입니다. 이더리움 네트워크에서 블록의 크기라 함은 블록이 포함할 수 있는 Gas의 한도를 의미합니다. 한도가 높아지면 한 개의 블록에 더 많은 거래를 포함 할 수가 있게 됩니다.
예를 들어 40000의 가스로 전송을 신청한 거래가 평균적이라고 가정해 보겠습니다. (이더리움 전송시에는 21000가스, 토큰을 전송할 때 일반적으로 5만에서 10만정도의 가스를 사용, ICO참여시에는 스마트컨트렉트 사용으로 대략 20만 가스 소비) 현재 이더리움의 블록 한도는 대략 800만 수준입니다. 800만을 40000로 나누어 줄 경우 대략 1개의 블록에 200개의 전송을 묶어서 담을 수 있습니다. 블록당 포함할 수 있는 전송의 숫자는 구하였으니, 블록의 생성속도를 확이하기 위해 ethstats에서 이더리움의 블록생성속도를 확인해보면 대략 15.7초에 하나씩 만들어 지고 있네요. 계산하기 편하기 하기 위해서 15초라고 가정하겠습니다.
200(블록당 거래수) * 4(분당 블록 생성수) * 60* 24 = 1,152,000 이 산출 되게 됩니다. 이전에 UMEA 대학 논문에서 이야기한 이더리움의 일간 전송한도인 1,296,000건과 크게 차이 없는 수준입니다. 여기까지 본다면 아주 간단한 궁금증이 생기게 됩니다. 그 저 블록의 Gaslimit을 한없이 높이면 이더리움은 아무런 고생도 안하고 스케일링 이슈가 해소되는 것이 아닌가하는 것 말입니다. 정말 아무런 문제가 없을 수 있을까요
출처 : 이더스캔
참고 : Gaslimit의 증가는 블록사이즈의 증가를 야기
가스리밋의 증가는 블록의 사이즈 증가를 야기 시킵니다. 앞서 비트코인의 사례를 보고 알 수 있듯이, 블록 사이즈의 증가는 전송의 지연을 만들어 냅니다. 전송의 지연은 채굴의 불평등을 야기시킬 수 있고, 장기적으로는 네트워크의 안정성(51%룰)에 부정적인 영향을 미칠 수 있음을 우리는 알고 있습니다.
출처 : 이더스캔
참고 : 블록사이즈의 증가는 Uncle Block(=비트코인의 고아블록)의 증가로 연결
출처 : 이더블로그
참고 : 이더리움도 블록사이즈의 증가(Gaslimit의 증가)는 Uncle의 비율을 높임
비트코인과 마찬가지로 블록 사이즈의 증가는 Uncle Block(이하 삼촌블록)의 증가로 연결됩니다. 비트코인의 고아블록이나 이더리움의 삼촌블록이나 둘다 체인의 분사로 인해서 발생하는 문제입니다. 전세계에서는 수많은 채굴자들이 암호화폐의 블록을 생성하고 있습니다. 동시에 생성되는 경우도 있겠지요. 다만 비트코인은 6번째 블록이 만들어지게 되면 분사된 블록체인의 의미와 가치는 없어집니다. 비트코인 네트워크의 경우에는 블록사이즈의 증가 -> 전송지연 -> 고아블록의 증가가 채굴자의 포지션에 대한 극단적인 영향을 미치는 케이스입니다.
반면 이더리움은 삼촌블록에 대한 보상을 정상 블록대비 75% 가량 제공합니다. 블록체인이 분사가 되더라도, 자신이 만들 블록이 살아남는 체인이 아닐지라도 채굴자 입장에서 부정적인 영향을 제한적입니다. 물론 25%의 보상에 대한 의미가 적지 않을 수 있습니다. 하지만 고아블록을 만들었다고 해서 해당 블록을 포기하는 것보다는 만드는게 낫다는 것이죠. 블록 사이즈의 증가 -> 전송지연 -> 삼촌블록 증가 -> 75%의 보상이라는 흐름을 거치게 됩니다. 이 75%의 보상이 채굴자의 집중화를 막아주는 역활을 하게 됩니다. 비트코인과는 다르게 말입니다.
출처 : Decker and Wattenhofer (2013)
참고 : 비트코인의 경우에는 블록사이즈 1kb 증가시에 0.08초의 전송지연이 발생, 1MB는 80초의 전송지연
출처 : Bitcoin Unlimited study
참고 : 현재는 전송관련 효율화로 1MB기준 8초정도의 지연이 발생
출처 : Bitcoin Unlimited study
참고 : 블록사이즈의 증가는 전송지연을 기하급수 적으로 증가시킴.
비트코인 네트워크의 블록 사이즈 변화에 따른 전송지연 효과에 대한 재미있는 논문이 2개가 있어서 가져와봤습니다. 앞에서 비트코인의 스케일링 솔루션에 대해서 언급한 포스팅에서 비트코인 코어팀은 과연 정의로운가에 대한 이야기가 나왔습니다. 앞서 이야기한 것과 같이 저도 역시 비트코인코어팀이 정의롭다고는 생각지 않습니다.
다만 위의 논문을 참고하면 비트코인 네트워크에서 현재 1mb의 블록을 2mb로 확대할 경우 대략 8초가량의 블록 전송지연에 대한 효과가 발생한다고 이야기하고 있습니다. 이 수치에 중국의 만리방화벽이슈까지 더해진다면 해당 차이는 더 높아질 수 있겠지요. 이후에 원장(Ledger)을 받아간 노드에서 추가적으로 원장을 분산하는 시점에서는 해당 문제는 중첩적으로 커질 수 있을 것입니다. 자신이 만든 블록이 보상이 전혀 없는 고아블록이 될 가능성이 중국내에서 채굴하는 것 대비, 중국외에서 기하급수적으로 높아진다는 것입니다. 그렇다면 비트코인에서 빅블록 인해 발생할 것으로 예상 되었던 채굴의 위치적인 불평등(연산력이 중국으로 쏠림에 따른 이슈)의 문제점이 이더리움에는 없을까요?
출처 : 이더스캔
당연히 이더리움도 현재 POW방식이기에 채굴풀에 있어서 규모의 경제가 존재합니다. 이러한 규모의 경제는 결국 쏠림의 가속화를 만들 수 밖에 없습니다. 높은 해시레이트를 보유한 채굴풀의 경우 블록을 만들어낼 확률이 그 만큼 높기에 보상에 대한 빈도의 문제가 존재하기 때문입니다. 위의 그림을 참고할 경우 이더리움의 채굴풀의 쏠림이 비트코인 대비 심하면 심했지 덜하지는 않습니다. 다만 중국의 비중이 50%가 되지 않습니다. 앞서 비트코인에서 이야기한바와 같이 만리방화벽의 역활은 중국외부에서 중국으로 들어오는 데이터도 지연시킵니다. 중국이라는 나라에 대한 채굴자의 선호도가 이더리움 네트워크에는 아직까지는 보이지 않는 다는 것입니다.
혹여나 중국이 50% 이상을 올라간다고 가정을 해보겠습니다. 삼촌블록에 대한 75%의 보상은 여기서 의미를 가지게 됩니다. 중국이 연산력의 50% 이상을 가져가게 된다하더라도 채굴자들이 극단적으로 중국에 위치한 채굴풀에 쏠릴만한 이유는 비트코인 대비 제한적입니다. 삼촌블록을 만들어 내더라도 이익에 있어서 비트코인의 0% or 100%의 이슈와는 다르게 25%의 차이만이 존재하기 때문입니다. 물론 같은 투자대비 이익의 차이가 존재한다면 투자는 당연히 쏠릴 것이나, 해당 영향은 비트코인 대비 제한적일 것입니다. 삼촌블록에 대한 75% 보상은 이렇듯 채굴자에 대한 적절한 분산을 가능케하는 역활을 하게됩니다.
다만 개발자(비탈릭)은 블록사이즈 증가에 대해서는 중립적, 향후 블록 Gaslimit은 언제든 줄일 수 있다
출처 : 이더리움 reddit
참고 : 파운데이션에서 권장하는 블록 한도 증가
삼촌블록의 증가가 네트워크의 안정성적인 측면에서 좋아보이지는 않습니다. 하지만 이더리움 파운데이션(이더리움 개발자)는 이를 인지하지 못하고 있기에 위의 Reddit에서 이야기하는 것과 같이 채굴자들에게 블록 Gaslimit을 올리길 추천하는 걸까요?
출처 : 이더리움 reddit
참고 : 블록의 Gaslimit은 가변성이 존재
위의 이더리움 Reddit에서 비탈릭이 쓴 Gaslimit의 변동 규칙을 가져와봤습니다. 이더리움의 블록 Gaslimit은 블록마다 0.0976%(1/1024)씩 지속적으로 변화할 수 있다는 것을 확인 할 수 있습니다. 결국 비트코인의 블록사이즈와 같이 바뀔수 없는(1mb로 돌아갈 수 없는) 하드포크가 아닙니다. 꾸준히 변화할 수 있다는 점에서 이더리움 재단이나, 이더리움의 개발자 비탈릭은 크게 걱정하는 모습이 아닙니다.
추가적으로 블록에 포함되는 Gaslimit은 전적으로 채굴자들이 정하는 부분입니다. 채굴자들은 당연하겠지만 블록의 생성속도에 따른 블록당 보상과(현재 5이더), 블록의 Gaslimit 증가로 인한 블록생성속도 지연(이더리움의 블록생성속도는 15초 수준이기에, 딜레이의 영향을 높아질 수 밖에 없음) 의 상충되는 선택지에서 최적의 조합을 고르게 됩니다. 결국 채굴자도 욕심을 부리기 위해, 또는 지배적인 채굴풀의 지위를 가져가기위해 현재의 이익에 부정적인 영향을 미치는 역선택을 할 가능성은 제한적입니다. 이외에도 다른 채굴자가 다들 800만 가스를 선호하는 상황에서 혼자 2000만 가스로 블록의 사이즈를 키우게 될 경우의 문제점도 존재합니다. 블록의 크기 문제로 인한 전송지연으로 삼촌블록이 될 가능성이 높다는 점입니다.
무한히 늘어나기 어려운 블록체인, 이미 Chainsize는 비트코인을 넘어선지 오래
출처 : http://bc.daniel.net.nz/
참고 : 2017년 4월경부터 이더리움의 네트워크 사이즈는 비트코인을 추월, 12월의 Gaslimit증가는 현상을 가속화
비트코인은 2009년, 이더리움은 2015년 7월에 등장하였습니다. 다만 2017년 4월경에 이더리움의 Chainsize는 비트코인을 넘어섰습니다. 2017년 연간으로 진행된 Gaslimit의 증가는 이러한 추세를 가속시켰고, 현재 이더리움의 블록 사이즈는 추가적으로 늘어나기 어려운 수준입니다. 결국 2017년의 일간 전송한도를 높이기 위해 다른 스케일링 솔루션대비 상대적으로 쉬운 선택지였던 블록당 Gaslimit의 증가를 통한 통한 일간전송한도의 증가는 금년도에는 기대하기 어렵습니다. 이미 블록 Gaslimit은 2017년 초 400만에서 현재 800만까지 상승했기 때문입니다.
Chainsize의 증가에 대한 부담감 가중, 사이즈 증가 없이 스케일링은 가능할 것인가
출처 : 이더블로그
참고 : 샤딩은 Gaslimit의 증가(Uncle의 증가)를 제외하고는 네트워크 전송량을 늘리기 위한 유일한 방법
이에 대한 해결책으로 이더리움의 개발자 비탈릭은 샤딩에 대한 이야기를 하고 있습니다. 실제로 더 많은 전송을 커버하기 위한 유일한 방법이라고 비탈릭이 직접 작성한 이더블로그에서 이야기하고 있습니다. 그렇다면 여기서 이야기하는 샤딩이라는 기술은 무엇일까요?
샤딩의 등장, 일단은 쿼트러틱 부터. 하지만 수년내로 볼 수 있을까?
출처 : Medium
샤딩은 블록의 생성을 병렬로 하는 과정이라고 이해하면 편합니다. 지금까지 블록의 생성은 단일 블록을 만들어내기 위한 전송의 병목현상을 발생 시켰습니다. 만약 경쟁을 통해 단일 블록을 만들지 않고, 한번에 수많은 블록을 만들게 된다면 어떻게 될까요? 이것이 바로 샤딩의 목표입니다.
위의 Medium의 그림을 참고하면 이해하기가 쉽습니다. 샤딩은 0x9, 0x8, 0x7로 시작하는 각각의 모든 지갑 주소를 개별 샤드 그룹으로 구분을 합니다. 각각 서로 다른 샤드에 배치가 되는 기준이라고 볼 수 있습니다. 각 샤드는 자체의 거래(0x9끼리의 거래는) 0x9의 샤드에만 저장하게 됩니다. 결국 특정 자산과 관련된 전송은 해당 자산이 포함된샤드에서만 처리를하는 다중 자산 블록체인의 구조를 띄게 됩니다. 블록의 데이터(Chainsize)까지도 분산되는 것이죠.
데이터 저장에 대한 부담까지도 덜 수가 있을 것입니다. 위의 이더리움과 비트코인의 Chainsize 차트에서 본다면, 샤딩 이후의 이더리움의 Chainsize는 1/(샤드수)로 그 규모가 감소 할 수 있습니다. 아무리 블록을 빨리 만들어 낸다 하더라도 샤드의 숫자만 들어난다면 문제는 되지 않는 다는 것이죠. 다만 샤딩이라는 기술은 아직까지 시범적인 기술입니다. 이제 페이즈 1을 통과한 갓난애기와 같이 다양한 약점이 존재합니다. 과연 어떤 것들 일까요?
첫번째 문제는 샤드간 거래에서 중복 작업입니다. 0x1에서 0x2로 전송을 한다고 가정을 해보겠습니다. 샤드간 거래는 어떻게 이루어지게 될까요? 샤딩은 다중 자산 블록체인의 구조를 띄고, 원장의 기입을 서로 달리 합니다. 결국 이를 연결시기이 위한 매개체가 필요하다는 거죠.
1. 0x1(위의 그림에서 샤드M)의 이더리움을 1개 제거, "영수증"이라는 매개를 발행하여 0x2(샤드N)의 샤드로 전송
2. 1번의 거래가 블록체인 기입되는 것을 기다림
3. 0x2에서 해당 거래를 받고, "영수증"이 사용되지 않은(이더리움 1개를 포함했는지)를 확인
4. ox2의 샤드에서 "영수증"을 사용됬다고 기록하고, 0x2의 이더리움은 1개 증가
기존에는 없던 영수증이라는 개념이 생겨버렸습니다. 그리고 기존에는 1번의 전송으로 마무리되던 작업이 2번의 전송으로 확대되었습니다. 샤드간 이동에서 비용이 중복되어 지출되는 문제점이 발생하게 된것입니다. 향후 세렌기티의 업데이트 이후에는 직접적인 이동을 적용하고자 하고 있지만, 현재는 위와 같은 "계약"을 통해서 가능할 것으로 보이고 있습니다.
두번째는 단일 샤드에 대한 공격입니다. 단일 샤드에 대한 공격은 쉽게 이야기하면 전송의 쏠림과 연산력의 쏠림입니다. 어떠한 지갑주소의 전송이 많을지는 알 수 없습니다. 또한 연산력이 어느 샤드에 몰릴지도 알 수가 없다는 것이죠. 전송이 쏠리게 되는데 반해서 연산력이 낮다면 전송은 늦어질 수 있게 된다는 것입니다.
다만 단일 샤드의 거래가 쏠리거나 해시레이트가 쏠리는 것은 사실상 큰문제는 아닙니다. 문제는 단일 샤드에 존재하는 채굴자의 절대 숫자의 감소로 인해 발생하는51%의 문제점의 실질적인 부각입니다. 네트워크의 악의적인 사람의 비중이 전체로 본다면 낮아도, 단일 샤드에는 높을 수 있다는 것이죠. 해당되는 문제에 대해서는 교정자 할당을 도입해서 해결하고자 하지만 여전히 개발이 진행되고 있는 부분입니다. (교정자는 블록을 승인하는 사람으로 샤딩 FAQ에서는 이야기하고 있습니다.)
이더리움의 온체인도 쉽지는 않아보이는데...
여기까지 보면 알 수 있듯이 이더리움의 온체인 솔루션도 녹록치 않습니다. 다만 이러한 스케일링 솔루션에 이미 이더리움의 로드맵에 반영이 되어있다는 점, 최근에 샤딩의 페이즈 1이 진행되었다는 점에서 비트코인 대비 상대적인 기대감은 높은 상황입니다.
더구나 이더리움은 온체인 솔루션과 오프체인에만 집중하진 않습니다. 수많은 DAPP이 올라오는 플랫폼의 특성상, 플랫폼의 기능을 온전히 하기 위해 플라즈마라는 개별 DAPP에 적용할 수 있는 사이드체인을 준비중에 있습니다. 샤딩과 플라즈마, 그리고 라이덴까지 도입이 된다면 다중 분할 블록체인(샤딩) 각각의 하단에 존재하는 차일드체인(플라즈마)과 개별 블록체인의 마이크로 트랜잭션과 빠른 데이터의 기입을 가능케하는 오프체인이 조화가 이루어 질 수 있을 것입니다. 방향은 정해져 있는 상황입니다. 결국 시간과 개발의 현실화 가능에 대한 문제일 뿐입니다.
비탈릭은 2018년이 이더리움의 행동하는 한 해가 될 것이라고 이야기했습니다.다만 퍼블릭 블록체인의 기술적인 변화는 하루가 다르게 크게 변화해 나가는 상황입니다. 2018년의 시간은 이더리움의 편이 아닐 수도 있습니다. EOS부터 이더리움의 문제점을 해결한 수 많은 플랫폼 코인의 메인넷이 런칭되어 있습니다. 이더리움 베이스의 DAPP개발자들, 그리고 사용자들의 로열티가 약간씩은 희석이 될 여지가 있어 보입니다.
어느 때보다 빠른 개발에 대한 속도와 검증이 필요한 한해라고 보여집니다. 다음화에서는 이더리움의 사이드체인에 대한 이야기를 나누어볼 계획입니다. 이미 MVP가 나오고, 가장먼저 오미세고에 도입이 될 것으로 기대되는 상황으로 상대적으로 인터체인보다는 개발의 속도가 빠를 것으로 기대하고 있습니다. 개발의 속도가 빨라진다면 이더리움은 여전히 의미있는 플랫폼으로서 퍼블릭 블록체인에 자리잡을 것으로 기대됩니다.
오늘의 이야기는 여기서 마무리하도록 하겠습니다. 도움되셨다면 리스팀 부탁드립니다. 감사합니다.
P.S : 보팅봇을 사용하였습니다.
기술을 쉽게 설명해주셔서 이해하는데 도움이 되네요
감사합니다.
이해하기 힘들다는 이야기가 많아서 가능한 쉽게 적기 위해 노력해봤습니다 ^^
You got a 11.63% upvote from @dailyupvotes courtesy of @wansoon16!
이더리움의 스케일링 이슈가 속히 해결되었으면 좋겠네요.
오랜 시간이 걸릴지언정 그래도 조금은 완벽하게 다가와줬으면 좋겠습니다. 이더리움의 가격보다는 블록체인의 기술의 발전에 기여할 수 있으니까요
안녕하세요 wansoon16님! 글 정말 잘보고있습니다. 앞으로도 좋은 글 계속 부탁드립니다^^
재미있게 봐주시니 감사합니다 ^^, 기초에 대한 공부용 자료이니 계속 재미있게 봐주세요~
좋은 분석글입니다 이더리움을 제법 보유중인데요~이더리움의 미래가 어떨지 기대반 걱정반입니다~
금년도가 격전지가 될 듯합니다. 에오스의 메인넷부터... 경쟁 플랫폼의 런칭이 잇따라 예정되어 있거든요 ^^
좋은 글 잘 읽고 리스팀 해갑니다 :)
감사합니다 ^^
좋은 글 감사합니다
재미있게 봐주셔서 감사합니다 ^^
디테일한 내용 감사드립니다. 설계 구조를 바꾸지 않고 구조변경이 정말 가능한 것인지... 꼭 성공하길 바랍니다.
블록사이즈의 변화는 가능하나... POS나 샤딩은 구조의 변경이 필수적입니다. 그만큼 도전이죠 ^^ 올해가 중요한 한해가 될듯합니다.
3월의 시작을 아름답게 보내세요^^
좋은 분석 글 잘 봤습니다, 결국에는 이더리움을 긍정적으로 바라 봐도 괜찮겠군요. 보팅 하고 갑니다.
비트코인과 항상 비교하게 되는데 이더리움은 사용량이 높은 상황에서의 변화라 더욱 기대가 됩니다.