지난 글에서 EOS가 기존 DApp 플랫폼 대비 가지는 장점들을 아래와 같이 정리했었습니다.
EOS는 이러한 한계를 극복하기 위한 프로젝트이고, 이더리움을 위시한 기존 DApp 플랫폼들과의 차이점은 아래와 같이 요약할 수 있습니다.
- 고성능을 요구하는 상용 서비스 (거래소, 소셜미디어 등)가 가능한 수준의 스케일링이 가능합니다.
- 사용자들이 플랫폼을 사용할 때마다 지불해야 되는 비용(가스)이 없습니다.
- 개발자들이 DApp을 실제로 개발하려 할 때 탈중앙화라는 낯선 구조 때문에 고민해야 할 것들이 많습니다. EOS는 이것들을 최대한 플랫폼 차원에서 지원하여 개발자의 노력을 최소화합니다.
그 중에 가장 중요한 성능=속도 부분을 먼저 다루어보겠습니다. 예상한 것 보다 내용이 많아서 성능 부분만 해도 여러편의 글에 걸쳐 설명을 해야할 것 같습니다. EOS의 성능을 논하기에 앞서 블록체인의 속도란 보통 어떻게 정의되는지, 각각의 요소들이 속도에 어떻게 영향을 미치는지 설명하겠습니다.
블록체인의 속도란
블록체인 속도는 쉽게 말해 "내 행동이 블록체인에 저장되기까지 얼마나 걸리는가?"를 가지고 얘기 할 수 있습니다.
블록체인을 구성하는 개념 중 몇 가지가 속도에 직접적으로 관련이 있습니다.
- TPS(Transaction Per Second, 초당 트랜잭션 수)
- 블록생성시간
- 확정시간 (컨펌)
회사 업무처리 속도에 간단히 비유를 해보면 아래와 같습니다.
- TPS는 거래원장을 받아서 처리하는 직원의 업무속도입니다. 직원이 빠릿빠릿하면 같은 시간동안 더 많은 원장을 처리할 수 있겠죠. 다 처리한 원장은 박스에 담아서 다른 직원에게 전달합니다.
- 블록생성시간은 다른 직원이 박스를 봉인하여 결재도장을 찍는데 까지 걸리는 시간입니다. 도장에 인주를 바르는데 걸리는 시간이 있어서 박스당 걸리는 시간이 일정하다고 생각해볼 수 있습니다.
- 확정시간은 결재라인을 따라 계속 도장을 찍어나가는 시간입니다. 다만 이 회사는 사실 수평적이라서 누구나 결재도장을 찍을 수 있고, 찍힌 도장이 많아질 수록 박스가 무효가 될 가능성이 점점 낮아져 0에 수렴합니다.
TPS(Transaction Per Second, 초당 트랜잭션 수)
블록체인의 속도 지표로서 가장 널리 알려진 것은 TPS로서, 초당 몇개의 트랜잭션이 처리되어 저장될 수 있는지 알려주는 지표입니다.
TPS는 블록체인 소프트웨어의 설계뿐 아니라 블록체인을 구동하고 블록을 생성/검증하는 하드웨어 성능, 네트워크 성능에 따라서 달라질 수 있습니다. 또한 트랜잭션의 종류에 따라서 달라질 수 가 있습니다.
예를들어 스마트 컨트랙트 트랜잭션은 단순 송금대비 더 많은 연산을 요구하기 때문에, 시간이 더 오래 걸릴 수 밖에 없습니다. 같은 기능을 수행하는 컨트랙트라고 하여도 실제 코드 구현 형태에 따라서 더 많은 연산을 요구하고, 더 오랜 시간이 걸릴 수도 있습니다.
TPS에는 두 가지 종류가 있을 수 있습니다.
최대 TPS
최대 TPS는 트랜잭션이 과도하게 몰렸을 때 초당 몇개나 처리되어 저장되는지를 보여 줍니다. 따라서 속도를 평가하기에 아주 좋은 지표입니다. 우리가 흔히 "어떤 체인은 1,000TPS 까지 가능하다던데"라고 말할때의 이 1,000TPS가 최대 TPS입니다.
달리기 선수의 전력질주 속도라고 생각해보셔도 되겠습니다.
현재 TPS
현 시점에서의 TPS를 의미합니다. 달리기 선수가 항상 전력질주를 할 필요는 없겠죠. 천천히 걷고있다면 바로 지금의 그 속도가 현재 TPS가 됩니다. 아래의 공식으로 간단히 구해볼 수 있습니다.
현재TPS = 최근 블록에 담긴 트랜잭션 수 / 블록생성시간
좀 더 평균적인 값을 구하려면 최근 N개 블록표본을 잡아서 구해보면 됩니다.
현재 TPS는 속도를 반영할수도 있고 안할 수도 있습니다. 비트코인이나 이더리움 같은 인기 블록체인은 이미 트랜잭션이 과도하게 발생하고 있어 현재 TPS가 최대 TPS에 가깝습니다. 반면에 설계상 비트코인이나 이더리움보다 빠른 신형 블록체인들의 현재 TPS를 구해보면 1 이하인 경우가 많습니다.
즉, 최대 TPS가 1억이어도 실제로 요청되는 트랜잭션이 저조하면 현시간 TPS는 매우 낮을 수 있습니다. 이 경우 현재 TPS는 해당 블록체인의 활성화 정도를 평가하는 지표로서 활용될 수 있습니다.
TPS라는 지표의 한계
TPS가 높다고 하여 무조건 빠른 블록체인이라고 볼수는 없습니다. TPS가 아무리 높아도 뒤에 소개할 두가지 지표에서 좋지않으면 실제 사용자에게 느리게 느껴질 가능성이 존재합니다.
예를들어 1억 TPS의 처리속도를 가진 블록체인이더라도 블록생성시간이 10분이라면, 트랜잭션이 블록체인에 저장되는데 까지 걸리는 예상시간은 평균적으로 최소 5분입니다.
다음글에서는 나머지 두 가지 개념인, 블록생성시간과 확정시간을 자세히 설명드리겠습니다. EOS의 속도로 바로 안넘어가고 이렇게 구구절절 설명하는 것은 사실 나머지 두 개념을 설명하기 위해서입니다.
이 세 가지 개념을 이해하고 나면 비트코인, 이더리움, EOS를 포함하여 다양한 블록체인들의 이론적 속도를 평가할 수 있게 되고, 실제로 우리가 블록체인들을 사용하는데 왜 이렇게 시간이 오래걸리는지 알 수 있습니다.
이보다 쉬운 설명을 본적이 없을 정도로 간결하고 이해하기 쉽게 설명해주셔서 감사합니다ㅎ EOS 뿐만 아니라 다른 코인들도 이해하기 좋은 자료네요!
감사합니다. 생각보다 기초적인 설명이 직관적으로 되어있는 글을 찾기 어려워서, 부족한 실력에도 불구하고 쉽게 설명하려고 시도해보았습니다. 좋게봐주셔서 감사합니다! ㅎㅎ
각 가상화폐의 장단점을 이해하는데 많은 도움이 될 자료 같습니다 감사합니다 ^^
감사합니다. 이어지는 글들에서는 실제로 유명한 블록체인들이 몇 TPS나 나오는지, 블록생성시간은 어떻게 다른지 등을 분석할 예정입니다!
좋은 글 잘읽고 갑니다.
감사합니다. 독자 분들이 계신 만큼 계속 잘 이어나가겠습니다.
늘 잘 읽고 있습니다. 좋은 글 감사합니다.
예상보다 머릿속 연재분량이 많아져서 조금 벅차지만 실타래 풀듯이 천천히 풀어보겠습니다. 항상 응원해주셔서 감사합니다!
감사합니다. EOS에 대해 검색하던 중 우연히 보게 되었는데 설명이 정말 잘돼있내요 ㅋ 다음글도 기대하고 보겠습니다. ~!
감사합니다! 쉬운 개념 정말 좋습니다!
참 좋으네요. 제가 심버스에 몸 담고 있으면서 개발지식이 부족한 상태에서 칼럼 등을 쓰려니 힘겨웠는데 DEV1BY0님의 글을 보고 힘을 얻습니다. 언제든 연락주시면 식사대접할게요. 카톡 tata0