2

I encountered this error under --dev mode.

assertion `left == right` failed: slot number mismatch
  left: Slot(285901918)
 right: Slot(0)    
2024-05-11 15:11:48 1 storage transactions are left open by the runtime. Those will be rolled back.    
2024-05-11 15:11:48 1 storage transactions are left open by the runtime. Those will be rolled back.    
2024-05-11 15:11:48 ❗️ Inherent extrinsic returned unexpected error: Error at calling runtime api: Execution failed: Execution aborted due to trap: wasm trap: wasm `unreachable` instruction executed
WASM backtrace:
error while executing at wasm backtrace:
    0: 0x4f723d - <unknown>!rust_begin_unwind
    1: 0x15920 - <unknown>!core::panicking::panic_fmt::h7a368385936888dc
    2: 0x16440 - <unknown>!core::panicking::assert_failed_inner::h8608b548c883ea8f
    3: 0x40ffbb - <unknown>!core::panicking::assert_failed::h2f0ca201fdc74f98
    4: 0x3adc40 - <unknown>!<cumulus_pallet_aura_ext::consensus_hook::FixedVelocityConsensusHook<T,_,_,_> as cumulus_pallet_parachain_system::consensus_hook::ConsensusHook>::on_state_proof::h0fc8de67199d2e47
    5: 0x237ba3 - <unknown>!frame_support::storage::transactional::with_transaction::haf25409beb434094
    6: 0x1a8a6e - <unknown>!<cumulus_pallet_parachain_system::pallet::Call<T> as frame_support::traits::dispatch::UnfilteredDispatchable>::dispatch_bypass_filter::{{closure}}::h7de027a2a3b5a249
    7: 0x1b3e69 - <unknown>!environmental::local_key::LocalKey<T>::with::ha5fe1858700802dc
    8: 0x160eb3 - <unknown>!<pangolin_runtime::RuntimeCall as frame_support::traits::dispatch::UnfilteredDispatchable>::dispatch_bypass_filter::h2e7a00319cda07d7
    9: 0x155e25 - <unknown>!<pangolin_runtime::RuntimeCall as sp_runtime::traits::Dispatchable>::dispatch::h2cad3cd748893c87
   10: 0x4411ea - <unknown>!<fp_self_contained::checked_extrinsic::CheckedExtrinsic<AccountId,Call,Extra,SelfContainedSignedInfo> as sp_runtime::traits::Applyable>::apply::h12360671c174c9d3
   11: 0x3f1be5 - <unknown>!frame_executive::Executive<System,Block,Context,UnsignedValidator,AllPalletsWithSystem,COnRuntimeUpgrade>::apply_extrinsic::h81f7d0327e18a0d6
   12: 0x1db61c - <unknown>!BlockBuilder_apply_extrinsic. Dropping.    
2024-05-11 15:11:48 panicked at /home/bear/.cargo/git/checkouts/polkadot-sdk-cff69157b985ed76/c8d2251/cumulus/pallets/parachain-system/src/lib.rs:248:13:
set_validation_data inherent needs to be present in every block!    
2024-05-11 15:11:48 Proposing failed: Import failed: Error at calling runtime api: Execution failed: Execution aborted due to trap: wasm trap: wasm `unreachable` instruction executed
WASM backtrace:
error while executing at wasm backtrace:
    0: 0x4f723d - <unknown>!rust_begin_unwind
    1: 0x15920 - <unknown>!core::panicking::panic_fmt::h7a368385936888dc
    2: 0x4ae927 - <unknown>!<cumulus_pallet_parachain_system::pallet::Pallet<T> as frame_support::traits::hooks::OnFinalize<<<<T as frame_system::pallet::Config>::Block as sp_runtime::traits::HeaderProvider>::HeaderT as sp_runtime::traits::Header>::Number>>::on_finalize::h952e5e72e9ecc7d3
    3: 0x3b9fea - <unknown>!<(TupleElement0,TupleElement1,TupleElement2,TupleElement3,TupleElement4,TupleElement5,TupleElement6,TupleElement7,TupleElement8,TupleElement9,TupleElement10,TupleElement11,TupleElement12,TupleElement13,TupleElement14,TupleElement15,TupleElement16,TupleElement17,TupleElement18,TupleElement19,TupleElement20,TupleElement21,TupleElement22,TupleElement23,TupleElement24,TupleElement25,TupleElement26,TupleElement27,TupleElement28,TupleElement29,TupleElement30,TupleElement31,TupleElement32,TupleElement33,TupleElement34,TupleElement35,TupleElement36,TupleElement37) as frame_support::traits::hooks::OnFinalize<BlockNumber>>::on_finalize::h5bd89832c4727e0b
    4: 0x3f20ec - <unknown>!frame_executive::Executive<System,Block,Context,UnsignedValidator,AllPalletsWithSystem,COnRuntimeUpgrade>::idle_and_finalize_hook::h77b85e4cf31b58f8
    5: 0x1db76c - <unknown>!BlockBuilder_finalize_block    

I discovered this patch by Moonbeam.

https://github.com/moonbeam-foundation/polkadot-sdk/commit/9b36e2ab851bd836548d5b8d9daa053cb7d0da35

It's a patch for polkadot-v1.3.0.

Even in the most recent version of the polkadot-sdk(v1.11.0), I haven't found such an update. Is instantly seal officially supported by Substrate? If not, we'll need to set up a relay chain to get a local devnet running. Or cherry-pick the Moonbeam's patch.

1 Answer 1

1

If you look at the error:

assertion `left == right` failed: slot number mismatch
  left: Slot(285901918)
 right: Slot(0)   

Which is triggered here:

let relay_chain_timestamp =
            u64::from(RELAY_CHAIN_SLOT_DURATION_MILLIS).saturating_mul(*relay_chain_slot);

let para_slot_duration = SlotDuration::from_millis(Aura::<T>::slot_duration().into());
let para_slot_from_relay =
            Slot::from_timestamp(relay_chain_timestamp.into(), para_slot_duration);


assert_eq!(slot, para_slot_from_relay, "slot number mismatch");

The moonbeam fix is setting the relay_chain_slot in the proof. However, this:

sproof_builder.current_slot = (relay_parent_number as u64).into();

Should be:

sproof_builder.current_slot = (relay_parent_number as u64).into() / RELAY_CHAIN_SLOT_DURATION_MILLIS;

Generally the fix of moonbeam should be applied in polkadot-sdk directly.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.