-
Notifications
You must be signed in to change notification settings - Fork 12
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
Enforce --force-sealing
option for AuRa POSDAO
#180
Comments
@afck Yes, you were right: |
--force-sealing
option.--force-sealing
option for AuRa POSDAO
Is this still needed? My reading of the miner code on Configuring no |
Yes, it is needed. Validators on POA networks don't use |
But the POA validators can use |
Let's clarify why we need If so, I think we need to force it to In the first comment you proposed to test that: I tested that on |
I actually think they won't:
So I believe everything will work just fine without Except, of course, that the network stalls if there are no transactions. Which is exactly what you want if you configure no So what we should probably test is: Does it work (even if it's slower) if only one of the validators has pending transactions? On the other hand I'm wondering how this is supposed to work with Aura (or Clique) without POSDAO: |
Good questions. Needs to be retested 👍 |
I made a few tests with When I set For Then I sent a transaction through MetaMask to trigger the sealing and that worked fine. Then I repeated the same a few times. Sometimes there were two or three blocks produced after the transaction, so it triggered more than one block (I guess this is an answer to the question Now, in general, I agree that |
Also, for
So, it seems Node 1:
Node 2:
Node 3:
|
Thank you for the detailed results! It looks like disabling force sealing currently prevents Aura from producing both blocks and empty step messages if there are no pending transactions. That means the network will fail to finalize any blocks whenever ½ resp. ⅓ of the validators have no pending transactions for a while. However, Aura considers skipping your turn "benign misbehavior" and reports that to the validator set contract. The empty steps transition seems to have the same intention as disabling I wonder whether Aura should generally ignore the But the wiki currently says:
That sounds like the current behavior is indeed intended: You can run it without force sealing, but then blocks won't get finalized "in a timely fashion". Maybe the wiki should just make it more clear that a lack of pending transactions, even just in some validator nodes, can prevent finalization indefinitely, and that in such a setting the validator set contract must ignore "benign misbehavior". (Or a bit better: Aura could report skipped steps only if force sealing is enabled.) Anyway, all of this is independent of POSDAO, and all of these modifications would be very nontrivial, because of how the code is organized. Maybe let's move this issue to OpenEthereum once the Parity code has migrated. |
Agree 👌 |
I suspect that POSDAO requires
--force-sealing
to work, and it might otherwise stall if there are no pending transactions. We should test that, and if it's true, we should enforce that option (error if it isn't set).In the longer term, we can make the miner smarter, and ask the engine whether it should create a block anyway.
The text was updated successfully, but these errors were encountered: