-
Notifications
You must be signed in to change notification settings - Fork 803
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
author_submitAndWatchExtrinsic
reports incorrect block hash when there are missed authorship slots
#6479
Comments
So, what you are saying it reports |
Is it |
Would you also provide a version of the node used? |
Thanks for taking a look into this.
Yes, that's correct.
We using polkadot-sdk version 1.15 - in particular this fork: https://github.com/chainflip-io/polkadot-sdk/tree/chainflip-substrate-1.15.2%2B2
In this case, they are sent directly to one of the authoring nodes via localhost. There's effectively a side-car component reading from the validator/author that is listening and submitting extrinsics to it, though ofc, this node isn't always the author.
It's not fork-aware. I wasn't aware of fork-aware 😄 |
What is the reproducibility rate? |
I've only seen it once unfortunately. Since the network has had less congestion since, there have been fewer missed authorship slots and so there is already only a small chance that we would even get into a situation it was possible for this to occur. |
Just hit it again. Exactly the same conditions.
|
Seems like missing an authorship slot is an important puzzle here. @bkchr is it something that can be easily emulated in zombienet/local network? I can run some tests, maybe I would be able to reproduce it. Maybe it is also affecting new pool - would like to cross check this. |
Just stop the node and then it can not produce for a slot :D Or maybe do not even start the node. |
Our suspicion is that this is somehow reorg-related, so I don't think stopping a node will work. All nodes need to be able to author blocks but some of them should author for the wrong slot - like maybe tell some of them to author for slot S+1, or simulate clock drift by messing with timestamps. I think it's something like this: the node that processes the submission reports that it's included in block A at height N, but that block is eventually reorged out of the canonical sequence and it just so happens that in the canonical sequence of blocks, the tx was already in block B at height N-1. Block A would still be queryable by hash on the block explorer, but it's no longer part of the canonical chain. Does the above sound possible/probable? Maybe this can be solved by using the new |
I am afraid that w/o quick path to reproduce the issue there is not much that I can do. Would it be possible that you attach the log, when you hit the issue? I'd need |
@michalkucharczyk I know it's not a simple one... I'll see if I can get hold of some logs. Thanks for your help. Can you point me towards some details/documentation about the new fork-aware pool? It sounds like the kind of thing that might help. |
Maybe this post could be a good start: https://forum.polkadot.network/t/the-fork-aware-transaction-pool/10468 |
Is there an existing issue?
Experiencing problems? Have you tried our Stack Exchange first?
Description of bug
What we've seen on the Chainflip network:
author_submitAndWatchExtrinsic
and eventually getInBlock(A)
I'm assuming it has to do with the fact there were missed authorship slots at that time. In block A (on the finalised chain) we see that there are two missing authorship events, meaning that the authors of the two previous blocks missed their slots.
This behaviour from the subscription, would still be incorrect though, since even in the case of a reorg, the fact the extrinsic was in a different block would change the hash of block A, but the block with hash A still exists, without the extrinsic we were looking for.
We are using Aura for block authorship.
Steps to reproduce
No response
The text was updated successfully, but these errors were encountered: