I am designing a application which should be used for transaction processing so required very good performance.
There are requirements that transactions originating from the same client must have strictly increasing transaction number so we can detect that someone manipulated with the transactions in case there are different numbers or transactions with the same number.
Based on that I'm thinking how to protect transaction counters against roll-back attack. I can imagine that the application will have a database of transaction counters and someone will restore the database from backup and the transaction counters will be different.
How to protect some state X from being changed without detection?
I was thinking about using blockchain for that purpose but I'am afraid of the speed of blockchain in case of transaction processing system, where I need high performance.
I can also imagine that the application will be running on VM and someone will restore its state from snapshot. This is also from my point of view roll-back attack that should be avoided.
Are there any techniques how to handle such situation and protect tensaction counters from being manipulated?