블록체인 속도

in #blockchain7 years ago

블록체인 속도는 쉽게 말해 "내 행동이 블록체인에 저장되기까지 얼마나 걸리는가?"를 가지고 얘기 할 수 있습니다.

블록체인을 구성하는 개념 중 몇 가지가 속도에 직접적으로 관련이 있습니다.

· 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분입니다.

출처: https://steemit.com/coinkorea/@dev1by0/537f11