어떤 transaction이 block에 먼저 채굴되는지 궁금합니다

안녕하세요 transaction pool에 있는 transaction들중에 어떤 transaction이 블록에 먼저 채굴되는지 알고 싶습니다. 그리고 pending상태와 queue상태의 차이점이 무엇인가요? queue상태가 먼저 채굴되나요?

안녕하세요.

Transaction의 처리 순서는 각 block proposer 입장에서 pending TxPool에 저장되어 있는 Tx들을 account별로 nonce로 정렬하고 임의의 account의 Tx를 뽑아서 처리하고 있습니다. 아래 코드를 참조 부탁드립니다.
(gas price로 정렬을 하는 것이 있으나 Klaytn에서는 고정 gas price를 사용중이라 gas price로 나누는 것을 없습니다.)

또한 txpool의 pending와 queue의 차이는 아래와 같습니다.

  • pending : nonce가 이어져서 바로 실행가능한 transaction을 보관하고 있음.
  • queue : nonce가 이어지지 못해 실행이 안되는 transaction을 보관하고 있음.

예를 들어 특정 account의 아래와 같은 nonce의 Tx가 네트워크로 전파가 되면

0, 1, 2, 3, 7, 8, 9, 10

nonce번호가 이어지는 0, 1, 2, 3은 pending에 저장되고
nonce가 이어지지 못하는 7, 8, 9 10은 queue에 저장 됩니다.

감사합니다.