Skip to content
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

Open
2 tasks done
kylezs opened this issue Nov 14, 2024 · 6 comments
Labels
I2-bug The node fails to follow expected behavior. I10-unconfirmed Issue might be valid, but it's not yet known.

Comments

@kylezs
Copy link

kylezs commented Nov 14, 2024

Is there an existing issue?

  • I have searched the existing issues

Experiencing problems? Have you tried our Stack Exchange first?

  • This is not a support question.

Description of bug

What we've seen on the Chainflip network:

  1. Submit an extrinsic with author_submitAndWatchExtrinsic and eventually get InBlock(A)
  2. The finalised stream says the extrinsic was in the block before block A... however the block hash A still exists.

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

@kylezs kylezs added I10-unconfirmed Issue might be valid, but it's not yet known. I2-bug The node fails to follow expected behavior. labels Nov 14, 2024
@bkchr
Copy link
Member

bkchr commented Nov 14, 2024

So, what you are saying it reports InBlock(A), but the extrinsic is not in block A?

CC @michalkucharczyk

@michalkucharczyk
Copy link
Contributor

Is it fork-aware pool or the old one? (Did you pass --pool-type=fork-aware?)

@michalkucharczyk
Copy link
Contributor

michalkucharczyk commented Nov 14, 2024

Would you also provide a version of the node used?
What is network configuration: do you send transaction directly to collator, or does it go via dedicated RPC node?

@kylezs
Copy link
Author

kylezs commented Nov 18, 2024

Thanks for taking a look into this.

So, what you are saying it reports InBlock(A), but the extrinsic is not in block A?

Yes, that's correct.

Would you also provide a version of the node used?

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
There are only very minor changes to this fork, I think the only change is making the event types public, can't recall from memory exactly, but certainly nothing to do with these subscriptions, should be the same as 1.15 in that respect.

do you send transaction directly to collator?

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.

Is it fork-aware pool or the old one?

It's not fork-aware. I wasn't aware of fork-aware 😄

@michalkucharczyk
Copy link
Contributor

What is the reproducibility rate?

@kylezs
Copy link
Author

kylezs commented Nov 18, 2024

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
I2-bug The node fails to follow expected behavior. I10-unconfirmed Issue might be valid, but it's not yet known.
Projects
None yet
Development

No branches or pull requests

3 participants