지난 글에서는 블록체인의 속도 정의와 그 첫번째 구성요소인 TPS를 설명드렸습니다. 이번 글에서는 나머지 두 요소인 블록생성시간과 확정시간을 설명드리겠습니다.
TPS는 거래를 처리하는 모든 종류의 시스템에서 활용될 수 있는 범용적인 지표입니다. 예를들어 증권거래소에서 1초동안 몇개의 호가나 거래가 처리되어 기록될 수 있는지를 따져보는 것은 매우 유의미합니다.
하지만 블록생성시간과 확정시간은 블록체인에만 존재하는 독특한 요소입니다. 말하자면 블록체인의 탈중앙화라는 장점을 취하기 위해 지불하는 일종의 성능 비용 또는 부작용이라고 볼 수 있습니다. 블록체인이 상용스케일의 컴퓨팅 플랫폼으로 거듭나기 위해서 반드시 극복해야하는 과제이기도 합니다.
블록생성시간
블록생성시간도 블록체인 속도에 매우 큰 영향을 미칩니다. 블록생성시간은 트랜잭션이 처리되어 저장되는데에 걸리는 최소대기시간에 영향을 미칩니다. 네트워크에서 지연시간(Latency)과 같은 작용을 한다고 생각해봐도 좋습니다.
이를 수식으로 표현하면 아래와 같습니다.
평균대기시간 = 블록생성시간 / 2
예를들어 어떤 블록체인의 최대 TPS가 10이고, 현재 TPS는 1수준으로 과부하가 걸려있지 않은 상황이라고 가정해보겠습니다. 블록생성시간은 10분으로 일정하다고 가정합니다. 이 상황에서 제가 충분한 수수료와 함께 트랜잭션을 발생시키면 이것이 블록체인에 저장되기까지 기다려야하는 예상 대기시간은 얼마나 될까요?
정답은 5분입니다.
N번째 블록생성에 임박하여 트랜잭션을 발생시켰다면 두 가지 상황이 다 일어날 수 있습니다. N번째 블록에 포함이 되어 금방 저장되거나, 포함이 안되어 N+1번째 블록으로 넘어가거나. N+1번째 블록으로 넘어가게 되는경우에 블록생성시간 10분을 그대로 기다려야 합니다. 이러한 모든 경우의 수의 평균을 내면 10분/2 = 5분이 됩니다.
트랜잭션 자체가 많지 않은 상황에서는 TPS는 거의 의미가 없다는 점에도 주목을 해보시면 좋겠습니다.
정리하면 TPS가 아무리 높아도 블록생성시간이 짧아야만 블록체인의 속도가 빠르다고 할 수 있습니다.
확정시간
블록체인의 특성 상, 내 트랜잭션이 최신 블록에 포함되었다고하여 이것이 안전하게 저장되었다고 확신할 수 없습니다.
포크(블록체인이 갈라지는 것)의 가능성은 언제나 존재하며, 내 트랜잭션이 메이저포크에 들어있다는 것을 확신하기까지 기다려야합니다. 대부분 블록체인에서 메이저 포크에 들어있다는 보증은 사실 없습니다. 그냥 내 포크가 왠만큼 길어지기를 기다리는 수밖에 없죠.
거래소에서 암호화폐 입출금을 해보면 이를 경험할 수 있습니다. 블록익스플로러(예를들어 이더스캔)에서 트랜잭션이 성공적으로 블록에 포함되었다고 나와도, 거래소는 안전을 위해 자체적으로 정한 횟수 만큼 컨펌을 기다립니다. N번 컨펌이 되었다는 것은 내 블록을 포함하여 뒤에 N-1개의 블록이 더 붙었다는 뜻입니다. 이정도 길이가 되면 내 트랜잭션이 무효화 되는 일은 없을 것이라고 가정하는 것입니다.
예시로 비트파이넥스에 이더(ETH) 입금을 하려면 25컨펌을 기다려야 합니다.
이 경우 확정시간은 아래와 같은 공식으로 정리할 수 있습니다.
확정시간 = N(신뢰도) * 블록생성시간
확정이라는 개념이 대부분의 블록체인에서 실존하지 않고, 확률적으로 판단하는 것이기 때문에 컨펌수 N도 매번 다릅니다. 어떤 거래소를 25을, 어떤 거래소는 50을 확정 기준으로 삼을 수 있습니다. 분명한 것은 N이 커질 수록 신뢰도(무효가 되지 않을 확률)도 점점 100%에 수렴하게됩니다.
비트코인의 경우 6컨펌이 되면 지갑에서 잔액을 업데이트 해주고, 송금을 할 수 있게 허용한다고 합니다.
실제로 댑들이 나오게되는 시점을 미리 들여다보면 더 흥미롭습니다.
슈퍼마켓에서 천원짜리 아이스크림을 하나 샀다고 하면, 슈퍼마켓 주인은 2컨펌정도만 기다려도 될 것입니다. 무효화의 가능성을 0.001%로 만드려고 손님을 가게에서 기다리게 할 수는 없기 때문입니다.
반면에 자동차나 부동산을 거래한다고 생각을 해보시면 무효화 가능성을 충분히 작게 만들기 위해서 몇 시간, 아니 하루라도 기다릴 수 있을 것입니다.
포크로 인해 거래가 무효화되는 것은 매우 심각한 문제이기 때문에 단순히 속도이슈로 볼것은 아닙니다. 이더리움은 캐스퍼라는 알고리즘을 통해 일정수의 블록마다 최종확정성(Finality)을 부여하는 것이 계획입니다. 최종확정성이 부여되면 공식은 아래와 같이 바뀝니다.
최종확정시간(100%) = N(상수) * 블록생성시간
즉, 일정시간만 기다리면 100%확정이 된다는 뜻입니다. 최종확정성이 없는 경우에는 아무리 오래 기다려도 산술적으로 100%에 도달할 수 없는 것을 생각하면 이는 정말 엄청난 차이입니다.
정리
TPS가 아무리 빨라도 '블록생성시간/2' 만큼의 평균지연시간이 발생하기 때문에 고성능 블록체인이라고 부르려면 블록생성시간이 짧아야 합니다.
트랜잭션이 한번 블록체인에 저장이 되어도, 충분한 수의 컨펌을 받아야만 이것이 무효가 되지 않는다고 확신할 수 있습니다. 이 컨펌횟수는 거래의 액수나 성격에 따라 다르게 부여하게 될 것으로 예상됩니다. 최종확정성을 부여하게 되면 일정 수의 컨펌으로 100%의 신뢰도를 보장합니다.
최종확정성 부분은 단순히 속도 이상의 의미를 가지기 때문에 나중에 기회가 된다면 좀 더 자세히 설명하도록 하겠습니다.
다음 글에서는 그래서 EOS가 TPS, 블록생성시간, 확정시간 측면에서 어떻게 설계되었는지 살펴보고, 다른 블록체인 대비 얼마나 빠른것인지 비교해보도록 하겠습니다.
"그래서 EOS가 얼마나 빠른지 알고싶다고!" 라고 마음속으로 외치고 계신분들이 많을 것 같습니다.
저도 "설계 상 이오스가 이더리움보다 10만배 빨라요"라고 쉽게 말 던지고 넘어가고 싶은 유혹이 크지만, 차근차근 더 정확하게 이해할 수 있게 하는것이 '초보 EOS 시리즈' 취지에 더 맞다는 생각에 공을 더 들이고 있습니다.
이번주 안에 블록체인 속도와 특히 EOS 의 성능에 대해 마침표를 찍어보겠습니다. 재밌게 읽어주시고, 응원해주셔서 정말 큰 힘이 됩니다!
Cheer Up!
거래소의 컨펌 숫자가 의미가 있는거였군요^^ 이렇게 또하나 배우고갑니다ㅎ
재밌습니다! 최종확정성이란건 어떻게 부여되는건지도 궁금하고..다음편 기대하고 있을게요~
좀 지루할수도 있는 내용이라 걱정했는데 재밌으시다니 다행입니다! EOS가 최종확정성을 잘 설계해둔 만큼 꼭 설명하고 넘어가겠습니다. ㅎㅎ
EOS에 관심이 많고 투자를 시작했는데 너무 좋은 내용 감사합니다 앞으로 연재도 기대할께요^^
감사합니다. 공부하시고 투자하시는데 조금이라도 도움이 되는 한 계속 이어나가겠습니다!
전 잘모르지만
글잘읽었읍니다
잘 읽고 갑니다^^
Congratulations @dev1by0! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
Award for the number of upvotes
Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here
If you no longer want to receive notifications, reply to this comment with the word
STOP
이오스에 대해서 차근차근 알게되는거 같습니다^^
블록생성시간이 빠르면 블록체인 장부의 용량도 빠르게 늘어나는 건가요?
EOS의 평균 블록당 용량은 얼마 정도로 생각하시나요?
EOS의 블록생성시간이 1초로 알고있는데 1초당 하나의 블록이 생성된다면
최대 블록의 크기는 얼마정도 입니까?
블록체인 장부의 크기는 샤딩이라는 개념으로 줄일수있다는데
EOS는 샤딩 이 적용이되는건가요?
초면에 질문이 길었습니다.. 답변해주실지는 모르겠지만 의문점 남겨봅니다.
블록생성시간과 블록체인 용량 증가 속도는 단순하게 생각해봤을때 무관할 것 같습니다.
그보다는 현재 TPS가 블록체인 용량 증가와 얼추 정비례하지 않을까 합니다.
최대 블록의 크기는 미리 예상하기 어렵지만, 다른 블록체인과의 비교를 통해서 어느정도 추산이 가능할 것 같습니다. 예를들어 스팀의 현재 TPS와, 이오스의 최대 TPS를 비교하여 비례식으로 계산해보면 될 것 같아요.
이오스는 이더리움의 샤딩개념 대신 인터체인 솔루션을 통해 추가적인 확장성을 달성하려 한다고 알고 있습니다.
컨펌은 전혀 몰랐던 개념인데 생각해보면 일리가 있네요, 다시 읽기 위해 리스팀, 보팅하고 갑니다!