@parity/product-deploy 0.10.0-rc.3 → 0.10.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 (47) hide show
  1. package/DEPLOYMENT.md +61 -83
  2. package/bin/bulletin-bootstrap +24 -9
  3. package/dist/auth/index.js +2 -1
  4. package/dist/auth/vendor/index.js +2 -1
  5. package/dist/auth-config.js +4 -3
  6. package/dist/bug-report.js +4 -4
  7. package/dist/{chunk-GKG2EQKM.js → chunk-32THWODT.js} +50 -21
  8. package/dist/{chunk-4PVJ2JBZ.js → chunk-4IUTMHVB.js} +73 -41
  9. package/dist/{chunk-5OKB3TEB.js → chunk-5FLTDWWP.js} +4 -1
  10. package/dist/{chunk-UBLIZRYW.js → chunk-7HQL3TPT.js} +1 -1
  11. package/dist/{chunk-FAB6BWDB.js → chunk-ARPBPQZQ.js} +2 -2
  12. package/dist/{chunk-7OOKA4BJ.js → chunk-F2SDBU57.js} +5 -2
  13. package/dist/{chunk-D2WW2CIA.js → chunk-OR7LUTET.js} +2 -2
  14. package/dist/{chunk-DFRIBV6O.js → chunk-ORIB2S5P.js} +1 -1
  15. package/dist/{chunk-EJ5QLQU4.js → chunk-QR6HCDY2.js} +5 -4
  16. package/dist/{chunk-IF6BNIKT.js → chunk-SNDIOANW.js} +1 -1
  17. package/dist/chunk-TSPERKUS.js +6 -0
  18. package/dist/{chunk-KY3CRS66.js → chunk-V4RTUMBT.js} +1 -1
  19. package/dist/{chunk-RI3ZLNPN.js → chunk-WIMRJK32.js} +1 -1
  20. package/dist/{chunk-ZG56UL3V.js → chunk-ZC43ORKF.js} +1 -1
  21. package/dist/chunk-probe.js +3 -3
  22. package/dist/commands/login.js +27 -18
  23. package/dist/commands/logout.js +6 -5
  24. package/dist/commands/transfer.js +8 -5
  25. package/dist/commands/whoami.js +7 -4
  26. package/dist/deploy-actors.js +6 -5
  27. package/dist/deploy.d.ts +19 -2
  28. package/dist/deploy.js +17 -10
  29. package/dist/dotns.js +4 -4
  30. package/dist/index.js +13 -12
  31. package/dist/manifest/byte-budget.d.ts +4 -5
  32. package/dist/manifest/byte-budget.js +1 -1
  33. package/dist/manifest/publish.js +13 -12
  34. package/dist/memory-report.js +2 -2
  35. package/dist/merkle.js +11 -10
  36. package/dist/personhood/bootstrap.js +4 -4
  37. package/dist/personhood/people-client.js +4 -4
  38. package/dist/pool.d.ts +7 -2
  39. package/dist/pool.js +3 -1
  40. package/dist/run-state.js +1 -1
  41. package/dist/sss-allowance-cache.js +5 -4
  42. package/dist/storage-signer.js +11 -10
  43. package/dist/telemetry.js +2 -2
  44. package/dist/version-check.js +3 -3
  45. package/docs/bootstrap.md +47 -13
  46. package/docs/e2e-bootstrap.md +5 -0
  47. package/package.json +1 -1
