The behavior during Max transaction

@BloodyRookie

I am asking about the behavior during Max transaction.
In Japan, it is a big argument about the current situation of NEM from the paper “Transaction fee should be fixed”.

Certainly, when using NanoWallet, it is fixed to minimum Fee in a sense.
However, the problem is when it exceeds 120 Tx/m.

In my past tests, transactions beyond 120 Tx/m are memorized as errors, not even in Unconfirm.
(It can not be tested on the main net, and on the test net there are few servers so it is difficult to test)

For the above reasons, I would like to tell you the specification.

Question 1
Can transactions that become Unconfirmd be accepted even if it exceeds 120 Tx/m? Or will it be an error?

Question 2
High Fee has priority, but if it is up to 120 Tx/m to Unconfirmd, I think that the one who made the transaction first takes precedence. Is this idea wrong?

If you are going to change with Catapalt, please let me know.

Thank you.

4 Likes

what you’re probably observing, is that you’re hitting spam filter. @BloodyRookie will probably answer with details

1 Like

If the cache alreay 120 txes inside, then it depends on the transaction signer importance.
If importance of signer is 0 then transaction is rejected (“cache full”).
If importance of signer is non-zero then it is calculated how many transactions the signer is allowed to have in the cache which already has 120 transactions. If for example the signer is allowed to have 8 transactions in the cache and he only has 5 already in the cache, then the new transaction is accepted. If the signer already has 8 transactions in the cache, the new transaction is rejected.

For details see https://nem.io/wp-content/themes/nem/files/NEM_techRef.pdf chapter 4.4

The idea is correct, once a transaction is in the cache, then it will not be replaced by a transaction with higher fee.

2 Likes

Very good Answers!
Thank you very much!

I read technical reference chapter 4.4.
I thought that eff. importance will not become 0 even if the singer’s importance 0.
So, I think, even if signer’s importance 0, accept transaction when the signer pay more transaction fee.

Hi, @BloodyRookie

I got this kind of understanding. (Formula is difficult)

State transition: There is a flow of CacheUncomfirmedConfirmed.
Cache has a maximum of 1000 ? transactions.
Uncomfirmed is up to 120 transactions.

Condition from Cache to Uncomfirmed:
Until 120 transactions, it unconditionally becomes Uncomfirmed.
If uncomfirmed exceeds 120, regulates transactions registered in Cache by importance.

In this situation, if the block goes ahead (Uncomfirmed will be Comfirmed):
The order of Cache to uncomfirmed, the highest fee takes precedence.
This is handled first.
(If the number of transactions in Cache does not exceed 120, it will be imported as is)

Is this understanding correct?

Right, i was a bit imprecise. importance can be boosted by the transaction fee as described in the technical reference.

1 Like

No, the flow is:
new transaction arriving at node → unonconfirmed transactions cache → confirmed (added to a block)
Cache has max size 1000 (1000 slots for transactions), if current size exceeds 120 (120 slots are filled), the cache starts filtering new arriving transactions.

Yes, no filtering up to size 120, then filtering starts.

Yes, when creating a new block, unconfirmed transactions are sorted by fee (and if same fee, sorted ascending by timestamp) and put in that order into a block until the block is full.

1 Like

Thankyou for the explanation.
It became pretty clear.

Thank you !
I understood.

1 Like