From 8ce7ab138fcf7bdc8ca78e6dd98bee2d6eef8cff Mon Sep 17 00:00:00 2001 From: giuseppere Date: Tue, 22 Sep 2026 09:39:59 +0200 Subject: [PATCH] Upgrade testnet manifests --- deployments/paseo-assethub/420420417.json | 2 +- deployments/previewnet/420420417.json | 1 + deployments/previewnet/README.md | 18 ++++++++++++++++++ scripts/js/release-metadata.mjs | 18 ++++++++++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 deployments/previewnet/420420417.json create mode 100644 deployments/previewnet/README.md diff --git a/deployments/paseo-assethub/420420417.json b/deployments/paseo-assethub/420420417.json index bbb35225e..968901c10 100644 --- a/deployments/paseo-assethub/420420417.json +++ b/deployments/paseo-assethub/420420417.json @@ -1 +1 @@ -{"Create3Factory":"0x8533c79E058c5a6489CAFeCA86dc600E029D75f5","DotnsContentResolver":"0x7F74D7CD50f5a834270E2ad395a01b01891AB37d","DotnsCostModelRegistry":"0x8bfd1f0957e73716732e725802f13830B5682da4","DotnsFlatPricing":"0xD839B281dF72Df44fF275305E72cAEEc0fDAA648","DotnsNameEscrow":"0x4881Afb78e7C908cAe818168B926229D93376520","DotnsNameWhitelist":"0x420166cD67Ca0233094E492a4BbA67045eD7C38C","DotnsPopController":"0xCC932348606cc1f3318cADeC5A5Cd2CA447f8a4b","DotnsPopLens":"0xAE374b07c7e6f473CBa21d57e36AC15C631Abc51","DotnsPopResolver":"0xDaC984884EcA8Fc44011f1D6C49B27828390A72B","DotnsProtocolRegistry":"0xD19e3D0C97CF501125a04A97405e3e6592fa846E","DotnsRegistrar":"0x4f06E818Ba3d987704fd91cf3d868E4b019106Ab","DotnsRegistrarController":"0xBdaA01bD1bA67d709F2b1fF286Da0d854977EA30","DotnsRegistry":"0xf34054fd76BbF85f216cf9908226D5f0A72E50CA","DotnsResolver":"0xbd1165E549DF96F083c0A16f61590927bC187009","DotnsReverseResolver":"0xee3883d7eB60Ee9BCD7F3bcD8f2f05302A9Cc035","LabelStoreBeacon":"0xb57Ebc2e7085616d4906D1fE49af1cE13f7dffeF","Multicall3":"0xB4468000abD87D3c56cbFBd153161223D7b109e5","PopRules":"0x747B456bE03aec0b42bd85C51513730FBD45DA31","StoreFactory":"0x709A027F446a9e2a4BB9cb9a9c754435b19e32B7","UserStoreBeacon":"0xb7C995601679840d36F37E86DB2d7dF30797eC5C","_seed":"0x0000000000000000000000000000000000000000"} +{"Create3Factory":"0x8533c79E058c5a6489CAFeCA86dc600E029D75f5","DotnsContentResolver":"0x7F74D7CD50f5a834270E2ad395a01b01891AB37d","DotnsCostModelRegistry":"0x8bfd1f0957e73716732e725802f13830B5682da4","DotnsFlatPricing":"0xD839B281dF72Df44fF275305E72cAEEc0fDAA648","DotnsNameEscrow":"0x4881Afb78e7C908cAe818168B926229D93376520","DotnsNameWhitelist":"0x420166cD67Ca0233094E492a4BbA67045eD7C38C","DotnsPopController":"0xCC932348606cc1f3318cADeC5A5Cd2CA447f8a4b","DotnsPopLens":"0xAE374b07c7e6f473CBa21d57e36AC15C631Abc51","DotnsPopResolver":"0xDaC984884EcA8Fc44011f1D6C49B27828390A72B","DotnsProtocolRegistry":"0xD19e3D0C97CF501125a04A97405e3e6592fa846E","DotnsRegistrar":"0x4f06E818Ba3d987704fd91cf3d868E4b019106Ab","DotnsRegistrarController":"0xBdaA01bD1bA67d709F2b1fF286Da0d854977EA30","DotnsRegistry":"0xf34054fd76BbF85f216cf9908226D5f0A72E50CA","DotnsResolver":"0xbd1165E549DF96F083c0A16f61590927bC187009","DotnsReverseResolver":"0xee3883d7eB60Ee9BCD7F3bcD8f2f05302A9Cc035","LabelStoreBeacon":"0x2227d9807F5A71332Aaa0640643030f2A3bf84cD","LabelStoreBeaconLegacy":"0xb57Ebc2e7085616d4906D1fE49af1cE13f7dffeF","Multicall3":"0xB4468000abD87D3c56cbFBd153161223D7b109e5","PopRules":"0x747B456bE03aec0b42bd85C51513730FBD45DA31","StoreFactory":"0x99605a926FcB40aB520F659c6505E5ff862771f6","StoreFactoryLegacy":"0x709A027F446a9e2a4BB9cb9a9c754435b19e32B7","UserStoreBeacon":"0x3d1Ca165f7A5e387C2df02DB2FadD3149c1C72ad","UserStoreBeaconLegacy":"0xb7C995601679840d36F37E86DB2d7dF30797eC5C","_seed":"0x0000000000000000000000000000000000000000"} diff --git a/deployments/previewnet/420420417.json b/deployments/previewnet/420420417.json new file mode 100644 index 000000000..2f36c9126 --- /dev/null +++ b/deployments/previewnet/420420417.json @@ -0,0 +1 @@ +{"Create3Factory":"0x8533c79E058c5a6489CAFeCA86dc600E029D75f5","DotnsContentResolver":"0x7F74D7CD50f5a834270E2ad395a01b01891AB37d","DotnsCostModelRegistry":"0x8bfd1f0957e73716732e725802f13830B5682da4","DotnsFlatPricing":"0xD839B281dF72Df44fF275305E72cAEEc0fDAA648","DotnsNameEscrow":"0x4881Afb78e7C908cAe818168B926229D93376520","DotnsNameWhitelist":"0x420166cD67Ca0233094E492a4BbA67045eD7C38C","DotnsPopController":"0xCC932348606cc1f3318cADeC5A5Cd2CA447f8a4b","DotnsPopLens":"0xfe5A45f7fD58D1A6FE09455DB799405b1dcE9411","DotnsPopResolver":"0xDaC984884EcA8Fc44011f1D6C49B27828390A72B","DotnsProtocolRegistry":"0xD19e3D0C97CF501125a04A97405e3e6592fa846E","DotnsRegistrar":"0x4f06E818Ba3d987704fd91cf3d868E4b019106Ab","DotnsRegistrarController":"0xBdaA01bD1bA67d709F2b1fF286Da0d854977EA30","DotnsRegistry":"0xf34054fd76BbF85f216cf9908226D5f0A72E50CA","DotnsResolver":"0xbd1165E549DF96F083c0A16f61590927bC187009","DotnsReverseResolver":"0xee3883d7eB60Ee9BCD7F3bcD8f2f05302A9Cc035","LabelStoreBeacon":"0x2227d9807F5A71332Aaa0640643030f2A3bf84cD","Multicall3":"0xB4468000abD87D3c56cbFBd153161223D7b109e5","PopRules":"0x747B456bE03aec0b42bd85C51513730FBD45DA31","StoreFactory":"0x99605a926FcB40aB520F659c6505E5ff862771f6","UserStoreBeacon":"0x3d1Ca165f7A5e387C2df02DB2FadD3149c1C72ad"} diff --git a/deployments/previewnet/README.md b/deployments/previewnet/README.md new file mode 100644 index 000000000..420ca9599 --- /dev/null +++ b/deployments/previewnet/README.md @@ -0,0 +1,18 @@ +# previewnet + +The Product Preview Network's Asset Hub (`wss://previewnet.substrate.dev/asset-hub`, +ETH RPC `https://previewnet.substrate.dev/eth-rpc`), TLD `.dot`. Deployed from a v0.8.0 +genesis, so every address matches the fresh-deploy set in `deployments/expected.json`. + +The chain id is `420420417`, the same as `paseo-assethub`: pallet-revive testnets share it, +so the network folder, not the chain id, is what identifies a deployment. The two manifests +differ where their histories do: a network upgraded in place carries `*Legacy` entries for +addresses its upgrades superseded, and can hold contracts deployed before the current set. + +This network is wiped and redeployed periodically; verify against the chain before relying +on this file after a wipe: + +```bash +node scripts/js/release-metadata.mjs verify --network previewnet \ + --rpc https://previewnet.substrate.dev/eth-rpc --tag v0.8.0 +``` diff --git a/scripts/js/release-metadata.mjs b/scripts/js/release-metadata.mjs index 0f48deb63..5fd2975b3 100644 --- a/scripts/js/release-metadata.mjs +++ b/scripts/js/release-metadata.mjs @@ -637,6 +637,15 @@ function verify(args) { rpc, ]); if (declared === ZERO_HASH) { + // A key that is tolerated unset is also tolerated undeclared. Such keys are outside + // the declared release surface, so the declaration pass never writes a codehash for + // them; a network whose genesis predates the current policy can still have one set, + // and that combination (set, no code identity) is expected there. + if (UNSET_TOLERATED[key]) { + resolved.add(address.toLowerCase()); + console.log(` skip ${key} ${address} (${label}: no declaration, ${UNSET_TOLERATED[key]})`); + continue; + } problems.push(`key '${key}' (${label}) has no declared codehash`); continue; } @@ -669,6 +678,15 @@ function verify(args) { const notExpected = new Set(unpointed); for (const [address, label] of byAddress) { if (!resolved.has(address) && !notExpected.has(address)) { + // A `*Legacy` entry records an address that became stale or unused after an in-place + // upgrade: when a contract moves to a new address, the outgoing one keeps its manifest + // entry under the `Legacy` suffix instead of being erased, because live state can keep + // depending on it after nothing points at it. Unkeyed by design, so the reverse check + // skips it instead of reading it as an orphan. + if (label.endsWith("Legacy")) { + console.log(` skip ${label} ${contracts[label]} (superseded deployment, kept for the beacon upgrade path)`); + continue; + } problems.push(`${label} ${contracts[label]} is in the manifest but no key points at it`); } }