package/dist/deploy.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import {
2
+ BLAKE2B_256_MULTIHASH_CODE,
2
3
  BULLETIN_ENDPOINTS,
3
4
  CHUNK_MORTALITY_PERIOD,
4
5
  DEFAULT_BULLETIN_RPC,
@@ -9,6 +10,7 @@ import {
9
10
  ENCRYPT_PBKDF2_ITERATIONS,
10
11
  ENCRYPT_SALT_LEN,
11
12
  ENCRYPT_TAG_LEN,
13
+ SHA256_MULTIHASH_CODE,
12
14
  WS_HEARTBEAT_TIMEOUT_MS,
13
15
  __assignDenseNoncesForTest,
14
16
  __selectStorageProviderModeForTest,
@@ -42,35 +44,38 @@ import {
42
44
  resolveReproducibleTimestamp,
43
45
  retryBudgetExhausted,
44
46
  setWsHaltCallback,
47
+ shouldHandoverName,
45
48
  storeChunkedContent,
46
49
  storeDirectory,
47
50
  storeDirectoryV2,
48
51
  storeFile,
49
52
  unpublish
50
- } from "./chunk-GKG2EQKM.js";
51
- import "./chunk-IF6BNIKT.js";
53
+ } from "./chunk-32THWODT.js";
54
+ import "./chunk-SNDIOANW.js";
52
55
  import "./chunk-GRPLHUYC.js";
53
56
  import "./chunk-HOTQDYHD.js";
54
57
  import "./chunk-IW3X2MJF.js";
55
58
  import "./chunk-KOSF5FDO.js";
56
59
  import "./chunk-J3NIXHZZ.js";
57
60
  import "./chunk-S7EM5VMW.js";
58
- import "./chunk-7OOKA4BJ.js";
59
- import "./chunk-D2WW2CIA.js";
60
- import "./chunk-ZG56UL3V.js";
61
- import "./chunk-UBLIZRYW.js";
61
+ import "./chunk-F2SDBU57.js";
62
+ import "./chunk-OR7LUTET.js";
63
+ import "./chunk-ZC43ORKF.js";
64
+ import "./chunk-7HQL3TPT.js";
62
65
  import "./chunk-C2TS5MER.js";
63
- import "./chunk-FAB6BWDB.js";
66
+ import "./chunk-TSPERKUS.js";
67
+ import "./chunk-ARPBPQZQ.js";
64
68
  import "./chunk-SI2ZUOYD.js";
65
- import "./chunk-4PVJ2JBZ.js";
66
- import "./chunk-DFRIBV6O.js";
67
- import "./chunk-KY3CRS66.js";
69
+ import "./chunk-4IUTMHVB.js";
70
+ import "./chunk-ORIB2S5P.js";
71
+ import "./chunk-V4RTUMBT.js";
68
72
  import "./chunk-QRKI6MMK.js";
69
73
  import {
70
74
  EXIT_CODE_NO_RETRY,
71
75
  NonRetryableError
72
76
  } from "./chunk-ZOC4GITL.js";
73
77
  export {
78
+ BLAKE2B_256_MULTIHASH_CODE,
74
79
  BULLETIN_ENDPOINTS,
75
80
  CHUNK_MORTALITY_PERIOD,
76
81
  DEFAULT_BULLETIN_RPC,
@@ -83,6 +88,7 @@ export {
83
88
  ENCRYPT_TAG_LEN,
84
89
  EXIT_CODE_NO_RETRY,
85
90
  NonRetryableError,
91
+ SHA256_MULTIHASH_CODE,
86
92
  WS_HEARTBEAT_TIMEOUT_MS,
87
93
  __assignDenseNoncesForTest,
88
94
  __selectStorageProviderModeForTest,
@@ -116,6 +122,7 @@ export {
116
122
  resolveReproducibleTimestamp,
117
123
  retryBudgetExhausted,
118
124
  setWsHaltCallback,
125
+ shouldHandoverName,
119
126
  storeChunkedContent,
120
127
  storeDirectory,
121
128
  storeDirectoryV2,
package/dist/dotns.js CHANGED
@@ -54,11 +54,11 @@ import {
54
54
  validateDomainLabel,
55
55
  verifyNonceAdvanced,
56
56
  weiToNative
57
- } from "./chunk-FAB6BWDB.js";
57
+ } from "./chunk-ARPBPQZQ.js";
58
58
  import "./chunk-SI2ZUOYD.js";
59
- import "./chunk-4PVJ2JBZ.js";
60
- import "./chunk-DFRIBV6O.js";
61
- import "./chunk-KY3CRS66.js";
59
+ import "./chunk-4IUTMHVB.js";
60
+ import "./chunk-ORIB2S5P.js";
61
+ import "./chunk-V4RTUMBT.js";
62
62
  import "./chunk-QRKI6MMK.js";
63
63
  import "./chunk-ZOC4GITL.js";
64
64
  export {
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-MMAZFJDG.js";
5
5
  import {
6
6
  publishManifest
7
- } from "./chunk-EJ5QLQU4.js";
7
+ } from "./chunk-QR6HCDY2.js";
8
8
  import {
9
9
  validateExecutableManifest,
10
10
  validateProductConfig,
@@ -19,13 +19,13 @@ import {
19
19
  assertWithinBudget,
20
20
  getTextRecordBudgetBytes,
21
21
  pessimisticSizePreflight
22
- } from "./chunk-RI3ZLNPN.js";
22
+ } from "./chunk-WIMRJK32.js";
23
23
  import {
24
24
  deploy,
25
25
  merkleizeJS,
26
26
  merkleizeWithStableOrder
27
- } from "./chunk-GKG2EQKM.js";
28
- import "./chunk-IF6BNIKT.js";
27
+ } from "./chunk-32THWODT.js";
28
+ import "./chunk-SNDIOANW.js";
29
29
  import "./chunk-GRPLHUYC.js";
30
30
  import "./chunk-HOTQDYHD.js";
31
31
  import {
@@ -49,19 +49,20 @@ import {
49
49
  isVolatilePath,
50
50
  parseManifest
51
51
  } from "./chunk-S7EM5VMW.js";
52
- import "./chunk-7OOKA4BJ.js";
53
- import "./chunk-D2WW2CIA.js";
54
- import "./chunk-ZG56UL3V.js";
52
+ import "./chunk-F2SDBU57.js";
53
+ import "./chunk-OR7LUTET.js";
54
+ import "./chunk-ZC43ORKF.js";
55
55
  import {
56
56
  probeChunks
57
- } from "./chunk-UBLIZRYW.js";
57
+ } from "./chunk-7HQL3TPT.js";
58
58
  import "./chunk-C2TS5MER.js";
59
+ import "./chunk-TSPERKUS.js";
59
60
  import {
60
61
  DEFAULT_MNEMONIC,
61
62
  DotNS,
62
63
  parseDomainName,
63
64
  sanitizeDomainLabel
64
- } from "./chunk-FAB6BWDB.js";
65
+ } from "./chunk-ARPBPQZQ.js";
65
66
  import "./chunk-SI2ZUOYD.js";
66
67
  import {
67
68
  bootstrapPool,
@@ -69,8 +70,8 @@ import {
69
70
  ensureAuthorized,
70
71
  fetchPoolAuthorizations,
71
72
  selectAccount
72
- } from "./chunk-4PVJ2JBZ.js";
73
- import "./chunk-DFRIBV6O.js";
73
+ } from "./chunk-4IUTMHVB.js";
74
+ import "./chunk-ORIB2S5P.js";
74
75
  import {
75
76
  VERSION,
76
77
  loadRunState,
@@ -80,7 +81,7 @@ import {
80
81
  shouldSkipStaleWarning,
81
82
  stateFilePath,
82
83
  writeRunState
83
- } from "./chunk-KY3CRS66.js";
84
+ } from "./chunk-V4RTUMBT.js";
84
85
  import {
85
86
  DEFAULT_ENV_ID,
86
87
  deepMergeEnvironments,
@@ -11,12 +11,11 @@ declare const DEFAULT_TEXT_RECORD_BUDGET_BYTES = 1024;
11
11
  /**
12
12
  * Fixed-length stand-in for a Bulletin CID in the pre-upload size preflight.
13
13
  *
14
- * CIDv1(raw, sha256, 32B) base32-encodes to exactly 59 characters per the
15
- * RFC §Constants table, so substituting any 59-char CID-like string lets us
16
- * size manifests deterministically before the icon and executables have
17
- * actually been uploaded.
14
+ * The encoded length depends on the multihash code's varint width:
15
+ * sha-256 (0x12, 1-byte varint) CIDv1(raw, …) base32 = 59 chars
16
+ * blake2b-256 (0xb220, 3-byte varint) CIDv1(raw, …) base32 = 62 chars
18
17
  */
19
- declare const PLACEHOLDER_CID = "bafkreigh2akiscaildc7zh3vznzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
18
+ declare const PLACEHOLDER_CID = "bafk2bzacecjiwibwnfb6fl6rd26a5lrokoutx4lxut6pgw6mmtkqg4comxrae";
20
19
  /** Resolved text-record byte budget, from `BULLETIN_TEXT_BUDGET` or the default. */
21
20
  declare function getTextRecordBudgetBytes(): number;
22
21
  interface BudgetCheck {
@@ -4,7 +4,7 @@ import {
4
4
  assertWithinBudget,
5
5
  getTextRecordBudgetBytes,
6
6
  pessimisticSizePreflight
7
- } from "../chunk-RI3ZLNPN.js";
7
+ } from "../chunk-WIMRJK32.js";
8
8
  export {
9
9
  DEFAULT_TEXT_RECORD_BUDGET_BYTES,
10
10
  PLACEHOLDER_CID,
@@ -1,25 +1,26 @@
1
1
  import {
2
2
  publishManifest
3
- } from "../chunk-EJ5QLQU4.js";
4
- import "../chunk-RI3ZLNPN.js";
5
- import "../chunk-GKG2EQKM.js";
6
- import "../chunk-IF6BNIKT.js";
3
+ } from "../chunk-QR6HCDY2.js";
4
+ import "../chunk-WIMRJK32.js";
5
+ import "../chunk-32THWODT.js";
6
+ import "../chunk-SNDIOANW.js";
7
7
  import "../chunk-GRPLHUYC.js";
8
8
  import "../chunk-HOTQDYHD.js";
9
9
  import "../chunk-IW3X2MJF.js";
10
10
  import "../chunk-KOSF5FDO.js";
11
11
  import "../chunk-J3NIXHZZ.js";
12
12
  import "../chunk-S7EM5VMW.js";
13
- import "../chunk-7OOKA4BJ.js";
14
- import "../chunk-D2WW2CIA.js";
15
- import "../chunk-ZG56UL3V.js";
16
- import "../chunk-UBLIZRYW.js";
13
+ import "../chunk-F2SDBU57.js";
14
+ import "../chunk-OR7LUTET.js";
15
+ import "../chunk-ZC43ORKF.js";
16
+ import "../chunk-7HQL3TPT.js";
17
17
  import "../chunk-C2TS5MER.js";
18
- import "../chunk-FAB6BWDB.js";
18
+ import "../chunk-TSPERKUS.js";
19
+ import "../chunk-ARPBPQZQ.js";
19
20
  import "../chunk-SI2ZUOYD.js";
20
- import "../chunk-4PVJ2JBZ.js";
21
- import "../chunk-DFRIBV6O.js";
22
- import "../chunk-KY3CRS66.js";
21
+ import "../chunk-4IUTMHVB.js";
22
+ import "../chunk-ORIB2S5P.js";
23
+ import "../chunk-V4RTUMBT.js";
23
24
  import "../chunk-QRKI6MMK.js";
24
25
  import "../chunk-ZOC4GITL.js";
25
26
  export {
@@ -5,8 +5,8 @@ import {
5
5
  maybeWriteMemoryReport,
6
6
  safeHeap,
7
7
  sampleFromBytes
8
- } from "./chunk-DFRIBV6O.js";
9
- import "./chunk-KY3CRS66.js";
8
+ } from "./chunk-ORIB2S5P.js";
9
+ import "./chunk-V4RTUMBT.js";
10
10
  export {
11
11
  DEFAULT_THRESHOLD_MB,
12
12
  buildMemoryReport,
package/dist/merkle.js CHANGED
@@ -6,24 +6,25 @@ import {
6
6
  merkleizeKuboBackend,
7
7
  merkleizeWithStableOrder,
8
8
  rebuildOrderedCarFromBytes
9
- } from "./chunk-GKG2EQKM.js";
10
- import "./chunk-IF6BNIKT.js";
9
+ } from "./chunk-32THWODT.js";
10
+ import "./chunk-SNDIOANW.js";
11
11
  import "./chunk-GRPLHUYC.js";
12
12
  import "./chunk-HOTQDYHD.js";
13
13
  import "./chunk-IW3X2MJF.js";
14
14
  import "./chunk-KOSF5FDO.js";
15
15
  import "./chunk-J3NIXHZZ.js";
16
16
  import "./chunk-S7EM5VMW.js";
17
- import "./chunk-7OOKA4BJ.js";
18
- import "./chunk-D2WW2CIA.js";
19
- import "./chunk-ZG56UL3V.js";
20
- import "./chunk-UBLIZRYW.js";
17
+ import "./chunk-F2SDBU57.js";
18
+ import "./chunk-OR7LUTET.js";
19
+ import "./chunk-ZC43ORKF.js";
20
+ import "./chunk-7HQL3TPT.js";
21
21
  import "./chunk-C2TS5MER.js";
22
- import "./chunk-FAB6BWDB.js";
22
+ import "./chunk-TSPERKUS.js";
23
+ import "./chunk-ARPBPQZQ.js";
23
24
  import "./chunk-SI2ZUOYD.js";
24
- import "./chunk-4PVJ2JBZ.js";
25
- import "./chunk-DFRIBV6O.js";
26
- import "./chunk-KY3CRS66.js";
25
+ import "./chunk-4IUTMHVB.js";
26
+ import "./chunk-ORIB2S5P.js";
27
+ import "./chunk-V4RTUMBT.js";
27
28
  import "./chunk-QRKI6MMK.js";
28
29
  import "./chunk-ZOC4GITL.js";
29
30
  export {
@@ -21,15 +21,15 @@ import {
21
21
  } from "../chunk-XAB7WM3S.js";
22
22
  import {
23
23
  WS_HEARTBEAT_TIMEOUT_MS
24
- } from "../chunk-FAB6BWDB.js";
24
+ } from "../chunk-ARPBPQZQ.js";
25
25
  import {
26
26
  DOTNS_CONTEXT_BYTES,
27
27
  PEOPLE_MEMBER_IDENTIFIER_HEX,
28
28
  PGAS_ASSET_ID
29
29
  } from "../chunk-SI2ZUOYD.js";
30
- import "../chunk-4PVJ2JBZ.js";
31
- import "../chunk-DFRIBV6O.js";
32
- import "../chunk-KY3CRS66.js";
30
+ import "../chunk-4IUTMHVB.js";
31
+ import "../chunk-ORIB2S5P.js";
32
+ import "../chunk-V4RTUMBT.js";
33
33
  import {
34
34
  loadEnvironments
35
35
  } from "../chunk-QRKI6MMK.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  WS_HEARTBEAT_TIMEOUT_MS
3
- } from "../chunk-FAB6BWDB.js";
3
+ } from "../chunk-ARPBPQZQ.js";
4
4
  import "../chunk-SI2ZUOYD.js";
