diff --git a/KNOWN_GOOD_BLOCK_NUMBERS.env b/KNOWN_GOOD_BLOCK_NUMBERS.env index a6aab5b67..a154bcb83 100644 --- a/KNOWN_GOOD_BLOCK_NUMBERS.env +++ b/KNOWN_GOOD_BLOCK_NUMBERS.env @@ -1,22 +1,22 @@ -ACALA_BLOCK_NUMBER=9401887 -ASSETHUBKUSAMA_BLOCK_NUMBER=10774348 -ASSETHUBPOLKADOT_BLOCK_NUMBER=9644672 -ASTAR_BLOCK_NUMBER=10114064 -BASILISK_BLOCK_NUMBER=11043654 -BRIDGEHUBKUSAMA_BLOCK_NUMBER=6501942 -BRIDGEHUBPOLKADOT_BLOCK_NUMBER=5959409 -COLLECTIVESPOLKADOT_BLOCK_NUMBER=7139725 -CORETIMEKUSAMA_BLOCK_NUMBER=3467376 -CORETIMEPOLKADOT_BLOCK_NUMBER=2568807 -ENCOINTERKUSAMA_BLOCK_NUMBER=10654529 -HYDRATION_BLOCK_NUMBER=9124908 -INTEGRITEEKUSAMA_BLOCK_NUMBER=8464211 -INTEGRITEEPOLKADOT_BLOCK_NUMBER=5260796 -KARURA_BLOCK_NUMBER=9934578 -KUSAMA_BLOCK_NUMBER=30002649 -MOONBEAM_BLOCK_NUMBER=12503052 -MOONRIVER_BLOCK_NUMBER=13056270 -PEOPLEKUSAMA_BLOCK_NUMBER=5654809 -PEOPLEPOLKADOT_BLOCK_NUMBER=2900256 -POLKADOT_BLOCK_NUMBER=27670237 -SHIDEN_BLOCK_NUMBER=11753072 +ACALA_BLOCK_NUMBER=9410095 +ASSETHUBKUSAMA_BLOCK_NUMBER=10789479 +ASSETHUBPOLKADOT_BLOCK_NUMBER=9652347 +ASTAR_BLOCK_NUMBER=10130674 +BASILISK_BLOCK_NUMBER=11059895 +BRIDGEHUBKUSAMA_BLOCK_NUMBER=6509952 +BRIDGEHUBPOLKADOT_BLOCK_NUMBER=5966975 +COLLECTIVESPOLKADOT_BLOCK_NUMBER=7147433 +CORETIMEKUSAMA_BLOCK_NUMBER=3474977 +CORETIMEPOLKADOT_BLOCK_NUMBER=2576813 +ENCOINTERKUSAMA_BLOCK_NUMBER=10671030 +HYDRATION_BLOCK_NUMBER=9141741 +INTEGRITEEKUSAMA_BLOCK_NUMBER=8472161 +INTEGRITEEPOLKADOT_BLOCK_NUMBER=5268348 +KARURA_BLOCK_NUMBER=9942556 +KUSAMA_BLOCK_NUMBER=30019411 +MOONBEAM_BLOCK_NUMBER=12519049 +MOONRIVER_BLOCK_NUMBER=13071067 +PEOPLEKUSAMA_BLOCK_NUMBER=5670456 +PEOPLEPOLKADOT_BLOCK_NUMBER=2907791 +POLKADOT_BLOCK_NUMBER=27687182 +SHIDEN_BLOCK_NUMBER=11767972 diff --git a/packages/kusama/src/__snapshots__/assetHubKusama.proxy.e2e.test.ts.snap b/packages/kusama/src/__snapshots__/assetHubKusama.proxy.e2e.test.ts.snap index f02d28d09..5d515ef3e 100644 --- a/packages/kusama/src/__snapshots__/assetHubKusama.proxy.e2e.test.ts.snap +++ b/packages/kusama/src/__snapshots__/assetHubKusama.proxy.e2e.test.ts.snap @@ -222,14 +222,16 @@ exports[`Kusama AssetHub Proxy > create and kill pure proxies > events when kill [ { "data": { - "result": { - "Err": { - "Module": { - "error": "0x05000000", - "index": 42, - }, - }, - }, + "disambiguationIndex": 0, + "proxyType": "Any", + "spawner": "HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F", + }, + "method": "PureKilled", + "section": "proxy", + }, + { + "data": { + "result": "Ok", }, "method": "ProxyExecuted", "section": "proxy", @@ -2123,3 +2125,15 @@ exports[`Kusama AssetHub Proxy > proxy announcement lifecycle test > events when }, ] `; + +exports[`Kusama AssetHub Proxy > proxy announcement lifecycle test > events when Bob performs the announced proxy call 1`] = ` +[ + { + "data": { + "result": "Ok", + }, + "method": "ProxyExecuted", + "section": "proxy", + }, +] +`; diff --git a/packages/kusama/src/__snapshots__/kusama.proxy.e2e.test.ts.snap b/packages/kusama/src/__snapshots__/kusama.proxy.e2e.test.ts.snap index b9e69ca67..8008c9850 100644 --- a/packages/kusama/src/__snapshots__/kusama.proxy.e2e.test.ts.snap +++ b/packages/kusama/src/__snapshots__/kusama.proxy.e2e.test.ts.snap @@ -311,7 +311,6 @@ exports[`Kusama Proxy > create and kill pure proxies > events when killing pure "data": { "disambiguationIndex": 0, "proxyType": "Any", - "pure": "D6qRX8F2Swp1mAnssEJ5PsbjWbeKSdYyRzY7sEujFjtWzQp", "spawner": "HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F", }, "method": "PureKilled", @@ -2952,15 +2951,3 @@ exports[`Kusama Proxy > proxy announcement lifecycle test > events when Bob anno }, ] `; - -exports[`Kusama Proxy > proxy announcement lifecycle test > events when Bob performs the announced proxy call 1`] = ` -[ - { - "data": { - "result": "Ok", - }, - "method": "ProxyExecuted", - "section": "proxy", - }, -] -`; diff --git a/packages/kusama/src/__snapshots__/peopleKusama.proxy.e2e.test.ts.snap b/packages/kusama/src/__snapshots__/peopleKusama.proxy.e2e.test.ts.snap index b9f0b03bd..28fd76628 100644 --- a/packages/kusama/src/__snapshots__/peopleKusama.proxy.e2e.test.ts.snap +++ b/packages/kusama/src/__snapshots__/peopleKusama.proxy.e2e.test.ts.snap @@ -195,7 +195,6 @@ exports[`People Kusama Proxy > create and kill pure proxies > events when killin "data": { "disambiguationIndex": 0, "proxyType": "Any", - "pure": "FJ3Yk5SeRPRt8rQjeVDZ3Mxm199uwx8pLT1cPBEHWaNEgzV", "spawner": "HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F", }, "method": "PureKilled", @@ -1611,15 +1610,3 @@ exports[`People Kusama Proxy > proxy announcement lifecycle test > events when B }, ] `; - -exports[`People Kusama Proxy > proxy announcement lifecycle test > events when Bob performs the announced proxy call 1`] = ` -[ - { - "data": { - "result": "Ok", - }, - "method": "ProxyExecuted", - "section": "proxy", - }, -] -`; diff --git a/packages/kusama/src/assetHubKusama.proxy.e2e.test.ts b/packages/kusama/src/assetHubKusama.proxy.e2e.test.ts index f489a2971..ce9db400d 100644 --- a/packages/kusama/src/assetHubKusama.proxy.e2e.test.ts +++ b/packages/kusama/src/assetHubKusama.proxy.e2e.test.ts @@ -2,5 +2,10 @@ import { assetHubKusama } from '@e2e-test/networks/chains' import { AssetHubProxyTypes, fullProxyE2ETests, registerTestTree } from '@e2e-test/shared' registerTestTree( - fullProxyE2ETests(assetHubKusama, { testSuiteName: 'Kusama AssetHub Proxy', addressEncoding: 2 }, AssetHubProxyTypes), + fullProxyE2ETests( + assetHubKusama, + { testSuiteName: 'Kusama AssetHub Proxy', addressEncoding: 2 }, + AssetHubProxyTypes, + true, + ), ) diff --git a/packages/kusama/src/coretimeKusama.proxy.e2e.test.ts b/packages/kusama/src/coretimeKusama.proxy.e2e.test.ts index cf5c14f60..6c23f3e5e 100644 --- a/packages/kusama/src/coretimeKusama.proxy.e2e.test.ts +++ b/packages/kusama/src/coretimeKusama.proxy.e2e.test.ts @@ -2,5 +2,10 @@ import { coretimeKusama } from '@e2e-test/networks/chains' import { CoretimeProxyTypes, fullProxyE2ETests, registerTestTree } from '@e2e-test/shared' registerTestTree( - fullProxyE2ETests(coretimeKusama, { testSuiteName: 'Kusama Coretime Proxy', addressEncoding: 2 }, CoretimeProxyTypes), + fullProxyE2ETests( + coretimeKusama, + { testSuiteName: 'Kusama Coretime Proxy', addressEncoding: 2 }, + CoretimeProxyTypes, + true, + ), ) diff --git a/packages/kusama/src/kusama.proxy.e2e.test.ts b/packages/kusama/src/kusama.proxy.e2e.test.ts index bf41905ca..6cbff3967 100644 --- a/packages/kusama/src/kusama.proxy.e2e.test.ts +++ b/packages/kusama/src/kusama.proxy.e2e.test.ts @@ -1,4 +1,6 @@ import { kusama } from '@e2e-test/networks/chains' import { fullProxyE2ETests, KusamaProxyTypes, registerTestTree } from '@e2e-test/shared' -registerTestTree(fullProxyE2ETests(kusama, { testSuiteName: 'Kusama Proxy', addressEncoding: 2 }, KusamaProxyTypes)) +registerTestTree( + fullProxyE2ETests(kusama, { testSuiteName: 'Kusama Proxy', addressEncoding: 2 }, KusamaProxyTypes, false), +) diff --git a/packages/kusama/src/peopleKusama.proxy.e2e.test.ts b/packages/kusama/src/peopleKusama.proxy.e2e.test.ts index df70a5e58..2a79032f5 100644 --- a/packages/kusama/src/peopleKusama.proxy.e2e.test.ts +++ b/packages/kusama/src/peopleKusama.proxy.e2e.test.ts @@ -2,5 +2,10 @@ import { peopleKusama } from '@e2e-test/networks/chains' import { fullProxyE2ETests, PeopleProxyTypes, registerTestTree } from '@e2e-test/shared' registerTestTree( - fullProxyE2ETests(peopleKusama, { testSuiteName: 'People Kusama Proxy', addressEncoding: 2 }, PeopleProxyTypes), + fullProxyE2ETests( + peopleKusama, + { testSuiteName: 'People Kusama Proxy', addressEncoding: 2 }, + PeopleProxyTypes, + false, + ), ) diff --git a/packages/networks/src/chains/people.ts b/packages/networks/src/chains/people.ts index 8302292a1..0edc4d4f3 100644 --- a/packages/networks/src/chains/people.ts +++ b/packages/networks/src/chains/people.ts @@ -47,7 +47,7 @@ export const peoplePolkadot = defineChain({ export const peopleKusama = defineChain({ name: 'peopleKusama', - endpoint: 'wss://kusama-people-rpc.polkadot.io', + endpoint: 'wss://people-kusama.dotters.network', paraId: 1004, custom: custom.peopleKusama, initStorages: getInitStorages(custom.peopleKusama), diff --git a/packages/polkadot/src/assetHubPolkadot.proxy.e2e.test.ts b/packages/polkadot/src/assetHubPolkadot.proxy.e2e.test.ts index 6949f0d78..a9540c44c 100644 --- a/packages/polkadot/src/assetHubPolkadot.proxy.e2e.test.ts +++ b/packages/polkadot/src/assetHubPolkadot.proxy.e2e.test.ts @@ -6,5 +6,6 @@ registerTestTree( assetHubPolkadot, { testSuiteName: 'Polkadot AssetHub Proxy', addressEncoding: 0 }, AssetHubProxyTypes, + false, ), ) diff --git a/packages/polkadot/src/collectivesPolkadot.proxy.e2e.test.ts b/packages/polkadot/src/collectivesPolkadot.proxy.e2e.test.ts index c31257924..7904084b3 100644 --- a/packages/polkadot/src/collectivesPolkadot.proxy.e2e.test.ts +++ b/packages/polkadot/src/collectivesPolkadot.proxy.e2e.test.ts @@ -6,5 +6,6 @@ registerTestTree( collectivesPolkadot, { testSuiteName: 'Polkadot Collectives Proxy', addressEncoding: 0 }, CollectivesProxyTypes, + false, ), ) diff --git a/packages/polkadot/src/coretimePolkadot.proxy.e2e.test.ts b/packages/polkadot/src/coretimePolkadot.proxy.e2e.test.ts index a6706aa90..c44f4d73e 100644 --- a/packages/polkadot/src/coretimePolkadot.proxy.e2e.test.ts +++ b/packages/polkadot/src/coretimePolkadot.proxy.e2e.test.ts @@ -6,5 +6,6 @@ registerTestTree( coretimePolkadot, { testSuiteName: 'Polkadot Coretime Proxy', addressEncoding: 0 }, CoretimeProxyTypes, + false, ), ) diff --git a/packages/polkadot/src/peoplePolkadot.proxy.e2e.test.ts b/packages/polkadot/src/peoplePolkadot.proxy.e2e.test.ts index 9d08d43ca..23db8075d 100644 --- a/packages/polkadot/src/peoplePolkadot.proxy.e2e.test.ts +++ b/packages/polkadot/src/peoplePolkadot.proxy.e2e.test.ts @@ -2,5 +2,10 @@ import { peoplePolkadot } from '@e2e-test/networks/chains' import { fullProxyE2ETests, PeopleProxyTypes, registerTestTree } from '@e2e-test/shared' registerTestTree( - fullProxyE2ETests(peoplePolkadot, { testSuiteName: 'People Polkadot Proxy', addressEncoding: 0 }, PeopleProxyTypes), + fullProxyE2ETests( + peoplePolkadot, + { testSuiteName: 'People Polkadot Proxy', addressEncoding: 0 }, + PeopleProxyTypes, + false, + ), ) diff --git a/packages/polkadot/src/polkadot.proxy.e2e.test.ts b/packages/polkadot/src/polkadot.proxy.e2e.test.ts index 89d2eee13..e2859148b 100644 --- a/packages/polkadot/src/polkadot.proxy.e2e.test.ts +++ b/packages/polkadot/src/polkadot.proxy.e2e.test.ts @@ -2,5 +2,5 @@ import { polkadot } from '@e2e-test/networks/chains' import { fullProxyE2ETests, PolkadotProxyTypes, registerTestTree } from '@e2e-test/shared' registerTestTree( - fullProxyE2ETests(polkadot, { testSuiteName: 'Polkadot Proxy', addressEncoding: 0 }, PolkadotProxyTypes), + fullProxyE2ETests(polkadot, { testSuiteName: 'Polkadot Proxy', addressEncoding: 0 }, PolkadotProxyTypes, false), ) diff --git a/packages/shared/src/helpers/index.ts b/packages/shared/src/helpers/index.ts index 8533d21e1..47f20db56 100644 --- a/packages/shared/src/helpers/index.ts +++ b/packages/shared/src/helpers/index.ts @@ -336,3 +336,17 @@ export async function setValidatorsStorage( }, }) } + +export async function getBlockNumber( + client: { + api: ApiPromise + }, + useRelayBlockNumber: boolean, +): Promise { + if (useRelayBlockNumber && client.api.query.parachainSystem) { + const validationData = (await client.api.query.parachainSystem.validationData()) as any + return validationData.unwrap().relayParentNumber.toNumber() + } else { + return (await client.api.rpc.chain.getHeader()).number.toNumber() + } +} diff --git a/packages/shared/src/proxy.ts b/packages/shared/src/proxy.ts index ddfc9d80d..f4562fadf 100644 --- a/packages/shared/src/proxy.ts +++ b/packages/shared/src/proxy.ts @@ -23,7 +23,7 @@ import { assert, expect } from 'vitest' import BN from 'bn.js' import { match } from 'ts-pattern' -import { check, checkEvents } from './helpers/index.js' +import { check, checkEvents, getBlockNumber } from './helpers/index.js' /// ------- /// Helpers @@ -1558,7 +1558,12 @@ export async function addRemoveProxyTest< export async function createKillPureProxyTest< TCustom extends Record | undefined, TInitStorages extends Record> | undefined, ->(chain: Chain, addressEncoding: number, proxyTypes: Record) { +>( + chain: Chain, + addressEncoding: number, + proxyTypes: Record, + useRelayBlockNumber: boolean, +) { const [client] = await setupNetworks(chain) const alice = defaultAccountsSr25519.alice @@ -1639,7 +1644,8 @@ export async function createKillPureProxyTest< // To call `proxy.killPure`, the block number of `proxy.createPure` is required. // The current block number will have been the block in which the batch transaction containing all of the // `createPure` extrinsics were executed. - const currBlockNumber = (await client.api.rpc.chain.getHeader()).number.toNumber() + + const currBlockNumber = await getBlockNumber(client, useRelayBlockNumber) // For every pure proxy type, create a `proxy.proxy` call, containing a `proxy.killPure` extrinsic. // Note that in the case of pure proxies, the account which called `proxy.createPure` becomes the delegate, @@ -1656,9 +1662,11 @@ export async function createKillPureProxyTest< // `proxy.killPure` does not emit any events. // #7995 will fix this, eliciting a failed test run sometime in the future. - await checkEvents(proxyEvents, 'proxy').toMatchSnapshot( - `events when killing pure proxy of type ${proxyTypeIx} for Alice`, - ) + await checkEvents(proxyEvents, 'proxy') + .redact({ + removeKeys: /pure/, + }) + .toMatchSnapshot(`events when killing pure proxy of type ${proxyTypeIx} for Alice`) } // Check that the pure proxies were killed @@ -1757,7 +1765,7 @@ export async function proxyCallTest< export async function proxyAnnouncementLifecycleTest< TCustom extends Record | undefined, TInitStorages extends Record> | undefined, ->(chain: Chain, addressEncoding: number) { +>(chain: Chain, addressEncoding: number, useRelayBlockNumber: boolean) { const [client] = await setupNetworks(chain) const alice = defaultAccountsSr25519.alice @@ -1790,7 +1798,7 @@ export async function proxyAnnouncementLifecycleTest< await checkEvents(announcementEvents, 'proxy').toMatchSnapshot('events when Bob announces a proxy call') - const currBlockNumber = (await client.api.rpc.chain.getHeader()).number.toNumber() + const currBlockNumber = await getBlockNumber(client, useRelayBlockNumber) const announcementObject = { real: encodeAddress(alice.address, addressEncoding), callHash: transferCall.method.hash.toHex(), @@ -1837,8 +1845,10 @@ export async function proxyAnnouncementLifecycleTest< announcements = await client.api.query.proxy.announcements(bob.address) expect(announcements[0].length).toBe(1) - announcementObject.height = currBlockNumber + 2 - await check(announcements[0][0]).toMatchObject(announcementObject) + await check(announcements[0][0]).toMatchObject({ + ...announcementObject, + height: currBlockNumber + 4, + }) expect(announcements[1].eq(announcementDepositTotal)).toBe(true) // Bob cancels the intent themselves @@ -1886,6 +1896,7 @@ export function baseProxyE2ETests< chain: Chain, testConfig: { testSuiteName: string; addressEncoding: number }, proxyTypes: Record, + useRelayBlockNumber: boolean, ): RootTestTree { return { kind: 'describe', @@ -1899,7 +1910,8 @@ export function baseProxyE2ETests< { kind: 'test', label: 'create and kill pure proxies', - testFn: async () => await createKillPureProxyTest(chain, testConfig.addressEncoding, proxyTypes), + testFn: async () => + await createKillPureProxyTest(chain, testConfig.addressEncoding, proxyTypes, useRelayBlockNumber), }, { kind: 'test', @@ -1909,7 +1921,8 @@ export function baseProxyE2ETests< { kind: 'test', label: 'proxy announcement lifecycle test', - testFn: async () => await proxyAnnouncementLifecycleTest(chain, testConfig.addressEncoding), + testFn: async () => + await proxyAnnouncementLifecycleTest(chain, testConfig.addressEncoding, useRelayBlockNumber), }, ], } @@ -1922,11 +1935,12 @@ export function fullProxyE2ETests< chain: Chain, testConfig: { testSuiteName: string; addressEncoding: number }, proxyTypes: Record, + useRelayBlockNumber: boolean, ): RootTestTree { const allowedFilteringTests = proxyCallFilteringTestTree(chain, proxyTypes, ProxyCallFilteringTestType.Permitted) const forbiddenFilteringTests = proxyCallFilteringTestTree(chain, proxyTypes, ProxyCallFilteringTestType.Forbidden) - const baseTestTree = baseProxyE2ETests(chain, testConfig, proxyTypes) + const baseTestTree = baseProxyE2ETests(chain, testConfig, proxyTypes, useRelayBlockNumber) baseTestTree.children.push(allowedFilteringTests, forbiddenFilteringTests) return baseTestTree