1. Intro

이더리움의 tx pool에서 tx는 그들의 가격 (송신인이 지정한 최대 가스 limit)에 의해 우선 순위가 지정되어, “urgent”, “floating” tx 두 종류로 분류된다.

2. Urgent Tx

노드가 채굴할 다음 블럭에 포함될 tx들이다. 이들은 채굴자가 가장 많은 수수료를 얻을 수 있을 것이므로 “urgent”라고 간주된다. 유효한 nonce 중 가장 가스비가 높은 tx들이다.

3. Floating Tx

이는 nonce가 맞지 않거나, 가스비가 낮아 다음 블럭에 바로 포함되지 않을 tx들이다. 이들은 pool에 보관되어있다가, 나중에 urgent가 된다.

만약 선행되는 tx (nonce가 더 작은)가 체인에 포함된다면 floating tx는 urgent가 될 수 있다. 혹은 모든 urgent tx들이 블록에 포함된 후에 여유 공간이 있다면 몇몇 floating txs들도 동일 블록에 포함될 수 있다.

4. heap structure

힙 구조는 tx의 가스비에 기반하여 tx들을 fetch하고 관리하는데 사용된다. 힙 구조는 효율적인 삽입, 제거를 허용하므로 priority queue에 사용된다. (이더리움에서만 사용되는게 아님)

특수한 이진 트리 기반의 heap property를 만족하는 데이터 구조이다.

max heap에서, 무작위의 node1에 대해 1의 값은 그 children들의 값보다 같거나 크다.

min heap에서는 반대.

이렇기 때문에 커트라인 이상 혹은 이하의 priority를 반복적으로 제거하는데 유용하다.