대량 트랜잭션 발생시 트랜잭션 상태변화

어느 블록체인에서든 네트워크를 파괴하려는 악당들이 있기 마련입니다.
클레이튼도 그런 공격을 수차례 받아온 것을 알고있습니다.
제가 개발중인 서비스에도 이런 사례 가 발생할 수 있을 것 같아 미리 대비해두려고 합니다.

  1. 블록에 트랜잭션이 담기기까지 평소보다 시간이 더 걸릴 수 있습니다.
    네트워크의 처리량 이상의 트랜잭션이 발생하는 경우, 새로 발생한 트랜잭션이 블록에 담기기까지 순서를 기다려야할 수 있습니다. 이때는 평소보다 트랜잭션 처리 대기 시간이 길어집니다.
  2. Kaikas 등을 이용한 새로운 트랜잭션 배포가 거부당할 수 있습니다.
    Klaytn 노드에는 보유할 수 있는 최대 트랜잭션 수가 설정되어 있습니다. 이 이상으로 트랜잭션이 발생하게 되면, Klaytn 노드는 새로운 트랜잭션 수신를 거부하고 보유한 트랜잭션이 처리되기를 기다립니다. 이 경우에는 조금 시간이 지난 뒤 다시 배포를 시도하시는 것을 권장드립니다. - Klaytn medium 中

클레이튼 네트워크가 매우 느려지거나 멈췄을 때 제출된 트랜잭션의 상태 변화가 어떻게 되는지 알고싶습니다.

  1. “Klaytn 노드에는 보유할 수 있는 최대 트랜잭션 수가 설정되어 있습니다. 이 이상으로 트랜잭션이 발생하게 되면 Klaytn 노드는 새로운 트랜잭션 수신을 거부하고 보유한 트랜잭션이 처리되기를 기다립니다.” 라는 것은 올바른 입력값으로 서명해서 트랜잭션을 제출하려고 해도 Submitted 되지 못하고 4XX Fail 이 날 수도 있다는 의미인가요?

총 3가지 질문입니다.

  1. 트랜젝션이 네트워크에 제출된 후, 대량의 트래픽 발생되어 제출된 트랜젝션이 처리되고 있지 못하는 경우
  • Klaytn EndPoint Node (EN)의 버퍼는 가득 찰 경우, 이후 제출되는 트랜잭션들을 Drop시키므로 5분이상 pending되기는 어렵습니다.
  • 만약 5분이상 대기하는 경우라면, 여러 요인으로 인해 트랜잭션이 실행이 어려운 상황일 수 있으며 기본 설정은 5분이상 대기하고 있는 트랜잭션은 Drop시킵니다.
  • Klaytn은 1초 Finality를 지향하므로 먼저 버퍼에 들어온 이상 먼저 해당 시간안에 처리된다고 볼 수 있습니다.
  1. 트랜젝션이 네트워크에 제출된 후 time out 기준여부
  • 1번의 답변이 설명이 될 것 같습니다.
  1. 트랜젝션 노드의 버퍼 이상으로 트랜젝션 발생의 경우
  • 네 EN의 버퍼가 넘치면, 나중에 도달한 트랜젝션은 Drop됩니다.
  • 트랜젝션이 EN에 제출되었더라도, 기준 이상이 된 것이 다시 확인되면 트랜젝션을 Drop하도록 설계되어 있습니다.
2 Likes

답변 감사합니다.

5분이상 대기한 트랜잭션은 SubmittedCommittedError 가 되겠네요.
이런 디테일한 부분까지 긁어주는 분이 있어서 다행입니다. :grinning:

2 Likes