트랜젝션이 밀리는 이유가 무엇인가요?

클레이튼의 tps가 3000으로 알고있습니다

평소에는 1~2정도 늦게 블록이 생성되는데
사람들이 몰릴때 트랜젝션을 제출하면 5~10정도는 블록이 밀려있습니다.
예를들어 1110 블록일때 제출하면 1115로 밀려있는거죠
그래서 klayscope을 보니
밀릴때의 블록에있는 tx수는 300~500정도밖에 되지 않습니다.
Tps가 3000이라면 밀리지않고 담겨야할텐데…
사람몰릴때 블록이 밀리는 또다른 이유가 있을까요?
네트워크 환경때문이라하면 구체적으로 어떤 원인인지 궁금합니다

여러가지 원인이 있을 수 있기 때문에 정확하게 말할 수는 없겠지만, James 님이 말씀하신 상황을 가정해보겠습니다.

일단 tps 3000이라는 것에 대해서 먼저 생각을 해보자면, 클레이튼의 한 블록당 실행 시간 제한이 250ms라고 하였을때, 테스트에서 표준으로 정한 트랜잭션으로 부하를 준 상태에서, 트랜잭션이 1초에 3000개를 처리한다고 보시면 됩니다.

즉, tps 3000은 한 트랜잭션 당 실행시간이 일정하였을 때 측정된 것이고, 실제 현실 세상에서 운영시엔 실행시간이 굉장히 긴 트랜잭션들이 많이 포함되는 상황이 충분히 일어날 수 있고, 그게 지금 James 님이 말씀주신 상황에 포함되는 것 같습니다 :slight_smile:

1 Like

답변 감사드립니다.
그럼 트랜젝션이 다 같은게아니고 트젝종류에따라 실행시간이 달라질수있다는 말씀이시군요 좀 무거우면 실행시간이 더 걸린다 볼 수 있겠네요

블록당 실행시간이 250ms라는 것은
어떤걸 의미하는지 더 자세히알려주실수 있나요?
한 트젝을 실행하는데 250ms라는건가요?

네 맞습니다. 단순히 클레이 전송하는 트랜잭션과는 달리 컨트랙트를 실행하는 트랜잭션들은 더 무거울 수 있죠.

블록당 실행시간 제한이 250ms라는 것은, 마이너와 같은 블록 생성자가 블록 생성 시 트랜잭션을 하나씩 실행하며 이를 블록에 차곡차곡 담는데, 이 때, 250ms라는 시간이 지나가면 타이머가 expire되며 블록 생성이 중지되어, 더이상 해당 블록에 트랜잭션을 담을 수 없는 것을 말하는데요,

트랜잭션당 실행시간 제한과는 상관없는 개념입니다.

2 Likes

상세한 설명 감사합니다
마지막으로 트랜젝션 풀에 있는 트젝들에서 골라져
블록이 만들어지는거로 알고 있는데 트젝풀에서 블록에쌓이는 트랜젝션이 선정되는 기준은 얼마나 빨리 노드에 도달했는가 인가요? 어떤 기준이 있는지 궁금합니디