5
- import "../chunk-4PVJ2JBZ.js";
6
- import "../chunk-DFRIBV6O.js";
7
- import "../chunk-KY3CRS66.js";
5
+ import "../chunk-4IUTMHVB.js";
6
+ import "../chunk-ORIB2S5P.js";
7
+ import "../chunk-V4RTUMBT.js";
8
8
  import {
9
9
  loadEnvironments
10
10
  } from "../chunk-QRKI6MMK.js";
package/dist/pool.d.ts CHANGED
@@ -15,6 +15,7 @@ interface PoolAuthorization extends PoolAccount {
15
15
  }
16
16
  declare function derivePoolAccounts(poolSize?: number, mnemonic?: string): PoolAccount[];
17
17
  declare function isAuthorizationSufficient(auth: any, currentBlock: number): boolean;
18
+ declare function accountsNeedingAuthorization(auths: PoolAuthorization[], currentBlock: number): PoolAuthorization[];
18
19
  interface SelectionResult {
19
20
  account: PoolAuthorization;
20
21
  eligibleCount: number;
@@ -25,6 +26,10 @@ declare function isTestnetSpecName(specName: string | undefined | null): boolean
25
26
  declare function detectTestnet(api: any): Promise<boolean>;
26
27
  declare function _resetTestnetCacheForTests(): void;
27
28
  declare function ensureAuthorized(api: any, address: string, label?: string): Promise<void>;
28
- declare function bootstrapPool(bulletinRpc: string, poolSize?: number, mnemonic?: string): Promise<void>;
29
+ interface BootstrapPoolOptions {
30
+ authorizerMnemonic?: string;
31
+ bulletinAuthorizeV2?: boolean;
32
+ }
33
+ declare function bootstrapPool(bulletinRpc: string, poolSize?: number, mnemonic?: string, opts?: BootstrapPoolOptions): Promise<void>;
29
34
 
30
- export { type PoolAccount, type PoolAuthorization, type SelectionResult, _resetTestnetCacheForTests, bootstrapPool, derivePoolAccounts, detectTestnet, ensureAuthorized, fetchPoolAuthorizations, formatPasBalance, isAuthorizationSufficient, isTestnetSpecName, selectAccount };
35
+ export { type BootstrapPoolOptions, type PoolAccount, type PoolAuthorization, type SelectionResult, _resetTestnetCacheForTests, accountsNeedingAuthorization, bootstrapPool, derivePoolAccounts, detectTestnet, ensureAuthorized, fetchPoolAuthorizations, formatPasBalance, isAuthorizationSufficient, isTestnetSpecName, selectAccount };
package/dist/pool.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  _resetTestnetCacheForTests,
3
+ accountsNeedingAuthorization,
3
4
  bootstrapPool,
4
5
  derivePoolAccounts,
5
6
  detectTestnet,
@@ -9,9 +10,10 @@ import {
9
10
  isAuthorizationSufficient,
10
11
  isTestnetSpecName,
11
12
  selectAccount
12
- } from "./chunk-4PVJ2JBZ.js";
13
+ } from "./chunk-4IUTMHVB.js";
13
14
  export {
14
15
  _resetTestnetCacheForTests,
16
+ accountsNeedingAuthorization,
15
17
  bootstrapPool,
16
18
  derivePoolAccounts,
17
19
  detectTestnet,
package/dist/run-state.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  shouldSkipStaleWarning,
8
8
  stateFilePath,
9
9
  writeRunState
10
- } from "./chunk-KY3CRS66.js";
10
+ } from "./chunk-V4RTUMBT.js";
11
11
  export {
12
12
  VERSION,
13
13
  loadRunState,
@@ -4,11 +4,12 @@ import {
4
4
  preflightSssAllowance,
5
5
  sssPeriodEndSec,
6
6
  writeSssAllowanceCache
7
- } from "./chunk-IF6BNIKT.js";
7
+ } from "./chunk-SNDIOANW.js";
8
8
  import "./chunk-GRPLHUYC.js";
