Skip to content
Draft
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
4167b8a
build: ⬆️ Upgrade polkadot-sdk deps to stable2506
snowmead Mar 16, 2026
fb3d272
refactor: ♻️ Remove deprecated RuntimeEvent from pallet Config traits
snowmead Mar 16, 2026
96c6b7d
style: 🎨 cargo fmt --all
snowmead Mar 16, 2026
40cfa3e
build: 🔧 Regenerate TypeScript types for stable2506 runtime APIs
snowmead Mar 17, 2026
1eeec2d
style: 🧹 Fix warnings from stable2506 upgrade
snowmead Mar 17, 2026
17a801f
fix: 🐛 Fix compilation with runtime-benchmarks and try-runtime features
snowmead Mar 17, 2026
f865e4a
build: 📦 Bump api-augment and types-bundle to 0.4.8
snowmead Mar 17, 2026
d0c9b24
style: 🎨 cargo fmt --all
snowmead Mar 17, 2026
ce223ae
fix: 🐛 Adapt transaction watcher and integration tests for fatxpool (…
snowmead Mar 24, 2026
b1ead15
Merge remote-tracking branch 'origin/main' into feat/upgrade-polkadot…
snowmead Mar 25, 2026
e3e3aed
fmt
snowmead Mar 25, 2026
a0c3850
typegen
snowmead Mar 25, 2026
34af65f
fix: remove unnecessary system_addReservedPeer from fisherman tests
snowmead Mar 25, 2026
c5d6c73
fix: resolve CI lint, typecheck, and version-bump failures
snowmead Mar 25, 2026
74f5d8e
style: fix biome formatting in reorg-accept test
snowmead Mar 25, 2026
ebf9450
Merge branch 'main' into feat/upgrade-polkadot-sdk-2506
snowmead Mar 25, 2026
b05e4e7
fix: adapt integration tests for fatxpool timing (stable2506)
snowmead Mar 26, 2026
bdbbb30
Merge remote-tracking branch 'origin/main' into feat/upgrade-polkadot…
snowmead Mar 26, 2026
f69b31f
revert: remove speculative test changes, keep only proven fixes
snowmead Mar 26, 2026
9be375a
revert: remove all fatxpool test fixes, use original test code
snowmead Mar 26, 2026
e5cc4d5
fix: use single-state txpool for manual-seal dev nodes (stable2506)
snowmead Mar 26, 2026
a791a9c
fix: restore upgrade test adaptations reverted in previous commit
snowmead Mar 26, 2026
e04383b
revert: use main test code with single-state pool
snowmead Mar 26, 2026
5159357
fix: add --pool-type=single-state to compose templates and service ge…
snowmead Mar 26, 2026
665b1cb
Merge branch 'main' into feat/upgrade-polkadot-sdk-2506
snowmead Apr 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7,044 changes: 3,718 additions & 3,326 deletions Cargo.lock

Large diffs are not rendered by default.

278 changes: 139 additions & 139 deletions Cargo.toml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -858,6 +858,11 @@ declare module '@polkadot/api-base/types/errors' {
* Local XCM execution incomplete.
**/
LocalExecutionIncomplete: AugmentedError<ApiType>;
/**
* Local XCM execution incomplete with the actual XCM error and the index of the
* instruction that caused the error.
**/
LocalExecutionIncompleteWithError: AugmentedError<ApiType>;
/**
* A remote lock with the corresponding data could not be found.
**/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1679,6 +1679,11 @@ declare module '@polkadot/api-base/types/events' {
[key: string]: AugmentedEvent<ApiType>;
};
session: {
/**
* The `NewSession` event in the current block also implies a new validator set to be
* queued.
**/
NewQueued: AugmentedEvent<ApiType, []>;
/**
* New session has happened. Note that the argument is the session index, not the
* block number as the type might suggest.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types';
import type { CheckInherentsResult, InherentData } from '@polkadot/types/interfaces/blockbuilder';
import type { BlockHash } from '@polkadot/types/interfaces/chain';
import type { AuthorityId } from '@polkadot/types/interfaces/consensus';
import type { CollationInfo } from '@polkadot/types/interfaces/cumulus';
import type { CallDryRunEffects, XcmDryRunApiError, XcmDryRunEffects } from '@polkadot/types/interfaces/dryRunApi';
import type { Extrinsic } from '@polkadot/types/interfaces/extrinsics';
import type { GenesisBuildErr } from '@polkadot/types/interfaces/genesisBuilder';
Expand Down Expand Up @@ -81,23 +80,6 @@ declare module '@polkadot/api-base/types/calls' {
**/
[key: string]: DecoratedCallBase<ApiType>;
};
/** 0xea93e3f16f3d6962/2 */
collectCollationInfo: {
/**
* Collect information about a collation.
**/
collectCollationInfo: AugmentedCall<ApiType, (header: Header | {
parentHash?: any;
number?: any;
stateRoot?: any;
extrinsicsRoot?: any;
digest?: any;
} | string | Uint8Array) => Observable<CollationInfo>>;
/**
* Generic call
**/
[key: string]: DecoratedCallBase<ApiType>;
};
/** 0xdf6acb689907609b/5 */
core: {
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1464,6 +1464,8 @@ declare module '@polkadot/api-base/types/submittable' {
relayChainState?: any;
downwardMessages?: any;
horizontalMessages?: any;
relayParentDescendants?: any;
collatorPeerId?: any;
} | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [CumulusPrimitivesParachainInherentParachainInherentData]>;
sudoSendUpwardMessage: AugmentedSubmittable<(message: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Bytes]>;
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -556,6 +556,24 @@ declare module '@polkadot/api-base/types/events' {
**/
[key: string]: AugmentedEvent<ApiType>;
};
historical: {
/**
* The merkle roots of up to this session index were pruned
**/
RootsPruned: AugmentedEvent<ApiType, [upTo: u32], {
upTo: u32;
}>;
/**
* The merkle root of the validators of the said session were stored
**/
RootStored: AugmentedEvent<ApiType, [index: u32], {
index: u32;
}>;
/**
* Generic event
**/
[key: string]: AugmentedEvent<ApiType>;
};
nfts: {
/**
* All approvals of an item got cancelled.
Expand Down Expand Up @@ -1335,6 +1353,11 @@ declare module '@polkadot/api-base/types/events' {
[key: string]: AugmentedEvent<ApiType>;
};
session: {
/**
* The `NewSession` event in the current block also implies a new validator set to be
* queued.
**/
NewQueued: AugmentedEvent<ApiType, []>;
/**
* New session has happened. Note that the argument is the session index, not the
* block number as the type might suggest.
Expand Down
5 changes: 5 additions & 0 deletions api-augment/src/parachain/interfaces/augment-api-errors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -866,6 +866,11 @@ declare module "@polkadot/api-base/types/errors" {
* Local XCM execution incomplete.
**/
LocalExecutionIncomplete: AugmentedError<ApiType>;
/**
* Local XCM execution incomplete with the actual XCM error and the index of the
* instruction that caused the error.
**/
LocalExecutionIncompleteWithError: AugmentedError<ApiType>;
/**
* A remote lock with the corresponding data could not be found.
**/
Expand Down
5 changes: 5 additions & 0 deletions api-augment/src/parachain/interfaces/augment-api-events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2054,6 +2054,11 @@ declare module "@polkadot/api-base/types/events" {
[key: string]: AugmentedEvent<ApiType>;
};
session: {
/**
* The `NewSession` event in the current block also implies a new validator set to be
* queued.
**/
NewQueued: AugmentedEvent<ApiType, []>;
/**
* New session has happened. Note that the argument is the session index, not the
* block number as the type might suggest.
Expand Down
27 changes: 0 additions & 27 deletions api-augment/src/parachain/interfaces/augment-api-runtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import type { AnyNumber, IMethod, ITuple } from "@polkadot/types-codec/types";
import type { CheckInherentsResult, InherentData } from "@polkadot/types/interfaces/blockbuilder";
import type { BlockHash } from "@polkadot/types/interfaces/chain";
import type { AuthorityId } from "@polkadot/types/interfaces/consensus";
import type { CollationInfo } from "@polkadot/types/interfaces/cumulus";
import type {
CallDryRunEffects,
XcmDryRunApiError,
Expand Down Expand Up @@ -173,32 +172,6 @@ declare module "@polkadot/api-base/types/calls" {
**/
[key: string]: DecoratedCallBase<ApiType>;
};
/** 0xea93e3f16f3d6962/2 */
collectCollationInfo: {
/**
* Collect information about a collation.
**/
collectCollationInfo: AugmentedCall<
ApiType,
(
header:
| Header
| {
parentHash?: any;
number?: any;
stateRoot?: any;
extrinsicsRoot?: any;
digest?: any;
}
| string
| Uint8Array
) => Observable<CollationInfo>
>;
/**
* Generic call
**/
[key: string]: DecoratedCallBase<ApiType>;
};
/** 0xdf6acb689907609b/5 */
core: {
/**
Expand Down
2 changes: 2 additions & 0 deletions api-augment/src/parachain/interfaces/augment-api-tx.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2017,6 +2017,8 @@ declare module "@polkadot/api-base/types/submittable" {
relayChainState?: any;
downwardMessages?: any;
horizontalMessages?: any;
relayParentDescendants?: any;
collatorPeerId?: any;
}
| string
| Uint8Array
Expand Down
6 changes: 6 additions & 0 deletions api-augment/src/parachain/interfaces/registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ import type {
PalletXcmAuthorizedAliasesEntry,
PalletXcmCall,
PalletXcmError,
PalletXcmErrorsExecutionError,
PalletXcmEvent,
PalletXcmHoldReason,
PalletXcmMaxAuthorizedAliases,
Expand Down Expand Up @@ -236,6 +237,7 @@ import type {
SpRuntimeDigest,
SpRuntimeDigestDigestItem,
SpRuntimeDispatchError,
SpRuntimeHeader,
SpRuntimeModuleError,
SpRuntimeMultiSignature,
SpRuntimeProvingTrieTrieError,
Expand Down Expand Up @@ -284,6 +286,7 @@ import type {
StagingXcmV5PalletInfo,
StagingXcmV5QueryResponseInfo,
StagingXcmV5Response,
StagingXcmV5TraitsInstructionError,
StagingXcmV5TraitsOutcome,
StagingXcmV5Xcm,
XcmDoubleEncoded,
Expand Down Expand Up @@ -485,6 +488,7 @@ declare module "@polkadot/types/types/registry" {
PalletXcmAuthorizedAliasesEntry: PalletXcmAuthorizedAliasesEntry;
PalletXcmCall: PalletXcmCall;
PalletXcmError: PalletXcmError;
PalletXcmErrorsExecutionError: PalletXcmErrorsExecutionError;
PalletXcmEvent: PalletXcmEvent;
PalletXcmHoldReason: PalletXcmHoldReason;
PalletXcmMaxAuthorizedAliases: PalletXcmMaxAuthorizedAliases;
Expand Down Expand Up @@ -551,6 +555,7 @@ declare module "@polkadot/types/types/registry" {
SpRuntimeDigest: SpRuntimeDigest;
SpRuntimeDigestDigestItem: SpRuntimeDigestDigestItem;
SpRuntimeDispatchError: SpRuntimeDispatchError;
SpRuntimeHeader: SpRuntimeHeader;
SpRuntimeModuleError: SpRuntimeModuleError;
SpRuntimeMultiSignature: SpRuntimeMultiSignature;
SpRuntimeProvingTrieTrieError: SpRuntimeProvingTrieTrieError;
Expand Down Expand Up @@ -599,6 +604,7 @@ declare module "@polkadot/types/types/registry" {
StagingXcmV5PalletInfo: StagingXcmV5PalletInfo;
StagingXcmV5QueryResponseInfo: StagingXcmV5QueryResponseInfo;
StagingXcmV5Response: StagingXcmV5Response;
StagingXcmV5TraitsInstructionError: StagingXcmV5TraitsInstructionError;
StagingXcmV5TraitsOutcome: StagingXcmV5TraitsOutcome;
StagingXcmV5Xcm: StagingXcmV5Xcm;
XcmDoubleEncoded: XcmDoubleEncoded;
Expand Down
19 changes: 19 additions & 0 deletions api-augment/src/solochain-evm/interfaces/augment-api-events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -686,6 +686,20 @@ declare module "@polkadot/api-base/types/events" {
**/
[key: string]: AugmentedEvent<ApiType>;
};
historical: {
/**
* The merkle roots of up to this session index were pruned
**/
RootsPruned: AugmentedEvent<ApiType, [upTo: u32], { upTo: u32 }>;
/**
* The merkle root of the validators of the said session were stored
**/
RootStored: AugmentedEvent<ApiType, [index: u32], { index: u32 }>;
/**
* Generic event
**/
[key: string]: AugmentedEvent<ApiType>;
};
nfts: {
/**
* All approvals of an item got cancelled.
Expand Down Expand Up @@ -1599,6 +1613,11 @@ declare module "@polkadot/api-base/types/events" {
[key: string]: AugmentedEvent<ApiType>;
};
session: {
/**
* The `NewSession` event in the current block also implies a new validator set to be
* queued.
**/
NewQueued: AugmentedEvent<ApiType, []>;
/**
* New session has happened. Note that the argument is the session index, not the
* block number as the type might suggest.
Expand Down
2 changes: 2 additions & 0 deletions api-augment/src/solochain-evm/interfaces/registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ import type {
PalletSessionCall,
PalletSessionError,
PalletSessionEvent,
PalletSessionHistoricalPalletEvent,
PalletStorageProvidersBackupStorageProvider,
PalletStorageProvidersBucket,
PalletStorageProvidersCall,
Expand Down Expand Up @@ -415,6 +416,7 @@ declare module "@polkadot/types/types/registry" {
PalletSessionCall: PalletSessionCall;
PalletSessionError: PalletSessionError;
PalletSessionEvent: PalletSessionEvent;
PalletSessionHistoricalPalletEvent: PalletSessionHistoricalPalletEvent;
PalletStorageProvidersBackupStorageProvider: PalletStorageProvidersBackupStorageProvider;
PalletStorageProvidersBucket: PalletStorageProvidersBucket;
PalletStorageProvidersCall: PalletStorageProvidersCall;
Expand Down
18 changes: 18 additions & 0 deletions client/blockchain-service/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1368,6 +1368,24 @@ where
} else if let Some(tx) = self.transaction_manager.pending.get_mut(&nonce) {
// Only update status if this is the current transaction
if tx.hash == tx_hash {
// Detect implicit retraction by fatxpool (fork-aware transaction pool).
// fatxpool intentionally suppresses Retracted events (polkadot-sdk#5479).
// When a second InBlock arrives for a different block hash, it means the
// original block was reorged out and the tx was re-included in a new fork
// block.
if let TransactionStatus::InBlock((ref new_block, _)) = status {
if let TransactionStatus::InBlock((ref old_block, _)) = tx.latest_status {
if old_block != new_block {
warn!(
target: LOG_TARGET,
"🔄 Transaction with nonce {} was implicitly retracted and re-included in block: {:?} \
(previously in block: {:?}). This is expected fatxpool behavior during reorgs.",
nonce, new_block, old_block
);
}
}
}

debug!(
target: LOG_TARGET,
"📊 Transaction with nonce {} (hash: {:?}) status updated: {:?}",
Expand Down
3 changes: 1 addition & 2 deletions client/rpc/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ use sp_blockchain::HeaderBackend;
use sp_core::{sr25519::Pair as Sr25519Pair, Encode, Pair};
use sp_keystore::{Keystore, KeystorePtr};
use sp_runtime::{Deserialize, KeyTypeId, Serialize};
use sp_runtime_interface::pass_by::PassByInner;

pub mod remote_file;
use remote_file::{RemoteFileConfig, RemoteFileHandlerFactory};
Expand Down Expand Up @@ -655,7 +654,7 @@ where

// Remove all files with the given prefix from the file storage.
write_file_storage
.delete_files_with_prefix(&prefix.inner())
.delete_files_with_prefix(&prefix.0)
.map_err(into_rpc_error)?;

info!(
Expand Down
4 changes: 2 additions & 2 deletions node/src/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -374,12 +374,12 @@ pub fn run() -> Result<()> {
let partials = new_partial_parachain(&config, dev_service)?;
let db = partials.backend.expose_db();
let storage = partials.backend.expose_storage();
cmd.run(config, partials.client.clone(), db, storage)
cmd.run(config, partials.client.clone(), db, storage, None)
} else if config.chain_spec.is_solochain_evm() {
let partials = new_partial_solochain_evm(&config, dev_service)?;
let db = partials.backend.expose_db();
let storage = partials.backend.expose_storage();
cmd.run(config, partials.client.clone(), db, storage)
cmd.run(config, partials.client.clone(), db, storage, None)
} else {
unreachable!("Invalid chain spec")
}
Expand Down
Loading
Loading