-
Notifications
You must be signed in to change notification settings - Fork 279
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Consensus should continue working in the presense of heavy transactions #4265
Comments
This might not help because even single transaction in theory can block consensus. |
From discussion we had with @mversic before:
|
Another idea was to have backoff mechanism for But this might have some other concerns:
|
yes, but you can also define |
i see, we just need to make sure that consensus |
Looking at etherium: they add per block gas limit (link). Our blocks have kinda have such limit as well, but it may be harder to derive because it's based on limit of transactions per block and limits per transaction. |
I believe we should just introduce Though in that case we must get rid of the cases where permission validation takes enormously much time (like in the scenario I referred to previously trying to unregister an entity) first so that even a couple of little instructions get processed for a long time. |
This may be problematic because different peers might have different processing power and if someone claims that transaction is |
In that case the complexity is to become tied to |
Tying to Additionally it's not clear how to measure cost of smart-contract because they consume wasm fuel and as well execute instructions. On it's own there is nothing wrong with limiting transaction by amount of instructions because despite time this limit does not depend on processing power of node. But we can't use it to limit smart-contracts because user can loop forever inside transaction never calling any iroha isi.
I'm still not sure, additional research is required. |
I guess that's what we will inevitably do for the public mode anyway. Some references on Ethereum and Substrate:
definitely both, right |
Invalid transactions take a lot of time to process. This is probably because they require cloning of
wsv
. When there is a batch of invalid transactions in a block the time to create a block takes long. Ifmax_transactions_in_block
is large orcommit_time
is low this can prevent consensus from operating because it will never create a new block in required time.What I can suggest at this point is that we can implement some sort of backoff mechanism to reduce the amount of transactions in a block in such cases. We can also consider straightout rejecting transactions that take too long to process. The main thing is that consensus continues operating under all circumstances
The text was updated successfully, but these errors were encountered: