From 9e6370e04c3ca65875c7b043c00f2cbc4ed67e28 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 2 Feb 2026 17:43:18 +0300 Subject: [PATCH] fix: add AuthorizeCall signed extension for PezkuwiChain transactions PezkuwiChain requires AuthorizeCall as the first signed extension in all transactions. Without this extension properly configured, transactions fail with "bad signature" errors. Added signedExtensions configuration to: - ApiPromise.create() in Api.tsx - getApi() in StakingAsync.tsx - Test API creation functions This fix enables proper transaction signing for PezkuwiChain mainnet and teyrchains (Asset Hub, People Chain). --- packages/react-api/src/Api.tsx | 9 +++++++++ packages/react-hooks/src/ctx/StakingAsync.tsx | 11 ++++++++++- packages/test-support/src/api/createApi.ts | 13 ++++++++++++- .../test-support/src/api/createAugmentedApi.ts | 14 +++++++++++++- 4 files changed, 44 insertions(+), 3 deletions(-) diff --git a/packages/react-api/src/Api.tsx b/packages/react-api/src/Api.tsx index 7c10217..1eefe1c 100644 --- a/packages/react-api/src/Api.tsx +++ b/packages/react-api/src/Api.tsx @@ -280,10 +280,19 @@ async function createApi (apiUrl: string, signer: ApiSigner, isLocalFork: boolea provider = new WsProvider(apiUrl); } + // PezkuwiChain requires AuthorizeCall signed extension for all transactions + const pezkuwiSignedExtensions = { + AuthorizeCall: { + extrinsic: {}, + payload: {} + } + }; + statics.api = new ApiPromise({ provider, registry: statics.registry, signer, + signedExtensions: pezkuwiSignedExtensions, types, typesBundle }); diff --git a/packages/react-hooks/src/ctx/StakingAsync.tsx b/packages/react-hooks/src/ctx/StakingAsync.tsx index 5a474b2..d22bfca 100644 --- a/packages/react-hooks/src/ctx/StakingAsync.tsx +++ b/packages/react-hooks/src/ctx/StakingAsync.tsx @@ -12,9 +12,18 @@ import { useApi } from '@pezkuwi/react-hooks'; const allEndPoints = createWsEndpoints((k, v) => v?.toString() || k); +// PezkuwiChain requires AuthorizeCall signed extension for all transactions +const PEZKUWI_SIGNED_EXTENSIONS = { + AuthorizeCall: { + extrinsic: {}, + payload: {} + } +}; + export const getApi = async (url: string[]|string) => { const api = await ApiPromise.create({ - provider: new WsProvider(url) + provider: new WsProvider(url), + signedExtensions: PEZKUWI_SIGNED_EXTENSIONS }); await api.isReadyOrError; diff --git a/packages/test-support/src/api/createApi.ts b/packages/test-support/src/api/createApi.ts index e4be3f8..50fdd2d 100644 --- a/packages/test-support/src/api/createApi.ts +++ b/packages/test-support/src/api/createApi.ts @@ -6,12 +6,23 @@ import { WsProvider } from '@pezkuwi/rpc-provider'; import { BIZINIKIWI_PORT } from '../bizinikiwi/index.js'; +// PezkuwiChain requires AuthorizeCall signed extension for all transactions +const PEZKUWI_SIGNED_EXTENSIONS = { + AuthorizeCall: { + extrinsic: {}, + payload: {} + } +}; + export async function createApi (port: number = BIZINIKIWI_PORT): Promise { process.env.NODE_ENV = 'test'; const provider = new WsProvider(`ws://127.0.0.1:${port}`); - const api = await ApiPromise.create({ provider }); + const api = await ApiPromise.create({ + provider, + signedExtensions: PEZKUWI_SIGNED_EXTENSIONS + }); const [chain, nodeName, nodeVersion] = await Promise.all([ api.rpc.system.chain(), diff --git a/packages/test-support/src/api/createAugmentedApi.ts b/packages/test-support/src/api/createAugmentedApi.ts index 1707ff4..0937829 100644 --- a/packages/test-support/src/api/createAugmentedApi.ts +++ b/packages/test-support/src/api/createAugmentedApi.ts @@ -7,6 +7,14 @@ import { ApiPromise, WsProvider } from '@pezkuwi/api'; import { Metadata, TypeRegistry } from '@pezkuwi/types'; import metaStatic from '@pezkuwi/types-support/metadata/static-bizinikiwi'; +// PezkuwiChain requires AuthorizeCall signed extension for all transactions +const PEZKUWI_SIGNED_EXTENSIONS = { + AuthorizeCall: { + extrinsic: {}, + payload: {} + } +}; + export function createAugmentedApi (): ApiPromise { const registry = new TypeRegistry(); // FIXME - ref: https://github.com/pezkuwichain/pezkuwi-apps/pull/11051 @@ -16,7 +24,11 @@ export function createAugmentedApi (): ApiPromise { registry.setMetadata(metadata); - const api = new ApiPromise({ provider: new WsProvider('ws://', false), registry: registry as unknown as Registry }); + const api = new ApiPromise({ + provider: new WsProvider('ws://', false), + registry: registry as unknown as Registry, + signedExtensions: PEZKUWI_SIGNED_EXTENSIONS + }); // eslint-disable-next-line deprecation/deprecation api.injectMetadata(metadata, true);