# 内存池

# 交易排序

目前,除了交易到达的顺序(通过 RPC 或来自其他节点)之外,没有其他交易的顺序。

因此,指定顺序的唯一方法是将它们发送到单个节点。

valA:

  • tx1
  • tx2
  • tx3

如果交易被分割到不同的节点,则无法确保按照预期的顺序处理它们。

valA:

  • tx1
  • tx2

valB:

  • tx3

如果 valB 是提议人,排序可能是:

  • tx3
  • tx1
  • tx2

如果 valA 是提议人,排序可能是:

  • tx1
  • tx2
  • tx3

也就是说,如果交易包含一些内部值,比如 order/nonce/sequence number,应用程序可以拒绝无序的交易。所以如果一个节点接收到 tx3,然后是 tx1,它可以拒绝tx3,然后接受 tx1。然后发送方可以重试发送 tx3,在节点看到 tx2 之前,应该拒绝发送 tx3。