You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When running Rococo/Westend both upgraded to compact proofs with relayer version with compact proofs, everything works ok, but:
Problem
The compact proofs are not backward-compatible. E.g. Polkadot/Kusama bridge, let's say we upgrade just one chain BridgeHubKusama with the runtime version that contains compact proof, but BridgeHubPolkadot will be upgraded later (in few days, weeks, ...). Our actual relayer code does not work, because an upgraded relayer code produces for the storage proofs:
I was able to fix codegen stuff and relay-clients stuff in bridges repo, so where we expect RawStorageProof, I just take it from UnverifiedStorageProof::proof, so at least now we submit valid and encodable extrinsics from relayer version with compact proofs to the runtime with non-compact proofs, but obviously it is not enough, because there is a problem with proofs validation, I can see the error:
/// The `Vec` entries weren't sorted as expected.
UnsortedEntries,
Solution?
We need to find a way how to fix this, at least for compact proofs. Anytime, we add this kind of breaking change, it has to work with old runtime and new runtime, because all the time the BridgeHub runtimes upgrade is totally asynchronous.
So, maybe possible solution could be:
make some conversion from UnverifiedStorageProof to valid/sorted RawStorageProof?
Base for runtimes: paritytech/polkadot-sdk#4729
Base for relayer: #3012
When running Rococo/Westend both upgraded to compact proofs with relayer version with compact proofs, everything works ok, but:
Problem
The compact proofs are not backward-compatible. E.g. Polkadot/Kusama bridge, let's say we upgrade just one chain BridgeHubKusama with the runtime version that contains compact proof, but BridgeHubPolkadot will be upgraded later (in few days, weeks, ...). Our actual relayer code does not work, because an upgraded relayer code produces for the storage proofs:
instead of previous:
I was able to fix codegen stuff and
relay-clients
stuff in bridges repo, so where we expectRawStorageProof
, I just take it fromUnverifiedStorageProof::proof
, so at least now we submit valid and encodable extrinsics from relayer version with compact proofs to the runtime with non-compact proofs, but obviously it is not enough, because there is a problem with proofs validation, I can see the error:iiuc, it is this:
Solution?
We need to find a way how to fix this, at least for compact proofs. Anytime, we add this kind of breaking change, it has to work with old runtime and new runtime, because all the time the BridgeHub runtimes upgrade is totally asynchronous.
So, maybe possible solution could be:
UnverifiedStorageProof
to valid/sortedRawStorageProof
?UnverifiedStorageProof::try_new
to create valid/sortedtrie_proof
?fn prove_storage_with_root
to return kind of enum:How to test locally
Run
polkadot-fellows
bridges zombienet tests with setup:The text was updated successfully, but these errors were encountered: