Prevent replay of rejected transactions

Shorthand

Discussion participants: 武宮誠Andrei LebedevNikita Puzankov

武宮誠

neI also don’t think rejected transactions should be in a block. Is there a good reason to have them there?

Andrei Lebedev :

Otherwise it is possible to replay a rejected transaction, and it may be committed, e.g. when someone got enough assets after some time if there were no assets when the transaction was initially rejected

Nikita Puzankov :

I didn't catch that

武宮誠

I see

Unfortunately it also has the problem of filling up the blockchain

Potentially for free

If this was in bitcoin, for instance, one person could add petabytes of transactions for free and no one would be able to use it. Sora faces this potential problem

Andrei Lebedev

I wonder how this problem is solved in other networks. Because your concern is valid, and it should be already solved somehow.

武宮誠

I think it isn’t solved. I think if something is replayed, you can just pay twice (assuming you created a new transaction).

In another blockchain project we had a timestamp with each transaction and there’s a threshold required. I forget the number, but if a transaction was, say, 3 hours old, it would be ignored.

I think we can do this in Iroha2. I haven’t said all my plans yet, but I want to incorporate something like a network time service, like the other blockchain project had.

Andrei Lebedev :

The same thing is also present in Iroha. But it is quite possible to do this spending attack in a short timeframe.

武宮誠 :

That way nodes can try to reject transactions that are outside the time. Sure, but it is not our problem, but the sender’s :)

Nikita Puzankov :

that what I was talking about with concept of TTL for tx processing

武宮誠 :

What do you mean?

Nikita Puzankov :

Like a usual packets on internet - Time to Live

武宮誠 :

Yes, For example, it could be like 10 minutes or something configurable. I think this is the best way.

TL;DR

To prevent transactions "spamming" (with transactions that will be rejected by validation, but accepted and stored in queue before for some period of time) we may introduce Transactions Time to Live and clean up queue when this time comes.