dev1 avatar

블록체인의 속도란 무엇인가요? - 블록생성시간, 확정시간

dev1by0

Published: 21 Nov 2017 › Updated: 21 Nov 2017블록체인의 속도란 무엇인가요? - 블록생성시간, 확정시간

블록체인의 속도란 무엇인가요? - 블록생성시간, 확정시간

171119_블록체인속도.jpg

지난 글에서는 블록체인의 속도 정의와 그 첫번째 구성요소인 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개의 블록이 더 붙었다는 뜻입니다. 이정도 길이가 되면 내 트랜잭션이 무효화 되는 일은 없을 것이라고 가정하는 것입니다.

confirm.jpg
예시로 비트파이넥스에 이더(ETH) 입금을 하려면 25컨펌을 기다려야 합니다.

이 경우 확정시간은 아래와 같은 공식으로 정리할 수 있습니다.

확정시간 = N(신뢰도) * 블록생성시간

확정이라는 개념이 대부분의 블록체인에서 실존하지 않고, 확률적으로 판단하는 것이기 때문에 컨펌수 N도 매번 다릅니다. 어떤 거래소를 25을, 어떤 거래소는 50을 확정 기준으로 삼을 수 있습니다. 분명한 것은 N이 커질 수록 신뢰도(무효가 되지 않을 확률)도 점점 100%에 수렴하게됩니다.

비트코인의 경우 6컨펌이 되면 지갑에서 잔액을 업데이트 해주고, 송금을 할 수 있게 허용한다고 합니다.

실제로 댑들이 나오게되는 시점을 미리 들여다보면 더 흥미롭습니다.

슈퍼마켓에서 천원짜리 아이스크림을 하나 샀다고 하면, 슈퍼마켓 주인은 2컨펌정도만 기다려도 될 것입니다. 무효화의 가능성을 0.001%로 만드려고 손님을 가게에서 기다리게 할 수는 없기 때문입니다.

반면에 자동차나 부동산을 거래한다고 생각을 해보시면 무효화 가능성을 충분히 작게 만들기 위해서 몇 시간, 아니 하루라도 기다릴 수 있을 것입니다.

포크로 인해 거래가 무효화되는 것은 매우 심각한 문제이기 때문에 단순히 속도이슈로 볼것은 아닙니다. 이더리움은 캐스퍼라는 알고리즘을 통해 일정수의 블록마다 최종확정성(Finality)을 부여하는 것이 계획입니다. 최종확정성이 부여되면 공식은 아래와 같이 바뀝니다.

최종확정시간(100%) = N(상수) * 블록생성시간

즉, 일정시간만 기다리면 100%확정이 된다는 뜻입니다. 최종확정성이 없는 경우에는 아무리 오래 기다려도 산술적으로 100%에 도달할 수 없는 것을 생각하면 이는 정말 엄청난 차이입니다.

정리

  • TPS가 아무리 빨라도 '블록생성시간/2' 만큼의 평균지연시간이 발생하기 때문에 고성능 블록체인이라고 부르려면 블록생성시간이 짧아야 합니다.

  • 트랜잭션이 한번 블록체인에 저장이 되어도, 충분한 수의 컨펌을 받아야만 이것이 무효가 되지 않는다고 확신할 수 있습니다. 이 컨펌횟수는 거래의 액수나 성격에 따라 다르게 부여하게 될 것으로 예상됩니다. 최종확정성을 부여하게 되면 일정 수의 컨펌으로 100%의 신뢰도를 보장합니다.

최종확정성 부분은 단순히 속도 이상의 의미를 가지기 때문에 나중에 기회가 된다면 좀 더 자세히 설명하도록 하겠습니다.

다음 글에서는 그래서 EOS가 TPS, 블록생성시간, 확정시간 측면에서 어떻게 설계되었는지 살펴보고, 다른 블록체인 대비 얼마나 빠른것인지 비교해보도록 하겠습니다.

Leave 블록체인의 속도란 무엇인가요? - 블록생성시간, 확정시간 to:

Written by

Blockchain Researcher

Read more #coinkorea posts


Best Posts From dev1

We have not curated any of dev1by0's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From dev1