9
- import "./chunk-7OOKA4BJ.js";
10
- import "./chunk-DFRIBV6O.js";
11
- import "./chunk-KY3CRS66.js";
9
+ import "./chunk-F2SDBU57.js";
10
+ import "./chunk-TSPERKUS.js";
11
+ import "./chunk-ORIB2S5P.js";
12
+ import "./chunk-V4RTUMBT.js";
12
13
  import "./chunk-QRKI6MMK.js";
13
14
  import "./chunk-ZOC4GITL.js";
14
15
  export {
@@ -7,24 +7,25 @@ import {
7
7
  readBulletinSlotSigner,
8
8
  waitForBulletinAuthorization,
9
9
  writeBulletinSlotKey
10
- } from "./chunk-GKG2EQKM.js";
11
- import "./chunk-IF6BNIKT.js";
10
+ } from "./chunk-32THWODT.js";
11
+ import "./chunk-SNDIOANW.js";
12
12
  import "./chunk-GRPLHUYC.js";
13
13
  import "./chunk-HOTQDYHD.js";
14
14
  import "./chunk-IW3X2MJF.js";
15
15
  import "./chunk-KOSF5FDO.js";
16
16
  import "./chunk-J3NIXHZZ.js";
17
17
  import "./chunk-S7EM5VMW.js";
