bulletin-deploy 0.7.28 → 0.7.30-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/assets/environments.json +34 -30
  2. package/dist/bug-report.js +4 -4
  3. package/dist/{chunk-2VAUMZB2.js → chunk-7Y7RDOGT.js} +39 -8
  4. package/dist/{chunk-BMAEWZYV.js → chunk-AFBOKCCQ.js} +3 -3
  5. package/dist/{chunk-UY6S4E3A.js → chunk-C2OHYVVV.js} +3 -3
  6. package/dist/{chunk-23U57PZI.js → chunk-ELR4BB37.js} +1 -1
  7. package/dist/{chunk-HZKRLQLG.js → chunk-GL2HHK4G.js} +34 -30
  8. package/dist/{chunk-EIP3OX6G.js → chunk-IAZPLMVV.js} +58 -7
  9. package/dist/{chunk-5VZQ2KSU.js → chunk-JCOZV25R.js} +18 -15
  10. package/dist/{chunk-IDYGYIMH.js → chunk-LHLCPDGL.js} +1 -1
  11. package/dist/{chunk-VS36INHV.js → chunk-LM64HBVK.js} +5 -1
  12. package/dist/{chunk-RDTUUXZM.js → chunk-M45PUARJ.js} +3 -3
  13. package/dist/{chunk-DCZYQCEG.js → chunk-MKB5W6TK.js} +1 -1
  14. package/dist/{chunk-5OEGCTMJ.js → chunk-O232DOVQ.js} +115 -62
  15. package/dist/{chunk-T7EEVWNU.js → chunk-SI2ZUOYD.js} +5 -5
  16. package/dist/chunk-SLE4P6MO.js +39 -0
  17. package/dist/{chunk-B6MBXUCT.js → chunk-UZHRNGAC.js} +2 -2
  18. package/dist/chunk-XAB7WM3S.js +90 -0
  19. package/dist/{chunk-GSATPVTP.js → chunk-ZUOLBIZS.js} +1 -1
  20. package/dist/chunk-probe.js +3 -3
  21. package/dist/deploy.d.ts +3 -1
  22. package/dist/deploy.js +11 -9
  23. package/dist/dotns.d.ts +19 -2
  24. package/dist/dotns.js +7 -5
  25. package/dist/environments.js +1 -1
  26. package/dist/index.d.ts +1 -0
  27. package/dist/index.js +10 -10
  28. package/dist/manifest/publish.js +10 -10
  29. package/dist/memory-report.js +2 -2
  30. package/dist/merkle.js +9 -9
  31. package/dist/personhood/bind-paid-alias.d.ts +1 -1
  32. package/dist/personhood/bind-paid-alias.js +3 -2
  33. package/dist/personhood/bind-personal-id.js +2 -2
  34. package/dist/personhood/bootstrap.d.ts +7 -0
  35. package/dist/personhood/bootstrap.js +29 -17
  36. package/dist/personhood/chain-prereqs.d.ts +76 -0
  37. package/dist/personhood/chain-prereqs.js +17 -0
  38. package/dist/personhood/claim-pgas.d.ts +33 -2
  39. package/dist/personhood/claim-pgas.js +4 -2
  40. package/dist/personhood/constants.d.ts +5 -5
  41. package/dist/personhood/constants.js +3 -3
  42. package/dist/personhood/member-key.js +2 -2
  43. package/dist/personhood/people-client.js +5 -5
  44. package/dist/personhood/proof-validity.d.ts +41 -0
  45. package/dist/personhood/proof-validity.js +12 -0
  46. package/dist/personhood/reprove.d.ts +1 -1
  47. package/dist/personhood/reprove.js +10 -13
  48. package/dist/pool.js +3 -3
  49. package/dist/run-state.js +1 -1
  50. package/dist/telemetry.d.ts +43 -1
  51. package/dist/telemetry.js +4 -2
  52. package/dist/version-check.js +3 -3
  53. package/package.json +3 -3
@@ -5,25 +5,28 @@
5
5
  "name": "Preview",
6
6
  "network": "testnet",
7
7
  "description": "Product Preview net, used by Product Teams",
8
+ "e2eEligible": true,
8
9
  "backend": "https://polkadot-app-stg.parity.io/",
9
10
  "ipfs": "https://previewnet.substrate.dev",
10
11
  "autoAccountMapping": true,
12
+ "nativeToEthRatio": 100000000,
11
13
  "registerStorageDeposit": 2000000000000,
12
14
  "contracts": {
13
- "DOTNS_PROTOCOL_REGISTRY": "0xc07A2F24387DA27283CD87b9F24573b74C9e0c9b",
14
- "DOTNS_REGISTRAR": "0x6c40817cdb96Ab57A4d9E9fa21D0eEa8307BDDE8",
15
- "DOTNS_REGISTRAR_CONTROLLER": "0x732C38082CFAebed505A46e4e2D6414154694580",
16
- "DOTNS_REGISTRY": "0xE6c0fB6D5492666144A8a4a015E25a98ACa604cA",
17
- "DOTNS_POP_CONTROLLER": "0xfE1e25E8d521CaaA8055301CA61Ec3557263Ca76",
18
- "DOTNS_RESOLVER": "0x5E174c960F5276Bd0387F200cE42f98fe927E220",
19
- "DOTNS_CONTENT_RESOLVER": "0x108376A5B6DDc6BE3201C94Fd169BE444f220076",
20
- "DOTNS_REVERSE_RESOLVER": "0xd5C3dcC7CE44593fEB1D72017A3539c4dB14e54a",
21
- "DOTNS_POP_RESOLVER": "0x29Ace5d2C57109c82A30Db175e645880572c6369",
22
- "DOTNS_NAME_ESCROW": "0x034b072eB8AF5cEfd820390bfe239bD911174ad2",
23
- "POP_RULES": "0x5f2Dd23Ee3ceD39B293701ccE8355DdDd83Cd324",
24
- "STORE_FACTORY": "0x9C38DFec452391696a8f0D3daFE71F7Eb29e08f8",
25
- "LABEL_STORE_BEACON": "0x6B609A89Fec9898B441E17f1618670bdD08c437e",
26
- "USER_STORE_BEACON": "0xbeb79e8BB2bC610822e8748e5439B9D890d88FF5"
15
+ "DOTNS_PROTOCOL_REGISTRY": "0x984F17a9077808F4B7e127F76806A1D59546B5B6",
16
+ "DOTNS_REGISTRAR": "0x061273AeF34e8ab9Ca08E199d7440E2639Fc2088",
17
+ "DOTNS_REGISTRAR_CONTROLLER": "0xC0c21ca6302884572E61d69D5bf3E271Acf39B23",
18
+ "DOTNS_REGISTRY": "0x5622CA75C75726Da13ae46C69127C07c87538633",
19
+ "DOTNS_POP_CONTROLLER": "0xae2c63b921Bc9DC30C149A8FA462fd3efA53D1F4",
20
+ "DOTNS_RESOLVER": "0x823f39E7a4126669be53211FFbCF27e55b3274C6",
21
+ "DOTNS_CONTENT_RESOLVER": "0xBD003d5Dd04E68aC60d529a46AEfBdEf8941868C",
22
+ "DOTNS_REVERSE_RESOLVER": "0xA347059298aA171b3E744538F7043e9AAaAa95E0",
23
+ "DOTNS_POP_RESOLVER": "0xeD11Bb5064fAAcb0A91e52dac2272E89856F2F6a",
24
+ "DOTNS_NAME_ESCROW": "0xb7E39199f13aCf7e90cCf67b980aC3ef0E2C4Fbe",
25
+ "POP_RULES": "0xF209a15e8a10D208bb4d3e3c56D9EB73a5934C26",
26
+ "STORE_FACTORY": "0x4BEFaB5de968183524b1eBd2FAec9C68Cdc696Fd",
27
+ "LABEL_STORE_BEACON": "0x11f324597d850d626d6406713808Ed854dA00a6b",
28
+ "USER_STORE_BEACON": "0xaC2209aFc366505d10Fd27d27030EB8C5E54874e",
29
+ "PUBLISHER": "0xa616254fd98724c7a3d295c98ca393a486096b68"
27
30
  }
28
31
  },
29
32
  {
@@ -50,6 +53,7 @@
50
53
  "name": "Paseo Next v2",
51
54
  "network": "testnet",
52
55
  "description": "Next iteration of the Paseo Next testnet",
56
+ "e2eEligible": true,
53
57
  "backend": "https://identity-backend-next.parity-testnet.parity.io",
54
58
  "ipfs": "https://paseo-bulletin-next-ipfs.polkadot.io",
55
59
  "docsUrl": "https://sre.teleport.parity.io/environments/paseo-next/",
@@ -64,22 +68,22 @@
64
68
  "stateAwareGuidance": true
65
69
  },
66
70
  "contracts": {
67
- "DOTNS_PROTOCOL_REGISTRY": "0x5Caef84563fc980178e28417414aa65bA32f6B4e",
68
- "DOTNS_REGISTRAR": "0x885b8085bA92A31c4ef52076f77379E647ECC399",
69
- "DOTNS_REGISTRAR_CONTROLLER": "0x320b72c6e70D5a631d835FfD95915B288b26E6Be",
70
- "DOTNS_REGISTRY": "0x8877344A885682523B4613779C95688ed7037BfD",
71
- "DOTNS_POP_CONTROLLER": "0xaC8A28b60832E6E22bC19bD9Ee273C008576Bde4",
72
- "ROOT_GATEWAY_DISPATCHER": "0xF470Dd693ED557b33f8775476776532D99Fb60d9",
73
- "DOTNS_RESOLVER": "0x0cCdfea1a5E62DE116BF6cA79D397798d49e351E",
74
- "DOTNS_CONTENT_RESOLVER": "0x2c9FF5D9136DBE5814C7B4FDbeDC15273a776663",
75
- "DOTNS_REVERSE_RESOLVER": "0x025D5c4b10bD9723DeA2F4518aeD5B761DE08CDc",
76
- "DOTNS_POP_RESOLVER": "0xB992e74cBeaf1Fd71310f85D1944d3A0c15C4c73",
77
- "DOTNS_NAME_ESCROW": "0x6F7068c04487a90BFB42b128B84231c252b3017a",
78
- "POP_RULES": "0x2002C1c15b88632Ad01c7770f6EbE1Ca05c8472E",
79
- "STORE_FACTORY": "0x0DE5De70d61cc6b44B45d6595afDe8dB9b55bc31",
80
- "LABEL_STORE_BEACON": "0xD033F7Ada687E8BC776928AB239505F9f0479Ce7",
81
- "USER_STORE_BEACON": "0x7eD9b7D137Fa535965048F93b3B0248fEd2fcd32",
82
- "PUBLISHER": "0x1307fc02d308f879a16b1ae3a49b4927aed53649"
71
+ "DOTNS_PROTOCOL_REGISTRY": "0x8F28419f4E32Bb0aA02e156A0543Ff253f126D7D",
72
+ "DOTNS_REGISTRAR": "0xf7Ad3F44F316C73E4a2b46b1ed48d376bCc9E639",
73
+ "DOTNS_REGISTRAR_CONTROLLER": "0x674b705268DAE369F0a7BE9cbaCDb928b8BA38C2",
74
+ "DOTNS_REGISTRY": "0xa1b2b939E82b2ecE55Bd8a0E283818BfC1CA6CDc",
75
+ "DOTNS_POP_CONTROLLER": "0x1c858C31497a7715C0D56A11208feB6b74FaB2aB",
76
+ "ROOT_GATEWAY_DISPATCHER": "0xd3F059FA65dA566B294b5d755a06054d4bE7ce7C",
77
+ "DOTNS_RESOLVER": "0xA8988eA083174ea94Ed1D686f0F073a10f65598D",
78
+ "DOTNS_CONTENT_RESOLVER": "0x8A26480b0B5Df3d4D9b95adc24a5Ecb33A5b8F64",
79
+ "DOTNS_REVERSE_RESOLVER": "0x259B9D8199c29d2EF132264ad05f8F74F3115A2E",
80
+ "DOTNS_POP_RESOLVER": "0xC9D511Eb80fD8B745DC5Be59aCF5d700271bC01e",
81
+ "DOTNS_NAME_ESCROW": "0x2Cb9899d91Ee575E8917958723F5E941b1BcC6A1",
82
+ "POP_RULES": "0x4909bFb3f4Fd86244abD6430fDfA0Ce5C91aD0c4",
83
+ "STORE_FACTORY": "0x692047C1477a017F287488E1c85F96Ca28C23fD8",
84
+ "LABEL_STORE_BEACON": "0x86ff9CE56C86bC3DfcaA7E316FB0Dd816e9fA2df",
85
+ "USER_STORE_BEACON": "0x6a7a938f72D39f949ee484a78c4C500514E2cb69",
86
+ "PUBLISHER": "0xa616254fd98724c7a3d295c98ca393a486096b68"
83
87
  }
