블록체인의 속도란 무엇인가요? - 블록생성시간, 확정시간
지난 글에서는 블록체인의 속도 정의와 그 첫번째 구성요소인 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, 블록생성시간, 확정시간 측면에서 어떻게 설계되었는지 살펴보고, 다른 블록체인 대비 얼마나 빠른것인지 비교해보도록 하겠습니다.
Leave 블록체인의 속도란 무엇인가요? - 블록생성시간, 확정시간 to:
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
- 이오스는 계정 주소부터 알기 쉽다?
- EOS 서울 공식 밋업이 인원이 늘어났다고 합니다.
- EOS 서울 공식 밋업이 1월 13일 토요일에 열립니다.
- 일상글 용 계정 @dev1을 신설하였습니다.
- EOS가 뭐가 좋다고 했었죠?
- EOS가 뭔지 아직도 모르겠어요. 쉽게 좀 설명해주세요!
- EOS 사용자는 언제 사용료를 내나요?
- EOS 사용자는 수수료를 안낸다구요?
- EOS는 성능은 충분한가요? 한계는 없나요?
- EOS.IO Dawn 2.0 배포 및 개발 업데이트
- 현재 개발 중인 EOS는 얼마나 빠를까요?
- [번역] 대니얼 래리머는 EOS에서 1초 이내의 지연시간을 구현하고 있습니다.
- 백서 속 EOS는 얼마나 빠른가요?
- 블록체인의 속도란 무엇인가요? - 블록생성시간, 확정시간
- 블록체인의 속도란 무엇인가요? - 초당 트랜잭션 수
- EOS는 언제 출시되나요?
- EOS는 어떻게 발음하나요? 무슨 뜻이죠?
- EOS가 무엇인가요?
- 초보 EOS 시리즈를 시작합니다!
- [먹탐정 dev1] 몽고네 신사점 ★★★☆