Transactions recorded in the wrong order can result in incorrect vault state

Description

If a node is slow to process a transaction compared to the rate at which transactions are received, it is possible that transactions in a chain are recorded in the wrong order. This can result in multiple unconsumed states in that node's vault for the same evolved state.

For example, with the following transaction chain:

– txX --> State A -- txY --> State B

If node 1 creates these transactions, and node 2 receives them as part of the finality flow, then it is possible that node 2 ends up recording states for txY before txX if they are received quickly enough. Recording txY leaves State B in the vault unconsumed, while recording txX leaves State A in the vault unconsumed.

See https://github.com/corda/corda/issues/4484

Status

Assignee

James Higgs

Reporter

James Higgs

Priority

Highest

Labels

None

Severity

High

Fix versions

None

Ported to...

None

Feature Team

Corda Core

Affects versions

Corda 3.3
Corda 4