# 内存池
# 交易排序
目前,除了交易到达的顺序(通过 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。