18
- import "./chunk-7OOKA4BJ.js";
19
- import "./chunk-D2WW2CIA.js";
20
- import "./chunk-ZG56UL3V.js";
21
- import "./chunk-UBLIZRYW.js";
18
+ import "./chunk-F2SDBU57.js";
19
+ import "./chunk-OR7LUTET.js";
20
+ import "./chunk-ZC43ORKF.js";
21
+ import "./chunk-7HQL3TPT.js";
22
22
  import "./chunk-C2TS5MER.js";
23
- import "./chunk-FAB6BWDB.js";
23
+ import "./chunk-TSPERKUS.js";
24
+ import "./chunk-ARPBPQZQ.js";
24
25
  import "./chunk-SI2ZUOYD.js";
25
- import "./chunk-4PVJ2JBZ.js";
26
- import "./chunk-DFRIBV6O.js";
27
- import "./chunk-KY3CRS66.js";
26
+ import "./chunk-4IUTMHVB.js";
27
+ import "./chunk-ORIB2S5P.js";
28
+ import "./chunk-V4RTUMBT.js";
28
29
  import "./chunk-QRKI6MMK.js";
29
30
  import "./chunk-ZOC4GITL.js";
30
31
  export {
package/dist/telemetry.js CHANGED
@@ -34,8 +34,8 @@ import {
34
34
  truncateAddress,
35
35
  withDeploySpan,
36
36
  withSpan
37
- } from "./chunk-DFRIBV6O.js";
38
- import "./chunk-KY3CRS66.js";
37
+ } from "./chunk-ORIB2S5P.js";
38
+ import "./chunk-V4RTUMBT.js";
39
39
  export {
40
40
  VERSION,
41
41
  __setDeployRootSpanForTest,
@@ -11,9 +11,9 @@ import {
11
11
  isPreReleaseVersion,
12
12
  preReleaseWarning,
13
13
  promptYesNo
14
- } from "./chunk-ZG56UL3V.js";
15
- import "./chunk-DFRIBV6O.js";
16
- import "./chunk-KY3CRS66.js";
14
+ } from "./chunk-ZC43ORKF.js";
15
+ import "./chunk-ORIB2S5P.js";
16
+ import "./chunk-V4RTUMBT.js";
17
17
  export {
18
18
  assessVersion,
19
19
  checkNodeVersion,
package/docs/bootstrap.md CHANGED
@@ -1,49 +1,83 @@
1
1
  # bulletin-bootstrap
2
2
 
3
- `bulletin-bootstrap` is the operator CLI for initializing Bulletin pool accounts. It is separate from `bulletin-deploy` on purpose: deploys are the normal user path, bootstrap is an admin/setup operation.
3
+ `bulletin-bootstrap` is the operator CLI for reporting and granting pool account authorization on the Bulletin chain. It is separate from `bulletin-deploy` on purpose: deploys are the normal user path, bootstrap is an admin/setup operation.
4
+
5
+ **Documentation map — read in order:**
6
+ 1. **[DEPLOYMENT.md](../DEPLOYMENT.md)** — set up bulletin-deploy for your environment.
7
+ 2. **[docs/bootstrap.md](bootstrap.md)** (this doc) — the bulletin-bootstrap reference (Bulletin storage authorization).
8
+ 3. **[docs/e2e-bootstrap.md](e2e-bootstrap.md)** — a fully worked setup, end to end, for the E2E test environment.
9
+
10
+ ## The authorization model
11
+
12
+ The Bulletin chain has **no fee model**. Storage access is gated by the `TransactionStorage` pallet's authorization quota, not account balance. Each pool account must be authorized with a transaction count and byte budget. `bulletin-bootstrap` inspects and grants that quota.
4
13
 
5
14
  ## Usage
6
15
 
7
16
  ```bash
8
- bulletin-bootstrap
17
+ bulletin-bootstrap [options]
9
18
  ```
10
19
 
11
20
  Options:
12
21
 
13
22
  | Flag | What it does |
14
23
  |---|---|
24
+ | `--mnemonic "..."` | Pool root mnemonic used to derive the pool accounts. Also readable from `BULLETIN_POOL_MNEMONIC`, then `MNEMONIC`. Defaults to the well-known dev phrase — the same key the deploy path uses. |
25
+ | `--authorizer "..."` | Seed/mnemonic of the key that holds authorization authority on this chain (e.g. `//Alice`, a full mnemonic, or a hex seed). On testnets, defaults to `//Alice` if omitted. On non-testnets, required to grant — omit to get status only. |
15
26
  | `--rpc wss://...` | Override the Bulletin RPC endpoint. Also readable from `BULLETIN_RPC`. |
16
- | `--pool-size N` | Number of derived pool accounts to initialize. Default: `10`. |
17
- | `--mnemonic "..."` | Root mnemonic used to derive the pool accounts. Also readable from `BULLETIN_POOL_MNEMONIC`, then `MNEMONIC`. |
27
+ | `--env <id>` | Load environment by id from `environments.json` (sets the default RPC). |
28
+ | `--pool-size N` | Number of pool accounts to check/initialize. Default: `10`. |
18
29
  | `--version` | Print the CLI version. |
19
30
  | `--help` | Show help. |
20
31
 
21
32
  ## What it does
22
33
 
23
- The command derives the pool account set and initializes the on-chain authorization state needed for Bulletin uploads.
34
+ 1. Connects to the Bulletin chain and derives the pool account set from `--mnemonic` (default: dev phrase, same as `BULLETIN_POOL_MNEMONIC` in the deploy path).
35
+ 2. Fetches the current `TransactionStorage` authorization for each account and prints its status: index, address, and either `AUTHORIZED — <txs> txs / <MB> MB remaining, expires @<block>` or `NOT AUTHORIZED`.
36
+ 3. Determines which accounts need authorization (missing or expired).
37
+ 4. Resolves the authorizer:
38
+ - `--authorizer` provided → use that key.
39
+ - No `--authorizer` and chain is a testnet → default to `//Alice`.
40
+ - No `--authorizer` and chain is not a testnet → print that authorization is needed and exit (status-only, nothing written).
41
+ 5. For each account that needs authorization, submits `TransactionStorage.authorize_account` signed by the authorizer (1000 txs / 100 MB per account).
42
+ 6. Prints a final summary of all account statuses.
24
43
 
25
44
  Use it when:
26
45
 
27
- - you are bringing up a fresh pool on a testnet
28
- - the shared uploader pool has not been authorized yet
29
- - you want to pre-initialize a non-default pool mnemonic
46
+ - you are bringing up a fresh pool on a testnet or production chain
47
+ - the shared uploader pool's authorizations have expired
48
+ - you want to check authorization status without making any changes (omit `--authorizer` on non-testnet)
49
+ - you are initializing a non-default pool mnemonic
30
50
 
31
51
  Do not use it as part of routine deploys. Normal deploys go through `bulletin-deploy`.
32
52
 
53
+ ## Pool account derivation
54
+
55
+ Pool accounts are derived from the pool root mnemonic using the path `//deploy/N` for `N` in `[0, pool-size)`. The deploy path uses the same derivation from `BULLETIN_POOL_MNEMONIC` (defaulting to the well-known dev phrase). Bootstrap and deploy must use the same mnemonic to address the same accounts.
56
+
33
57
  ## Examples
34
58
 
35
59
  ```bash
36
- # Default testnet pool against the default RPC
60
+ # Check status on the default testnet (//Alice as authorizer)
37
61
  bulletin-bootstrap
38
62
 
39
- # Different RPC and larger pool
63
+ # Check status without granting (non-testnet, no authorizer provided)
64
+ bulletin-bootstrap --rpc wss://bulletin.mainnet.example.com
65
+
66
+ # Grant on a non-testnet with an explicit authorizer
67
+ bulletin-bootstrap --rpc wss://bulletin.mainnet.example.com --authorizer "word word word ..."
68
+
69
+ # Larger pool, explicit RPC
40
70
  bulletin-bootstrap --rpc wss://custom-bulletin.example.com --pool-size 20
41
71
 
42
- # Explicit pool mnemonic
43
- bulletin-bootstrap --mnemonic "..."
72
+ # Explicit pool mnemonic and authorizer
73
+ bulletin-bootstrap --mnemonic "word word word ..." --authorizer "//Alice"
74
+
75
+ # Load environment from environments.json
76
+ bulletin-bootstrap --env paseo-next-v2
44
77
  ```
45
78
 
46
79
  ## Related Docs
47
80
 
48
- - [Main README](../README.md)
81
+ - [DEPLOYMENT.md](../DEPLOYMENT.md)
49
82
  - [E2E test setup](./e2e-bootstrap.md)
83
+ - [Main README](../README.md)
@@ -2,6 +2,11 @@
2
2
 
3
3
  > This is a **contributor** guide for running the live-testnet E2E suite. If you only want to deploy your own app, see [DEPLOYMENT.md](../DEPLOYMENT.md) instead.
4
4
 
5
+ **Documentation map — read in order:**
6
+ 1. **[DEPLOYMENT.md](../DEPLOYMENT.md)** — set up `bulletin-deploy` for your environment.
7
+ 2. **[docs/bootstrap.md](bootstrap.md)** — the `bulletin-bootstrap` reference (Bulletin storage authorization).
8
+ 3. **[docs/e2e-bootstrap.md](e2e-bootstrap.md)** (this doc) — a fully worked setup, end to end, for the E2E test environment.
9
+
5
10
  The E2E suite (`test/e2e.test.js`, driven by `.github/workflows/e2e.yml`) deploys real content to Paseo Bulletin testnet via `bulletin-deploy` and verifies the on-chain round-trip. It consumes the **shared default pool** (derived from `DEV_PHRASE` — the same pool real users hit in production) for Bulletin chunk upload, so no pool bootstrapping is required.
6
11
 
7
12
  Three one-time setup items are needed before the workflow can pass. Do them once per testnet lifetime (redo if testnet is wiped).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parity/product-deploy",
3
- "version": "0.10.0-rc.3",
3
+ "version": "0.10.0",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",