84
88
  },
85
89
  {
@@ -9,10 +9,10 @@ import {
9
9
  offerBugReport,
10
10
  scrubSecrets,
11
11
  setDeployContext
12
- } from "./chunk-B6MBXUCT.js";
13
- import "./chunk-23U57PZI.js";
14
- import "./chunk-VS36INHV.js";
15
- import "./chunk-RDTUUXZM.js";
12
+ } from "./chunk-UZHRNGAC.js";
13
+ import "./chunk-ELR4BB37.js";
14
+ import "./chunk-LM64HBVK.js";
15
+ import "./chunk-M45PUARJ.js";
16
16
  export {
17
17
  buildCliFlagsSummary,
18
18
  buildLabels,
@@ -2,7 +2,7 @@ import {
2
2
  PEOPLE_MEMBER_IDENTIFIER_HEX,
3
3
  PGAS_ASSET_ID,
4
4
  PROOF_BYTES
5
- } from "./chunk-T7EEVWNU.js";
5
+ } from "./chunk-SI2ZUOYD.js";
6
6
  import {
7
7
  buildImplicationMessage,
8
8
  buildV5GeneralExtrinsic,
@@ -14,6 +14,7 @@ import {
14
14
  } from "./chunk-ZYVGHDMU.js";
15
15
 
16
16
  // src/personhood/claim-pgas.ts
17
+ import * as verifiable from "verifiablejs/nodejs";
17
18
  import { Enum } from "polkadot-api";
18
19
  var PgasClaimError = class extends Error {
19
20
  kind;
@@ -26,11 +27,6 @@ var PgasClaimError = class extends Error {
26
27
  }
27
28
  };
28
29
  var SECS_PER_DAY = 86400n;
29
- var IMPLICATION_EXCLUDE = /* @__PURE__ */ new Set([
30
- "AuthorizeCall",
31
- "AsPgas",
32
- "StorageWeightReclaim"
33
- ]);
34
30
  var PGAS_CONTEXT_PREFIX = new TextEncoder().encode("pop:gas:");
35
31
  function buildGasContext(day, slotIndex) {
36
32
  const out = new Uint8Array(32);
@@ -40,6 +36,20 @@ function buildGasContext(day, slotIndex) {
40
36
  dv.setUint32(12, slotIndex, true);
41
37
  return out;
42
38
  }
39
+ function buildImplicationExclude(pipelineOrder) {
40
+ const asPgasIdx = pipelineOrder.indexOf("AsPgas");
41
+ if (asPgasIdx < 0) {
42
+ throw new Error("AsPgas not in AH pipeline \u2014 wrong chain?");
43
+ }
44
+ return /* @__PURE__ */ new Set([
45
+ ...pipelineOrder.slice(0, asPgasIdx + 1),
46
+ // everything ≤ AsPgas
47
+ "AuthorizeCall",
48
+ // empty value+implicit, no-op
49
+ "StorageWeightReclaim"
50
+ // outer wrapper, no contribution
51
+ ]);
52
+ }
43
53
  function buildAsPgasClaimExtensionValue(proof, ringIndex, revision, day) {
44
54
  return Enum("Claim", {
45
55
  proof: bytesToHex(proof),
@@ -57,7 +67,8 @@ var claimPgas = async ({
57
67
  memberKey,
58
68
  buildRingProof,
59
69
  slotIndex = 0,
60
- progress
70
+ progress,
71
+ validateWithCommitment = defaultValidateWithCommitment
61
72
  }) => {
62
73
  const people = peopleUnsafeApi;
63
74
  const ah = ahUnsafeApi;
@@ -128,10 +139,11 @@ var claimPgas = async ({
128
139
  const innerTx = ah.tx.Pgas.claim_pgas({ slot_index: slotIndex, target });
129
140
  const callBytes = await innerTx.getEncodedData();
130
141
  const passEmpty = await capturePass(innerTx, void 0);
142
+ const implicationExclude = buildImplicationExclude(passEmpty.extensions.order);
131
143
  const msg = buildImplicationMessage(
132
144
  callBytes,
133
145
  passEmpty.extensions,
134
- IMPLICATION_EXCLUDE
146
+ implicationExclude
135
147
  );
136
148
  const { proof, alias } = await buildRingProof({
137
149
  ringExponent,
@@ -145,6 +157,15 @@ var claimPgas = async ({
145
157
  { kind: "ClientError" }
146
158
  );
147
159
  }
160
+ const rootBytes = latest.root instanceof Uint8Array ? latest.root : latest.root.asBytes();
161
+ try {
162
+ validateWithCommitment(ringExponent, proof, rootBytes, contextBytes, msg);
163
+ } catch (err) {
164
+ throw new PgasClaimError(
165
+ `validate_with_commitment failed locally \u2014 proof will be rejected by chain. proof=${proof.length}B context=${contextBytes.length}B commitment=${rootBytes.length}B. Cause: ${err instanceof Error ? err.message : String(err)}`,
166
+ { kind: "BadProof", cause: err }
167
+ );
168
+ }
148
169
  const asPgasValue = Enum("Claim", {
149
170
  proof: bytesToHex(proof),
150
171
  ring_index: ringIndex,
@@ -159,6 +180,15 @@ var claimPgas = async ({
159
180
  const amount = await ah.constants.Pgas.PgasClaimAmount();
160
181
  return { blockHash, amount, alias };
161
182
  };
183
+ var defaultValidateWithCommitment = (ringExponent, proof, commitment, context, message) => {
184
+ const fn = verifiable["validate_with_commitment"];
185
+ if (typeof fn !== "function") {
186
+ throw new Error(
187
+ "validate_with_commitment is not exported by the installed verifiablejs. Upgrade to verifiablejs@1.3.0-beta.4 or newer to enable local proof pre-flight. See docs-internal/dotns-bootstrap-handover.md \xA75."
188
+ );
189
+ }
190
+ return fn(ringExponent, proof, commitment, context, message);
191
+ };
162
192
  var capturePass = async (innerTx, asPgasValue) => {
163
193
  let captured = null;
164
194
  const sentinel = new Error("__pgas_capture_sentinel__");
@@ -279,6 +309,7 @@ var submitExtrinsic = (client, extrinsicHex, progress) => {
279
309
 
280
310
  export {
281
311
  PgasClaimError,
312
+ buildImplicationExclude,
282
313
  buildAsPgasClaimExtensionValue,
283
314
  claimPgas
284
315
  };
@@ -1,9 +1,9 @@
1
- import {
2
- MEMBER_ENTROPY_KEY
3
- } from "./chunk-T7EEVWNU.js";
4
1
  import {
5
2
  blake2b256Keyed
6
3
  } from "./chunk-UPWEOGLQ.js";
4
+ import {
5
+ MEMBER_ENTROPY_KEY
6
+ } from "./chunk-SI2ZUOYD.js";
7
7
 
8
8
  // src/personhood/member-key.ts
9
9
  import { mnemonicToEntropy } from "@polkadot-labs/hdkd-helpers";
@@ -6,15 +6,15 @@ import {
6
6
  resolveDotnsConnectOptions,
7
7
  storeDirectory,
8
8
  storeFile
9
- } from "./chunk-EIP3OX6G.js";
9
+ } from "./chunk-IAZPLMVV.js";
10
10
  import {
11
11
  DotNS
12
- } from "./chunk-5OEGCTMJ.js";
12
+ } from "./chunk-O232DOVQ.js";
13
13
  import {
14
14
  getPopSelfServeConfig,
15
15
  loadEnvironments,
16
16
  resolveEndpoints
17
- } from "./chunk-HZKRLQLG.js";
17
+ } from "./chunk-GL2HHK4G.js";
18
18
  import {
19
19
  NonRetryableError
20
20
  } from "./chunk-ZOC4GITL.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-VS36INHV.js";
3
+ } from "./chunk-LM64HBVK.js";
4
4
 
5
5
  // src/version-check.ts
6
6
  import { execSync, execFileSync } from "child_process";
@@ -14,25 +14,28 @@ var environments_default = {
14
14
  name: "Preview",
15
15
  network: "testnet",
16
16
  description: "Product Preview net, used by Product Teams",
17
+ e2eEligible: true,
17
18
  backend: "https://polkadot-app-stg.parity.io/",
18
19
  ipfs: "https://previewnet.substrate.dev",
19
20
  autoAccountMapping: true,
21
+ nativeToEthRatio: 1e8,
20
22
  registerStorageDeposit: 2e12,
21
23
  contracts: {
22
- DOTNS_PROTOCOL_REGISTRY: "0xc07A2F24387DA27283CD87b9F24573b74C9e0c9b",
23
- DOTNS_REGISTRAR: "0x6c40817cdb96Ab57A4d9E9fa21D0eEa8307BDDE8",
24
- DOTNS_REGISTRAR_CONTROLLER: "0x732C38082CFAebed505A46e4e2D6414154694580",
25
- DOTNS_REGISTRY: "0xE6c0fB6D5492666144A8a4a015E25a98ACa604cA",
26
- DOTNS_POP_CONTROLLER: "0xfE1e25E8d521CaaA8055301CA61Ec3557263Ca76",
27
- DOTNS_RESOLVER: "0x5E174c960F5276Bd0387F200cE42f98fe927E220",
28
- DOTNS_CONTENT_RESOLVER: "0x108376A5B6DDc6BE3201C94Fd169BE444f220076",
29
- DOTNS_REVERSE_RESOLVER: "0xd5C3dcC7CE44593fEB1D72017A3539c4dB14e54a",
30
- DOTNS_POP_RESOLVER: "0x29Ace5d2C57109c82A30Db175e645880572c6369",
31
- DOTNS_NAME_ESCROW: "0x034b072eB8AF5cEfd820390bfe239bD911174ad2",
32
- POP_RULES: "0x5f2Dd23Ee3ceD39B293701ccE8355DdDd83Cd324",
33
- STORE_FACTORY: "0x9C38DFec452391696a8f0D3daFE71F7Eb29e08f8",
34
- LABEL_STORE_BEACON: "0x6B609A89Fec9898B441E17f1618670bdD08c437e",
35
- USER_STORE_BEACON: "0xbeb79e8BB2bC610822e8748e5439B9D890d88FF5"
24
+ DOTNS_PROTOCOL_REGISTRY: "0x984F17a9077808F4B7e127F76806A1D59546B5B6",
25
+ DOTNS_REGISTRAR: "0x061273AeF34e8ab9Ca08E199d7440E2639Fc2088",
26
+ DOTNS_REGISTRAR_CONTROLLER: "0xC0c21ca6302884572E61d69D5bf3E271Acf39B23",
27
+ DOTNS_REGISTRY: "0x5622CA75C75726Da13ae46C69127C07c87538633",
28
+ DOTNS_POP_CONTROLLER: "0xae2c63b921Bc9DC30C149A8FA462fd3efA53D1F4",
29
+ DOTNS_RESOLVER: "0x823f39E7a4126669be53211FFbCF27e55b3274C6",
30
+ DOTNS_CONTENT_RESOLVER: "0xBD003d5Dd04E68aC60d529a46AEfBdEf8941868C",
31
+ DOTNS_REVERSE_RESOLVER: "0xA347059298aA171b3E744538F7043e9AAaAa95E0",
32
+ DOTNS_POP_RESOLVER: "0xeD11Bb5064fAAcb0A91e52dac2272E89856F2F6a",
33
+ DOTNS_NAME_ESCROW: "0xb7E39199f13aCf7e90cCf67b980aC3ef0E2C4Fbe",
34
+ POP_RULES: "0xF209a15e8a10D208bb4d3e3c56D9EB73a5934C26",
35
+ STORE_FACTORY: "0x4BEFaB5de968183524b1eBd2FAec9C68Cdc696Fd",
36
+ LABEL_STORE_BEACON: "0x11f324597d850d626d6406713808Ed854dA00a6b",
37
+ USER_STORE_BEACON: "0xaC2209aFc366505d10Fd27d27030EB8C5E54874e",
38
+ PUBLISHER: "0xa616254fd98724c7a3d295c98ca393a486096b68"
36
39
  }
37
40
  },
38
41
  {
@@ -59,6 +62,7 @@ var environments_default = {
59
62
  name: "Paseo Next v2",
60
63
  network: "testnet",
61
64
  description: "Next iteration of the Paseo Next testnet",
65
+ e2eEligible: true,
62
66
  backend: "https://identity-backend-next.parity-testnet.parity.io",
63
67
  ipfs: "https://paseo-bulletin-next-ipfs.polkadot.io",
64
68
  docsUrl: "https://sre.teleport.parity.io/environments/paseo-next/",
@@ -73,22 +77,22 @@ var environments_default = {
73
77
  stateAwareGuidance: true
74
78
  },
75
79
  contracts: {
76
- DOTNS_PROTOCOL_REGISTRY: "0x5Caef84563fc980178e28417414aa65bA32f6B4e",
77
- DOTNS_REGISTRAR: "0x885b8085bA92A31c4ef52076f77379E647ECC399",
78
- DOTNS_REGISTRAR_CONTROLLER: "0x320b72c6e70D5a631d835FfD95915B288b26E6Be",
79
- DOTNS_REGISTRY: "0x8877344A885682523B4613779C95688ed7037BfD",
80
- DOTNS_POP_CONTROLLER: "0xaC8A28b60832E6E22bC19bD9Ee273C008576Bde4",
81
- ROOT_GATEWAY_DISPATCHER: "0xF470Dd693ED557b33f8775476776532D99Fb60d9",
82
- DOTNS_RESOLVER: "0x0cCdfea1a5E62DE116BF6cA79D397798d49e351E",
83
- DOTNS_CONTENT_RESOLVER: "0x2c9FF5D9136DBE5814C7B4FDbeDC15273a776663",
84
- DOTNS_REVERSE_RESOLVER: "0x025D5c4b10bD9723DeA2F4518aeD5B761DE08CDc",
85
- DOTNS_POP_RESOLVER: "0xB992e74cBeaf1Fd71310f85D1944d3A0c15C4c73",
86
- DOTNS_NAME_ESCROW: "0x6F7068c04487a90BFB42b128B84231c252b3017a",
87
- POP_RULES: "0x2002C1c15b88632Ad01c7770f6EbE1Ca05c8472E",
88
- STORE_FACTORY: "0x0DE5De70d61cc6b44B45d6595afDe8dB9b55bc31",
89
- LABEL_STORE_BEACON: "0xD033F7Ada687E8BC776928AB239505F9f0479Ce7",
90
- USER_STORE_BEACON: "0x7eD9b7D137Fa535965048F93b3B0248fEd2fcd32",
91
- PUBLISHER: "0x1307fc02d308f879a16b1ae3a49b4927aed53649"
80
+ DOTNS_PROTOCOL_REGISTRY: "0x8F28419f4E32Bb0aA02e156A0543Ff253f126D7D",
81
+ DOTNS_REGISTRAR: "0xf7Ad3F44F316C73E4a2b46b1ed48d376bCc9E639",
82
+ DOTNS_REGISTRAR_CONTROLLER: "0x674b705268DAE369F0a7BE9cbaCDb928b8BA38C2",
83
+ DOTNS_REGISTRY: "0xa1b2b939E82b2ecE55Bd8a0E283818BfC1CA6CDc",
84
+ DOTNS_POP_CONTROLLER: "0x1c858C31497a7715C0D56A11208feB6b74FaB2aB",
85
+ ROOT_GATEWAY_DISPATCHER: "0xd3F059FA65dA566B294b5d755a06054d4bE7ce7C",
86
+ DOTNS_RESOLVER: "0xA8988eA083174ea94Ed1D686f0F073a10f65598D",
87
+ DOTNS_CONTENT_RESOLVER: "0x8A26480b0B5Df3d4D9b95adc24a5Ecb33A5b8F64",
88
+ DOTNS_REVERSE_RESOLVER: "0x259B9D8199c29d2EF132264ad05f8F74F3115A2E",
89
+ DOTNS_POP_RESOLVER: "0xC9D511Eb80fD8B745DC5Be59aCF5d700271bC01e",
90
+ DOTNS_NAME_ESCROW: "0x2Cb9899d91Ee575E8917958723F5E941b1BcC6A1",
91
+ POP_RULES: "0x4909bFb3f4Fd86244abD6430fDfA0Ce5C91aD0c4",
92
+ STORE_FACTORY: "0x692047C1477a017F287488E1c85F96Ca28C23fD8",
93
+ LABEL_STORE_BEACON: "0x86ff9CE56C86bC3DfcaA7E316FB0Dd816e9fA2df",
94
+ USER_STORE_BEACON: "0x6a7a938f72D39f949ee484a78c4C500514E2cb69",
95
+ PUBLISHER: "0xa616254fd98724c7a3d295c98ca393a486096b68"
92
96
  }
93
97
  },
94
98
  {
@@ -20,10 +20,10 @@ import {
20
20
  } from "./chunk-S7EM5VMW.js";
21
21
  import {
22
22
  setDeployContext
23
- } from "./chunk-B6MBXUCT.js";
23
+ } from "./chunk-UZHRNGAC.js";
24
24
  import {
25
25
  probeChunks
26
- } from "./chunk-DCZYQCEG.js";
26
+ } from "./chunk-MKB5W6TK.js";
27
27
  import {
28
28
  packSection
29
29
  } from "./chunk-C2TS5MER.js";
@@ -35,7 +35,7 @@ import {
35
35
  parseDomainName,
36
36
  popStatusName,
37
37
  verifyNonceAdvanced
38
- } from "./chunk-5OEGCTMJ.js";
38
+ } from "./chunk-O232DOVQ.js";
39
39
  import {
40
40
  derivePoolAccounts,
41
41
  detectTestnet,
@@ -43,7 +43,7 @@ import {
43
43
  fetchPoolAuthorizations,
44
44
  selectAccount,
45
45
  topUpBy
46
- } from "./chunk-GSATPVTP.js";
46
+ } from "./chunk-ZUOLBIZS.js";
47
47
  import {
48
48
  VERSION,
49
49
  captureWarning,
@@ -57,13 +57,13 @@ import {
57
57
  truncateAddress,
58
58
  withDeploySpan,
59
59
  withSpan
60
- } from "./chunk-VS36INHV.js";
60
+ } from "./chunk-LM64HBVK.js";
61
61
  import {
62
62
  DEFAULT_ENV_ID,
63
63
  getPopSelfServeConfig,
64
64
  loadEnvironments,
65
65
  resolveEndpoints
66
- } from "./chunk-HZKRLQLG.js";
66
+ } from "./chunk-GL2HHK4G.js";
67
67
  import {
68
68
  NonRetryableError
69
69
  } from "./chunk-ZOC4GITL.js";
@@ -281,6 +281,53 @@ async function getDirectProvider(mnemonic, derivationPath = "") {
281
281
  setDeployAttribute("deploy.signer.address", truncateAddress(ss58));
282
282
  return { client, unsafeApi, signer, ss58 };
283
283
  }
284
+ async function getSignerProvider(signer, ss58) {
285
+ const primary = BULLETIN_ENDPOINTS[0];
286
+ console.log(` Connecting to Bulletin: ${primary}`);
287
+ const client = createPolkadotClient(getWsProvider(
288
+ BULLETIN_ENDPOINTS,
289
+ { heartbeatTimeout: WS_HEARTBEAT_TIMEOUT_MS, onStatusChanged: makeBulletinStatusHandler(primary) }
290
+ ));
291
+ const unsafeApi = client.getUnsafeApi();
292
+ console.log(` Using external signer: ${ss58}`);
293
+ let [auth, currentBlock] = await Promise.all([
294
+ unsafeApi.query.TransactionStorage.Authorizations.getValue(Enum("Account", ss58)),
295
+ client.getFinalizedBlock()
296
+ ]);
297
+ let now = currentBlock.number;
298
+ if (!auth || Number(auth.expiration ?? 0) <= now) {
299
+ try {
300
+ await ensureAuthorized(unsafeApi, ss58, "external signer");
301
+ [auth, currentBlock] = await Promise.all([
302
+ unsafeApi.query.TransactionStorage.Authorizations.getValue(Enum("Account", ss58)),
303
+ client.getFinalizedBlock()
304
+ ]);
305
+ now = currentBlock.number;
306
+ } catch (e) {
307
+ client.destroy();
308
+ throw new NonRetryableError(`Account ${ss58} is not authorized for Bulletin storage and auto-authorization failed: ${e.message}`);
309
+ }
310
+ }
311
+ console.log(` Authorization: expires at block ${Number(auth?.expiration ?? 0)} (current: ${now})`);
312
+ setDeployAttribute("deploy.signer.mode", "external");
313
+ setDeployAttribute("deploy.signer.address", truncateAddress(ss58));
314
+ return { client, unsafeApi, signer, ss58 };
315
+ }
316
+ function __selectStorageProviderModeForTest(options) {
317
+ if (options.signer && options.signerAddress) return "signer";
318
+ if (options.mnemonic) return "direct";
319
+ return "pool";
320
+ }
321
+ function selectStorageReconnect(options) {
322
+ switch (__selectStorageProviderModeForTest(options)) {
323
+ case "signer":
324
+ return () => getSignerProvider(options.signer, options.signerAddress);
325
+ case "direct":
326
+ return () => getDirectProvider(options.mnemonic, options.derivationPath);
327
+ case "pool":
328
+ return () => getProvider();
329
+ }
330
+ }
284
331
  function watchTransaction(tx, signer, txOpts, onSuccess, { label = "transaction", rpc, senderSS58, expectedNonce, timeoutMs, fetchNonce: fetchNonceOverride } = {}) {
285
332
  const timeout = timeoutMs ?? TX_TIMEOUT_MS;
286
333
  const _fetchNonce = fetchNonceOverride ?? fetchNonce;
@@ -1531,6 +1578,9 @@ async function unpublish(domainName, options = {}) {
1531
1578
  }
1532
1579
  }
1533
1580
  async function deploy(content, domainName = null, options = {}) {
1581
+ if (options.signer && options.signerAddress && options.mnemonic) {
1582
+ throw new NonRetryableError("Pass either a mnemonic or an external signer, not both \u2014 they identify the signing account and only one can win.");
1583
+ }
1534
1584
  const envId = options.env ?? DEFAULT_ENV_ID;
1535
1585
  let envBulletin = [DEFAULT_BULLETIN_RPC];
1536
1586
  let envAssetHub;
@@ -1600,7 +1650,7 @@ async function deploy(content, domainName = null, options = {}) {
1600
1650
  if (process.env.CI) console.log(` Runner: ${resolveRunner()} (${resolveRunnerType()})`);
1601
1651
  if (options.password) console.log(` Encrypted: yes`);
1602
1652
  let provider;
1603
- const reconnect = options.mnemonic ? () => getDirectProvider(options.mnemonic, options.derivationPath) : () => getProvider();
1653
+ const reconnect = selectStorageReconnect(options);
1604
1654
  let dotnsPreflight = null;
1605
1655
  let previousContenthashCid = null;
1606
1656
  try {
@@ -2335,6 +2385,7 @@ export {
2335
2385
  ENCRYPT_KEY_LEN,
2336
2386
  ENCRYPT_PBKDF2_ITERATIONS,
2337
2387
  encryptContent,
2388
+ __selectStorageProviderModeForTest,
2338
2389
  storeFile,
2339
2390
  __assignDenseNoncesForTest,
2340
2391
  storeChunkedContent,
@@ -1,14 +1,15 @@
1
1
  import {
2
- PAID_PROOF_TAG,
2
+ buildAliasProofMessage,
3
+ getProofValidAtSec
4
+ } from "./chunk-SLE4P6MO.js";
5
+ import {
3
6
  PEOPLE_MEMBER_IDENTIFIER_HEX,
4
7
  PGAS_ASSET_ID,
5
8
  PGAS_ASSET_LOCATION,
6
9
  PROOF_BYTES
7
- } from "./chunk-T7EEVWNU.js";
10
+ } from "./chunk-SI2ZUOYD.js";
8
11
  import {
9
- blake2_256,
10
12
  bytesToHex,
11
- concatBytes,
12
13
  encodeMembers,
13
14
  hexToBytes
14
15
  } from "./chunk-ZYVGHDMU.js";
@@ -47,11 +48,11 @@ var bindPaidAliasToAccount = async ({
47
48
  kind: "ClientError"
48
49
  });
49
50
  }
50
- const fee = await ah.query.AliasAccounts.PaidAliasFee.getValue({ at: "best" });
51
+ const fee = await ah.query.AliasAccounts.AliasFee.getValue({ at: "best" });
51
52
  if (fee === void 0) {
52
53
  throw new PaidAliasBindingError(
53
- "AliasAccounts.PaidAliasFee is unset \u2014 needs sudo `set_paid_alias_fee`",
54
- { kind: "PaidAliasFeeUnset" }
54
+ "AliasAccounts.AliasFee is unset \u2014 needs sudo `set_alias_fee`",
55
+ { kind: "AliasFeeUnset" }
55
56
  );
56
57
  }
57
58
  const pgas = await ah.query.Assets.Account.getValue(
@@ -112,18 +113,19 @@ var bindPaidAliasToAccount = async ({
112
113
  }
113
114
  const latest = ringRoots[ringRoots.length - 1];
114
115
  const revision = latest.revision;
116
+ const proofValidAt = await getProofValidAtSec(ah);
115
117
  const ss58Info = getSs58AddressInfo(account);
116
118
  if (!ss58Info.isValid) {
117
119
  throw new PaidAliasBindingError(`invalid SS58: ${account}`, {
118
120
  kind: "ClientError"
119
121
  });
120
122
  }
121
- const paidMsg = blake2_256(concatBytes(PAID_PROOF_TAG, ss58Info.publicKey));
123
+ const aliasMsg = buildAliasProofMessage(ss58Info.publicKey, proofValidAt);
122
124
  const { proof, alias } = await buildRingProof({
123
125
  ringExponent,
124
126
  members: membersBytes,
125
127
  context: contextBytes,
126
- msg: paidMsg
128
+ msg: aliasMsg
127
129
  });
128
130
  if (proof.length !== PROOF_BYTES) {
129
131
  throw new PaidAliasBindingError(
@@ -131,12 +133,13 @@ var bindPaidAliasToAccount = async ({
131
133
  { kind: "ClientError" }
132
134
  );
133
135
  }
134
- const tx = ah.tx.AliasAccounts.set_paid_alias_account({
136
+ const tx = ah.tx.AliasAccounts.set_alias_account({
135
137
  proof: bytesToHex(proof),
136
138
  collection: collectionId,
137
139
  ring_index: ringIndex,
138
140
  ring_revision: revision,
139
- context: bytesToHex(contextBytes)
141
+ context: bytesToHex(contextBytes),
142
+ proof_valid_at: proofValidAt
140
143
  });
141
144
  const submitOptions = {
142
145
  customSignedExtensions: {
@@ -169,7 +172,7 @@ var bindPaidAliasToAccount = async ({
169
172
  if (ev.ok === false) {
170
173
  fail(
171
174
  new PaidAliasBindingError(
172
- "set_paid_alias_account dispatched but failed in-block",
175
+ "set_alias_account dispatched but failed in-block",
173
176
  {
174
177
  kind: narrowDispatchError(ev.dispatchError),
175
178
  dispatchError: ev.dispatchError
@@ -185,7 +188,7 @@ var bindPaidAliasToAccount = async ({
185
188
  if (ev.ok === false) {
186
189
  fail(
187
190
  new PaidAliasBindingError(
188
- "set_paid_alias_account failed at finalization",
191
+ "set_alias_account failed at finalization",
189
192
  {
190
193
  kind: narrowDispatchError(ev.dispatchError),
191
194
  dispatchError: ev.dispatchError
@@ -217,8 +220,8 @@ var narrowDispatchError = (dispatchError) => {
217
220
  if (v.type === "AliasAccounts" && v.value?.type === "BadProof") {
218
221
  return "BadProof";
219
222
  }
220
- if (v.type === "AliasAccounts" && v.value?.type === "PaidAliasFeeUnset") {
221
- return "PaidAliasFeeUnset";
223
+ if (v.type === "AliasAccounts" && v.value?.type === "AliasFeeUnset") {
224
+ return "AliasFeeUnset";
222
225
  }
223
226
  }
224
227
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BANDERSNATCH_SIGNATURE_BYTES
3
- } from "./chunk-T7EEVWNU.js";
3
+ } from "./chunk-SI2ZUOYD.js";
4
4
  import {
5
5
  buildImplicationMessage,
6
6
  buildV5GeneralExtrinsic,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  package_default,
3
3
  writeRunState
4
- } from "./chunk-RDTUUXZM.js";
4
+ } from "./chunk-M45PUARJ.js";
5
5
 
6
6
  // src/memory-report.ts
7
7
  import * as fs2 from "fs";
@@ -550,6 +550,9 @@ function setDeploySentryTag(key, value) {
550
550
  if (!Sentry) return;
551
551
  Sentry.setTag(key, value);
552
552
  }
553
+ function markCodePath(id) {
554
+ setDeployAttribute(`code.path.${id}`, "true");
555
+ }
553
556
  function captureWarning(message, context) {
554
557
  if (!Sentry) return;
555
558
  try {
@@ -726,6 +729,7 @@ export {
726
729
  __setSentryForTest,
727
730
  getCurrentSentryTraceId,
728
731
  setDeploySentryTag,
732
+ markCodePath,
729
733
  captureWarning,
730
734
  flush
731
735
  };
@@ -6,7 +6,7 @@ import * as path from "path";
6
6
  // package.json
7
7
  var package_default = {
8
8
  name: "bulletin-deploy",
9
- version: "0.7.28",
9
+ version: "0.7.30-rc.0",
10
10
  private: false,
11
11
  repository: {
12
12
  type: "git",
@@ -45,7 +45,7 @@ var package_default = {
45
45
  "tools/release-retry-wrapper.mjs"
46
46
  ],
47
47
  scripts: {
48
- build: "tsup src/index.ts src/deploy.ts src/dotns.ts src/pool.ts src/telemetry.ts src/memory-report.ts src/merkle.ts src/gh-pages-mirror.ts src/version-check.ts src/bug-report.ts src/run-state.ts src/environments.ts src/errors.ts src/manifest.ts src/chunk-probe.ts src/manifest-embed.ts src/manifest-fetch.ts src/manifest-roundtrip.ts src/incremental-stats.ts src/chunker.ts src/personhood/encoding.ts src/personhood/hashing.ts src/personhood/constants.ts src/personhood/member-key.ts src/personhood/people-client.ts src/personhood/reprove.ts src/personhood/bind-personal-id.ts src/personhood/claim-pgas.ts src/personhood/bind-paid-alias.ts src/personhood/bootstrap.ts src/manifest/types.ts src/manifest/schema.ts src/manifest/byte-budget.ts src/manifest/config-load.ts src/manifest/publish.ts --format esm --dts --clean --target node22",
48
+ build: "tsup src/index.ts src/deploy.ts src/dotns.ts src/pool.ts src/telemetry.ts src/memory-report.ts src/merkle.ts src/gh-pages-mirror.ts src/version-check.ts src/bug-report.ts src/run-state.ts src/environments.ts src/errors.ts src/manifest.ts src/chunk-probe.ts src/manifest-embed.ts src/manifest-fetch.ts src/manifest-roundtrip.ts src/incremental-stats.ts src/chunker.ts src/personhood/encoding.ts src/personhood/hashing.ts src/personhood/constants.ts src/personhood/member-key.ts src/personhood/people-client.ts src/personhood/proof-validity.ts src/personhood/reprove.ts src/personhood/bind-personal-id.ts src/personhood/claim-pgas.ts src/personhood/bind-paid-alias.ts src/personhood/bootstrap.ts src/personhood/chain-prereqs.ts src/manifest/types.ts src/manifest/schema.ts src/manifest/byte-budget.ts src/manifest/config-load.ts src/manifest/publish.ts --format esm --dts --clean --target node22",
49
49
  "refresh-environments": "node scripts/refresh-environments.mjs",
50
50
  "check:watched-dependencies": "node tools/check-watched-dependencies.mjs",
51
51
  prepare: "npm run build",
@@ -72,7 +72,7 @@ var package_default = {
72
72
  jiti: "^2.4.2",
73
73
  multiformats: "^13.4.1",
74
74
  "polkadot-api": "^2.1.3",
75
- verifiablejs: "^1.2.0",
75
+ verifiablejs: "1.3.0-beta.4",
76
76
  viem: "^2.30.5"
77
77
  },
78
78
  devDependencies: {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  captureWarning
3
- } from "./chunk-VS36INHV.js";
3
+ } from "./chunk-LM64HBVK.js";
4
4
 
5
5
  // src/chunk-probe.ts
6
6
  import { Twox128, Blake2128Concat, decAnyMetadata, unifyMetadata } from "@polkadot-api/substrate-bindings";