@parity/product-deploy 0.10.0-rc.2 → 0.10.0-rc.4
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.
- package/DEPLOYMENT.md +61 -83
- package/bin/bulletin-bootstrap +24 -9
- package/dist/auth/index.js +2 -1
- package/dist/auth/vendor/index.js +2 -1
- package/dist/auth-config.js +4 -3
- package/dist/bug-report.js +4 -4
- package/dist/{chunk-SXWFDMFT.js → chunk-3CUIQTSD.js} +5 -2
- package/dist/{chunk-4PVJ2JBZ.js → chunk-4IUTMHVB.js} +73 -41
- package/dist/{chunk-5OKB3TEB.js → chunk-5FLTDWWP.js} +4 -1
- package/dist/{chunk-UJJQME5K.js → chunk-5V2RCZXO.js} +1 -1
- package/dist/{chunk-4D6STP5G.js → chunk-76CVW4DE.js} +1 -1
- package/dist/{chunk-XX6LNB74.js → chunk-BZRRNX7T.js} +5 -4
- package/dist/{chunk-WM5R4O33.js → chunk-CCTQO2Q4.js} +1 -1
- package/dist/{chunk-C74YSAWC.js → chunk-CJHVSSSR.js} +50 -21
- package/dist/{chunk-I7UEBFP5.js → chunk-GRWWVYSV.js} +2 -2
- package/dist/chunk-TSPERKUS.js +6 -0
- package/dist/{chunk-LYWIW6WU.js → chunk-W2VFJGBC.js} +1 -1
- package/dist/{chunk-RI3ZLNPN.js → chunk-WIMRJK32.js} +1 -1
- package/dist/{chunk-V5VD5CIC.js → chunk-XOR2CEKA.js} +2 -2
- package/dist/{chunk-EHQPRWGC.js → chunk-ZHRQDZIK.js} +1 -1
- package/dist/chunk-probe.js +3 -3
- package/dist/commands/login.js +27 -18
- package/dist/commands/logout.js +6 -5
- package/dist/commands/transfer.js +8 -5
- package/dist/commands/whoami.js +7 -4
- package/dist/deploy-actors.js +6 -5
- package/dist/deploy.d.ts +19 -2
- package/dist/deploy.js +17 -10
- package/dist/dotns.js +4 -4
- package/dist/index.js +13 -12
- package/dist/manifest/byte-budget.d.ts +4 -5
- package/dist/manifest/byte-budget.js +1 -1
- package/dist/manifest/publish.js +13 -12
- package/dist/memory-report.js +2 -2
- package/dist/merkle.js +11 -10
- package/dist/personhood/bootstrap.js +4 -4
- package/dist/personhood/people-client.js +4 -4
- package/dist/pool.d.ts +7 -2
- package/dist/pool.js +3 -1
- package/dist/run-state.js +1 -1
- package/dist/sss-allowance-cache.js +5 -4
- package/dist/storage-signer.js +11 -10
- package/dist/telemetry.js +2 -2
- package/dist/version-check.js +3 -3
- package/docs/bootstrap.md +47 -13
- package/docs/e2e-bootstrap.md +5 -0
- package/package.json +1 -1
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-
|
|
7
|
+
} from "./chunk-BZRRNX7T.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-
|
|
22
|
+
} from "./chunk-WIMRJK32.js";
|
|
23
23
|
import {
|
|
24
24
|
deploy,
|
|
25
25
|
merkleizeJS,
|
|
26
26
|
merkleizeWithStableOrder
|
|
27
|
-
} from "./chunk-
|
|
28
|
-
import "./chunk-
|
|
27
|
+
} from "./chunk-CJHVSSSR.js";
|
|
28
|
+
import "./chunk-5V2RCZXO.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-
|
|
53
|
-
import "./chunk-
|
|
54
|
-
import "./chunk-
|
|
52
|
+
import "./chunk-3CUIQTSD.js";
|
|
53
|
+
import "./chunk-XOR2CEKA.js";
|
|
54
|
+
import "./chunk-ZHRQDZIK.js";
|
|
55
55
|
import {
|
|
56
56
|
probeChunks
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-W2VFJGBC.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-
|
|
65
|
+
} from "./chunk-GRWWVYSV.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-
|
|
73
|
-
import "./chunk-
|
|
73
|
+
} from "./chunk-4IUTMHVB.js";
|
|
74
|
+
import "./chunk-76CVW4DE.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-
|
|
84
|
+
} from "./chunk-CCTQO2Q4.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
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
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 = "
|
|
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 {
|
package/dist/manifest/publish.js
CHANGED
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
import {
|
|
2
2
|
publishManifest
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-BZRRNX7T.js";
|
|
4
|
+
import "../chunk-WIMRJK32.js";
|
|
5
|
+
import "../chunk-CJHVSSSR.js";
|
|
6
|
+
import "../chunk-5V2RCZXO.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-
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-3CUIQTSD.js";
|
|
14
|
+
import "../chunk-XOR2CEKA.js";
|
|
15
|
+
import "../chunk-ZHRQDZIK.js";
|
|
16
|
+
import "../chunk-W2VFJGBC.js";
|
|
17
17
|
import "../chunk-C2TS5MER.js";
|
|
18
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-TSPERKUS.js";
|
|
19
|
+
import "../chunk-GRWWVYSV.js";
|
|
19
20
|
import "../chunk-SI2ZUOYD.js";
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-
|
|
22
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-4IUTMHVB.js";
|
|
22
|
+
import "../chunk-76CVW4DE.js";
|
|
23
|
+
import "../chunk-CCTQO2Q4.js";
|
|
23
24
|
import "../chunk-QRKI6MMK.js";
|
|
24
25
|
import "../chunk-ZOC4GITL.js";
|
|
25
26
|
export {
|
package/dist/memory-report.js
CHANGED
package/dist/merkle.js
CHANGED
|
@@ -6,24 +6,25 @@ import {
|
|
|
6
6
|
merkleizeKuboBackend,
|
|
7
7
|
merkleizeWithStableOrder,
|
|
8
8
|
rebuildOrderedCarFromBytes
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-CJHVSSSR.js";
|
|
10
|
+
import "./chunk-5V2RCZXO.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-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-3CUIQTSD.js";
|
|
18
|
+
import "./chunk-XOR2CEKA.js";
|
|
19
|
+
import "./chunk-ZHRQDZIK.js";
|
|
20
|
+
import "./chunk-W2VFJGBC.js";
|
|
21
21
|
import "./chunk-C2TS5MER.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-TSPERKUS.js";
|
|
23
|
+
import "./chunk-GRWWVYSV.js";
|
|
23
24
|
import "./chunk-SI2ZUOYD.js";
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-4IUTMHVB.js";
|
|
26
|
+
import "./chunk-76CVW4DE.js";
|
|
27
|
+
import "./chunk-CCTQO2Q4.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-
|
|
24
|
+
} from "../chunk-GRWWVYSV.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-
|
|
31
|
-
import "../chunk-
|
|
32
|
-
import "../chunk-
|
|
30
|
+
import "../chunk-4IUTMHVB.js";
|
|
31
|
+
import "../chunk-76CVW4DE.js";
|
|
32
|
+
import "../chunk-CCTQO2Q4.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-
|
|
3
|
+
} from "../chunk-GRWWVYSV.js";
|
|
4
4
|
import "../chunk-SI2ZUOYD.js";
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
5
|
+
import "../chunk-4IUTMHVB.js";
|
|
6
|
+
import "../chunk-76CVW4DE.js";
|
|
7
|
+
import "../chunk-CCTQO2Q4.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
|
-
|
|
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-
|
|
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
|
@@ -4,11 +4,12 @@ import {
|
|
|
4
4
|
preflightSssAllowance,
|
|
5
5
|
sssPeriodEndSec,
|
|
6
6
|
writeSssAllowanceCache
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-5V2RCZXO.js";
|
|
8
8
|
import "./chunk-GRPLHUYC.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-3CUIQTSD.js";
|
|
10
|
+
import "./chunk-TSPERKUS.js";
|
|
11
|
+
import "./chunk-76CVW4DE.js";
|
|
12
|
+
import "./chunk-CCTQO2Q4.js";
|
|
12
13
|
import "./chunk-QRKI6MMK.js";
|
|
13
14
|
import "./chunk-ZOC4GITL.js";
|
|
14
15
|
export {
|
package/dist/storage-signer.js
CHANGED
|
@@ -7,24 +7,25 @@ import {
|
|
|
7
7
|
readBulletinSlotSigner,
|
|
8
8
|
waitForBulletinAuthorization,
|
|
9
9
|
writeBulletinSlotKey
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-CJHVSSSR.js";
|
|
11
|
+
import "./chunk-5V2RCZXO.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-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-3CUIQTSD.js";
|
|
19
|
+
import "./chunk-XOR2CEKA.js";
|
|
20
|
+
import "./chunk-ZHRQDZIK.js";
|
|
21
|
+
import "./chunk-W2VFJGBC.js";
|
|
22
22
|
import "./chunk-C2TS5MER.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-TSPERKUS.js";
|
|
24
|
+
import "./chunk-GRWWVYSV.js";
|
|
24
25
|
import "./chunk-SI2ZUOYD.js";
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-4IUTMHVB.js";
|
|
27
|
+
import "./chunk-76CVW4DE.js";
|
|
28
|
+
import "./chunk-CCTQO2Q4.js";
|
|
28
29
|
import "./chunk-QRKI6MMK.js";
|
|
29
30
|
import "./chunk-ZOC4GITL.js";
|
|
30
31
|
export {
|
package/dist/telemetry.js
CHANGED
package/dist/version-check.js
CHANGED
|
@@ -11,9 +11,9 @@ import {
|
|
|
11
11
|
isPreReleaseVersion,
|
|
12
12
|
preReleaseWarning,
|
|
13
13
|
promptYesNo
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-ZHRQDZIK.js";
|
|
15
|
+
import "./chunk-76CVW4DE.js";
|
|
16
|
+
import "./chunk-CCTQO2Q4.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
|
|
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
|
-
| `--
|
|
17
|
-
| `--
|
|
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
|
-
|
|
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
|
|
29
|
-
- you want to
|
|
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
|
-
#
|
|
60
|
+
# Check status on the default testnet (//Alice as authorizer)
|
|
37
61
|
bulletin-bootstrap
|
|
38
62
|
|
|
39
|
-
#
|
|
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
|
-
- [
|
|
81
|
+
- [DEPLOYMENT.md](../DEPLOYMENT.md)
|
|
49
82
|
- [E2E test setup](./e2e-bootstrap.md)
|
|
83
|
+
- [Main README](../README.md)
|
package/docs/e2e-bootstrap.md
CHANGED
|
@@ -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).
|