이더리움의 초당 트랜젝션 처리 가능 회수는 15 TPS라고 알려져있습니다.
그러나 좀 더 찾아보면 20~25 TPS라는 내용도 나오긴 하는데 이에 대해서 간단히 살펴보도록 하겠습니다.
현재의 이더리움 네트워크의 블록 개스 리밋(Block Gas Limit)은 8,000,000 (8백만)이며, 일반적인 트랜젝션은 21,000개스를 소모시키므로, 이더리움이 한 블럭 캐질때에 수용 가능한 트랜젝션은 8백만/21000 ~ 최대 380트랜젝션/블록
이더리움은 대략 ~15초당 한 블록씩 캐지고 있으므로, 380 / 15초 = 25/초, 즉 초당 25 트랜젝션이 현재 이더리움 네트워크가 처리가능한 트랜젝션입니다.
물론 일부 이더리움 소스기반 코인의 경우 이 Block Gas Limit을 10배 혹은 그 이상을 늘려서 (예를 들어 80,000,000 GasLimit) 네트워크에서 처리 가능한 용량을 초당 250트랜젝션으로까지 늘릴 수 있다고 주장하기도 합니다만, 이는 너무 단순한 주장입니다.
블록 Gas Limit을 너무 높이 올리는 경우에는 엉클수가 높아지는 문제가 있다고 알려져있으며,
또한 초당 트랜젝션이 늘어나면 트랜젝션당 소모 바이트수와, 블록체인 데이터의 증가속도도 고려해야 합니다.
예를 들어, 이더리움의 트랜젝션당 바이트수는 비트코인의 절반 수준(109바이트)이라는 점을 고려해본다면,
(참고: https://ethereum.stackexchange.com/questions/30175/what-is-the-size-bytes-of-a-simple-ethereum-transaction-versus-a-bitcoin-trans?rq=1)
개스 리밋을 80,000,000으로 올리는 경우 초당 250 트랜젝션을 처리가능하다고 했을때에, 250 * 109 Bytes = 27KB (트랜젝션당 바이트수가 109바이트임을 감안하면)
블록당 (27KB * 15초 =) 405KB/블록, 블록이 캐질때마다 405KB가 늘어나게 되며, 약 12개월간 3,000,000블록에 대한 블록데이터 증가분은 최대 1TB정도가 됩니다.
처리량이 늘게되면 노드간의 sync 속도도 고려해야 합니다.
분권화 / 분산화를 중요하게 생각하는 이더리움의 경우 함부로 Block Gas Limit을 올리지 않는 이유이기도 하죠.
- 이더리움 초창기에는 블록 개스 리밋이 8백만이 아닌 470만 수준이었고, 그 당시 블록당 ~220트랜젝션을 최대 처리가능하였으며, ~15 TPS 처리가 가능했었습니다. 따라서 이더리움의 초당 트랜젝션 처리 속도가 15 TPS라는 말도 아예 근거가 없는 소리는 아닙니다만, 예전의 정보.
- 블록 개스 리밋(Block Gas Limit)은 보통 네트워크 stats 정보를 통해 확인가능합니다. 일례로 이더소셜(ESN) 네트워크 stats정보를 보면 다음과 같습니다. https://stats.ethersocial.org
실제로 TEO는 1억 1만까지 테스트하고서 돌립니다.
330TX / 블록최대 4660TX 까지 실제 잘 테스트 되었습니다.
노드를 어떤 것을 쓰냐, 안정된 버전에 어떻게 튜닝 해서 사용하느냐에 따라서, 퍼포먼스는 달라집니다.
geth 계열은 버리시길 추천합니다.
어차피 현재 이더 풀 동기화 하면 parity 기준으로 2TB 가 넘어갑니다.
대부분 워프 및 패스트 동기화 입니다.
따라서, 일반 사용자들은 요즘같은 네트워크 빠른 시대에 큰 영향이 없습니다.
더 더군다나 이게 분권화의 이슈 문제는 되지 않습니다.
단지, 이더리움은 너무 많은 노드들이 관여하니, 가스한도를 올리는 것이 엄청난 부담인것입니다.
클라이언트에서 디폴트로 올린다고 한들, 풀서버들은 메인이 parity 노드에서 가스값을 보통 강제 세팅해서 사용하니, 어려운점이 있습니다.
또한, 이부분에서 POS 로 빨리 전환하는데만 집중하고 있고, 그렇게 되면 해결된다는 안일함, 리스크 테이킹을 안하려 하는것이죠.
POS 로 간다해도, 이부분에 대해서 최적화 되지 않으면, 여전히 확장성 이슈는 남아있게 됩니다.
이더는 지금 개발및 신규적용이 상당히 어려운 상황에서, 어느 누구도 적절한 답을 못찾고 있는 것입니다.
ESN 도 geth 는 버리길 추천합니다.