diff --git a/packages/api/src/Base.ts b/packages/api/src/Base.ts index 89a6584a43..824c62aeea 100644 --- a/packages/api/src/Base.ts +++ b/packages/api/src/Base.ts @@ -20,7 +20,7 @@ import RpcCore from '@polkadot/rpc-core'; import { WsProvider } from '@polkadot/rpc-provider'; import { getTypeRegistry, GenericCall, GenericEvent, Metadata, Null, u64 } from '@polkadot/types'; import Linkage, { LinkageResult } from '@polkadot/types/codec/Linkage'; -import { DEFAULT_VERSION as EXTRINSIC_DEFAULT_VERSION } from '@polkadot/types/primitive/Extrinsic/constants'; +import { DEFAULT_VERSION as EXTRINSIC_DEFAULT_VERSION, LATEST_VERSION as EXTRINSIC_LATEST_VERSION } from '@polkadot/types/primitive/Extrinsic/constants'; import { StorageEntry } from '@polkadot/types/primitive/StorageKey'; import { assert, compactStripLength, isString, isUndefined, logger, u8aToHex, u8aToU8a } from '@polkadot/util'; import { cryptoWaitReady } from '@polkadot/util-crypto'; @@ -564,8 +564,12 @@ export default abstract class ApiBase { // detect the extrinsic version in-use based on the last block const lastBlock: SignedBlock = await this._rpcCore.chain.getBlock().toPromise(); + const blockExtrinsic = lastBlock.block.extrinsics[0]; - this._extrinsicType = lastBlock.block.extrinsics[0].type; + // If we haven't sync-ed to 1 yes, this won't have any values + this._extrinsicType = blockExtrinsic + ? blockExtrinsic.type + : EXTRINSIC_LATEST_VERSION; // HACK Assume that old versions, substrate 1.x is u64 BlockNumber/Nonce // and has the old EventRecord format. Remove this ASAP with support for diff --git a/packages/types/src/primitive/Extrinsic/constants.ts b/packages/types/src/primitive/Extrinsic/constants.ts index 1dd2eb2778..033cdd811d 100644 --- a/packages/types/src/primitive/Extrinsic/constants.ts +++ b/packages/types/src/primitive/Extrinsic/constants.ts @@ -8,7 +8,9 @@ export const BIT_UNSIGNED = 0; export const EMPTY_U8A = new Uint8Array(); -// TODO We really want to swap this to V2, however all the test data is setup +export const LATEST_VERSION = 3; + +// TODO We really want to swap this to V3, however all the test data is setup // for V1, so this will take some time to convert... "some" time :) export const DEFAULT_VERSION = 1;