Submit Fiat-Shamir (Relay)
Context
This change introduces FiatShamir support on the relay side by adding a separate relay based on the existing parachain relay. The main changes include:
- Instead of scanning undelivered orders in the context of light client, scan them directly against the latest BEEFY block on the Relay chain.
- When an undelivered order is found and the attached fee is sufficient to cover the FiatShamir cost, first submit the consensus update with
submitFiatShmir, followed byv2_submitwith the proof derived from the latest BEEFY block in the light client.
Would we ever relay fiat shamir from the relayers given that it is 3x more expensive? I do not think we need any relayer changes here.
This PR is mainly intended to address a specific use case where the end user is willing to bear the full cost of both the consensus update and the message execution for time-sensitive scenarios (as mentioned by the Hydration team in the channel). In such cases, the message relay will submit the Fiat-Shamir consensus update together with the message update.
Maybe a one shot command, that we could use in a playbook to unstuck the beefy client.
Yes, we add a one shot command for submit Fiat-Shamir in this PR.
A more important relayer change is to make sure the beefy and on-demand-beefy relayer abandons a ticket if someone has successfully submitted a fiat shamir with a block greater than your tickets block.
Yes, we've added this check, as mentioned in https://github.com/Snowfork/snowbridge/pull/1565/files#r2563477732 before commitRandao and submitFinal in the previous two-phase flow.