mirror of
https://github.com/luxfi/node.git
synced 2026-10-30 15:24:05 +00:00
The two chains held the same algorithm written twice: insertion order, a forward and reverse conflict index, a byte budget, a bounded cache of refusals, and the rule that removing a transaction also removes its rivals. It is now in core, and it knows nothing about a chain — it can refuse four things it can see for itself (duplicate, too large, no room, conflict) and it cannot tell a valid transaction from an invalid one. It reaches a transaction through three functions declared beside the transaction rather than beside the pool: pool_id, pool_size, pool_inputs. That is the whole seam. Each chain says those four refusals in its own words at its own door. THE DOOR IS THE POINT. The P-chain had TWO ways into its pool — a submitter's, and the one that puts a rejected block's transactions back — and only the first ran the chain's rule that nobody may submit its reward transaction. A rule enforced at one of two doors is a rule an attacker uses the other door for. There is now one admit(), and both call it. The refusal cache moved to the gate on the X-Chain too, where the reasons actually come from: the pool has four answers, and everything else a submitter is told came from an execution the pool knows nothing about. A side effect is a fixed bug — a transaction put back after its block was rejected now goes through the gate, so the filter a peer samples says this node holds it again, where before it silently did not. 208 differential vectors still agree.