@sig-net/midnight-contract-deploy 0.21.0-rc.2 → 0.21.0-rc.7

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/README.md CHANGED
@@ -32,6 +32,14 @@ const { contractAddress, txId } = await deploySignetContract(process.env);
32
32
 
33
33
  The generic plumbing (network config, wallets, funding, transaction submission) is exported from the package root as well, for deploy scripts of other Compact contracts.
34
34
 
35
+ ## Deploying from CI
36
+
37
+ The [sig-net/midnight-integration](https://github.com/sig-net/midnight-integration) repository deploys the singleton through its manually dispatched `deploy` workflow, which picks a network and a release tag and runs this flow on a runner with a local proof server.
38
+
39
+ - **The wallet needs faucet-funded NIGHT and nothing else.** The flow registers that NIGHT for dust generation and waits for the first spendable DUST, so a freshly funded seed works on the first run. A run whose wallet holds no NIGHT yet fails printing the wallet's NIGHT receive address (`mn_addr…`) and the network's faucet URL, ready to paste into the faucet.
40
+ - **The deployed address is recorded by a bot PR.** The workflow writes it into the `signetContractAddresses` table of [`@sig-net/midnight`](https://www.npmjs.com/package/@sig-net/midnight) and opens a pull request, so a human reviews the address before it ships to npm consumers.
41
+ - **A deploy sets NO contract maintenance authority.** The maintenance signing key is sampled and dropped, so a deployed contract can never be updated: every run creates a fresh, permanent contract instance, and moving forward means a new deployment while the existing contracts stay exactly as they are.
42
+
35
43
  ## Documentation
36
44
 
37
45
  The deployed contract is the singleton of the [sign bidirectional flow](https://github.com/sig-net/midnight-integration/blob/main/README.md#sign-bidirectional-flow), documented in the [sig-net/midnight-integration README](https://github.com/sig-net/midnight-integration/blob/main/README.md).
@@ -10,12 +10,17 @@ export interface SignetContractDeployment {
10
10
  * Deploy the signet contract: read config from `env`, build and prove the
11
11
  * deploy transaction and submit it through a synced wallet. Progress is
12
12
  * logged to the console. The contract takes no constructor arguments. Any
13
- * funded wallet can deploy; nothing about the deployer is sealed.
13
+ * funded wallet can deploy, and nothing about the deployer is sealed. The wallet
14
+ * needs NIGHT only: {@link ensureFeeReady} registers it for dust generation
15
+ * and waits for the first spendable DUST when the wallet has none yet.
14
16
  *
15
17
  * @param env - Environment map providing `DEPLOYER_SEED` and the shared
16
18
  * Midnight node configuration (see `getMidnightNodeConfig`).
17
19
  * @returns The deployed contract address and deploy transaction id.
18
- * @throws {Error} If the deployer wallet holds no funds or submission fails.
20
+ * @throws {WalletUnfundedError} If the deployer wallet holds neither NIGHT
21
+ * nor DUST: the error carries the wallet's NIGHT receive address to fund.
22
+ * @throws {Error} If no spendable DUST appears after registering the wallet's
23
+ * NIGHT, or submission fails.
19
24
  */
20
25
  export declare function deploySignetContract(env?: Record<string, string | undefined>): Promise<SignetContractDeployment>;
21
26
  //# sourceMappingURL=deploy-signet-contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-signet-contract.d.ts","sourceRoot":"","sources":["../src/deploy-signet-contract.ts"],"names":[],"mappings":"AAaA,OAAO,EAGL,KAAK,qBAAqB,EAE3B,MAAM,sBAAsB,CAAC;AAM9B,8DAA8D;AAC9D,MAAM,WAAW,wBAAwB;IACvC,2DAA2D;IAC3D,eAAe,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,IAAI,EAAE,qBAAqB,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAAC,wBAAwB,CAAC,CAqCnC"}
1
+ {"version":3,"file":"deploy-signet-contract.d.ts","sourceRoot":"","sources":["../src/deploy-signet-contract.ts"],"names":[],"mappings":"AAWA,OAAO,EAGL,KAAK,qBAAqB,EAE3B,MAAM,sBAAsB,CAAC;AAM9B,8DAA8D;AAC9D,MAAM,WAAW,wBAAwB;IACvC,2DAA2D;IAC3D,eAAe,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,IAAI,EAAE,qBAAqB,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAAC,wBAAwB,CAAC,CAqCnC"}
@@ -5,19 +5,26 @@
5
5
  // events: verification is the reader's job). Requires the contract
6
6
  // package's compiled assets to carry keys (its published dist/managed
7
7
  // always does; an in-repo checkout needs `yarn compile:zk`).
8
- import { assertDeployerFunded, buildDeployTransaction, getDeployConfig, } from "./plumbing/deploy.js";
8
+ import { buildDeployTransaction, getDeployConfig } from "./plumbing/deploy.js";
9
+ import { ensureFeeReady } from "./plumbing/funding.js";
10
+ import { getFaucetUrl } from "./plumbing/midnight-node-config.js";
9
11
  import { deriveAccountKeys, submitUnprovenTransaction, withSyncedWalletFacade, } from "./plumbing/wallet.js";
10
12
  import { createSignetContractPrivateState, signetContractCompiledContract, } from "./signet-contract-binding.js";
11
13
  /**
12
14
  * Deploy the signet contract: read config from `env`, build and prove the
13
15
  * deploy transaction and submit it through a synced wallet. Progress is
14
16
  * logged to the console. The contract takes no constructor arguments. Any
15
- * funded wallet can deploy; nothing about the deployer is sealed.
17
+ * funded wallet can deploy, and nothing about the deployer is sealed. The wallet
18
+ * needs NIGHT only: {@link ensureFeeReady} registers it for dust generation
19
+ * and waits for the first spendable DUST when the wallet has none yet.
16
20
  *
17
21
  * @param env - Environment map providing `DEPLOYER_SEED` and the shared
18
22
  * Midnight node configuration (see `getMidnightNodeConfig`).
19
23
  * @returns The deployed contract address and deploy transaction id.
20
- * @throws {Error} If the deployer wallet holds no funds or submission fails.
24
+ * @throws {WalletUnfundedError} If the deployer wallet holds neither NIGHT
25
+ * nor DUST: the error carries the wallet's NIGHT receive address to fund.
26
+ * @throws {Error} If no spendable DUST appears after registering the wallet's
27
+ * NIGHT, or submission fails.
21
28
  */
22
29
  export async function deploySignetContract(env = process.env) {
23
30
  const deployConfig = getDeployConfig(env);
@@ -25,7 +32,7 @@ export async function deploySignetContract(env = process.env) {
25
32
  const accountKeys = deriveAccountKeys(deployConfig.deployerSeed, networkId);
26
33
  console.log(`deploying signet-contract to ${networkId} (${deployConfig.midnightNodeConfig.nodeUrl})`);
27
34
  const { contractAddress, txId } = await withSyncedWalletFacade(accountKeys, deployConfig.midnightNodeConfig, async (facade, state) => {
28
- assertDeployerFunded(state);
35
+ await ensureFeeReady(facade, accountKeys, state, networkId, getFaucetUrl(env, networkId));
29
36
  const deployTransaction = await buildDeployTransaction(signetContractCompiledContract, networkId, accountKeys.shieldedSecretKeys.coinPublicKey, createSignetContractPrivateState());
30
37
  console.log(`contract address (pre-submit): ${deployTransaction.contractAddress}`);
31
38
  const submittedTxId = await submitUnprovenTransaction(facade, accountKeys, deployTransaction.serializedTransaction);
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-signet-contract.js","sourceRoot":"","sources":["../src/deploy-signet-contract.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,0EAA0E;AAC1E,0EAA0E;AAC1E,uEAAuE;AACvE,mEAAmE;AACnE,sEAAsE;AACtE,6DAA6D;AAE7D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EAEzB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,8BAA8B,CAAC;AAUtC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAG,GAAuC,OAAO,CAAC,GAAG;IAErD,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,kBAAkB,CAAC;IAEtD,MAAM,WAAW,GAAG,iBAAiB,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAE5E,OAAO,CAAC,GAAG,CACT,gCAAgC,SAAS,KAAK,YAAY,CAAC,kBAAkB,CAAC,OAAO,GAAG,CACzF,CAAC;IAEF,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,MAAM,sBAAsB,CAC5D,WAAW,EACX,YAAY,CAAC,kBAAkB,EAC/B,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;QACtB,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAE5B,MAAM,iBAAiB,GAAG,MAAM,sBAAsB,CACpD,8BAA8B,EAC9B,SAAS,EACT,WAAW,CAAC,kBAAkB,CAAC,aAAa,EAC5C,gCAAgC,EAAE,CACnC,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,kCAAkC,iBAAiB,CAAC,eAAe,EAAE,CAAC,CAAC;QAEnF,MAAM,aAAa,GAAG,MAAM,yBAAyB,CACnD,MAAM,EACN,WAAW,EACX,iBAAiB,CAAC,qBAAqB,CACxC,CAAC;QACF,OAAO,EAAE,eAAe,EAAE,iBAAiB,CAAC,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IACrF,CAAC,CACF,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,+BAA+B,eAAe,EAAE,CAAC,CAAC;IAE9D,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"deploy-signet-contract.js","sourceRoot":"","sources":["../src/deploy-signet-contract.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,0EAA0E;AAC1E,0EAA0E;AAC1E,uEAAuE;AACvE,mEAAmE;AACnE,sEAAsE;AACtE,6DAA6D;AAE7D,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EAEzB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,8BAA8B,CAAC;AAUtC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAG,GAAuC,OAAO,CAAC,GAAG;IAErD,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,kBAAkB,CAAC;IAEtD,MAAM,WAAW,GAAG,iBAAiB,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAE5E,OAAO,CAAC,GAAG,CACT,gCAAgC,SAAS,KAAK,YAAY,CAAC,kBAAkB,CAAC,OAAO,GAAG,CACzF,CAAC;IAEF,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,MAAM,sBAAsB,CAC5D,WAAW,EACX,YAAY,CAAC,kBAAkB,EAC/B,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;QACtB,MAAM,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;QAE1F,MAAM,iBAAiB,GAAG,MAAM,sBAAsB,CACpD,8BAA8B,EAC9B,SAAS,EACT,WAAW,CAAC,kBAAkB,CAAC,aAAa,EAC5C,gCAAgC,EAAE,CACnC,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,kCAAkC,iBAAiB,CAAC,eAAe,EAAE,CAAC,CAAC;QAEnF,MAAM,aAAa,GAAG,MAAM,yBAAyB,CACnD,MAAM,EACN,WAAW,EACX,iBAAiB,CAAC,qBAAqB,CACxC,CAAC;QACF,OAAO,EAAE,eAAe,EAAE,iBAAiB,CAAC,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IACrF,CAAC,CACF,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,+BAA+B,eAAe,EAAE,CAAC,CAAC;IAE9D,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import { CompiledContract, type Contract } from "@midnight-ntwrk/compact-js/effect";
2
- import type { FacadeState } from "@midnightntwrk/wallet-sdk-facade";
3
2
  import { type Types } from "effect";
4
3
  import { type MidnightNodeConfig } from "./midnight-node-config.ts";
5
4
  import { type NetworkId } from "./network-id.ts";
@@ -59,19 +58,6 @@ export declare function makeCompiledContract<C extends Contract.Contract<PS>, PS
59
58
  * @returns The fully-bound {@link CompiledContract.CompiledContract}, ready for {@link buildDeployTransaction}.
60
59
  */
61
60
  export declare function makeVacantCompiledContract<C extends Contract.Contract<PS>, PS>(tag: string, ctor: Types.Ctor<C>, managedDirPath: string): CompiledContract.CompiledContract<C, PS>;
62
- /**
63
- * Convert a contract address (hex, optional `0x`) into the reference shape a
64
- * Compact contract-typed constructor arg expects: `{ bytes: Uint8Array(32) }`.
65
- * Deploy scripts use this to seal a cross-contract reference (e.g. the
66
- * central signet contract) read from the environment.
67
- *
68
- * @param contractAddress - The 32-byte contract address in hex.
69
- * @returns The `{ bytes }` reference.
70
- * @throws {Error} If the address is not 32 bytes of hex.
71
- */
72
- export declare function contractAddressToReference(contractAddress: string): {
73
- bytes: Uint8Array;
74
- };
75
61
  /**
76
62
  * Build an UNPROVEN contract-deploy transaction: run the Compact constructor
77
63
  * with `constructorArgs`, attach the verifier keys from the compiled assets,
@@ -89,12 +75,4 @@ export declare function contractAddressToReference(contractAddress: string): {
89
75
  * compiled assets (run `compile:zk` — the default `--skip-zk` output has none).
90
76
  */
91
77
  export declare function buildDeployTransaction<C extends Contract.Contract<PS>, PS>(compiledContract: CompiledContract.CompiledContract<C, PS>, networkId: NetworkId, coinPublicKeyHex: string, initialPrivateState: PS, ...constructorArgs: Contract.Contract.InitializeParameters<C>): Promise<DeployTransaction>;
92
- /**
93
- * Fail fast when the deployer wallet cannot pay for a transaction: fees are
94
- * paid in DUST, which only generates on NIGHT registered for dust generation.
95
- *
96
- * @param state - The synced facade state to inspect (see `withSyncedWalletFacade` in wallet.ts).
97
- * @throws {Error} If the deployer's spendable DUST balance is zero.
98
- */
99
- export declare function assertDeployerFunded(state: FacadeState): void;
100
78
  //# sourceMappingURL=deploy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/plumbing/deploy.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,gBAAgB,EAChB,KAAK,QAAQ,EAEd,MAAM,mCAAmC,CAAC;AAK3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAyB,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAG3D,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE3E,2GAA2G;AAC3G,MAAM,WAAW,YAAY;IAC3B,iFAAiF;IACjF,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAID,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,qEAC+B,CAAC;AAgDrE;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,YAAY,CAMd;AAED,gGAAgG;AAChG,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,0FAA0F;IAC1F,QAAQ,CAAC,qBAAqB,EAAE,UAAU,CAAC;CAC5C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EACtE,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EACnB,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EACzC,cAAc,EAAE,MAAM,GACrB,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,CAI1C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAC5E,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EACnB,cAAc,EAAE,MAAM,GACrB,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,CAI1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,eAAe,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,CAUzF;AAKD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,SAAS,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAC9E,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,EAC1D,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,EAAE,EACvB,GAAG,eAAe,EAAE,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAC5D,OAAO,CAAC,iBAAiB,CAAC,CA0C5B;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAQ7D"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/plumbing/deploy.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,gBAAgB,EAChB,KAAK,QAAQ,EAEd,MAAM,mCAAmC,CAAC;AAK3C,OAAO,EAAyB,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAG3D,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE3E,2GAA2G;AAC3G,MAAM,WAAW,YAAY;IAC3B,iFAAiF;IACjF,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAID,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,qEAC+B,CAAC;AAgDrE;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,YAAY,CAMd;AAED,gGAAgG;AAChG,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,0FAA0F;IAC1F,QAAQ,CAAC,qBAAqB,EAAE,UAAU,CAAC;CAC5C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EACtE,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EACnB,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EACzC,cAAc,EAAE,MAAM,GACrB,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,CAI1C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAC5E,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EACnB,cAAc,EAAE,MAAM,GACrB,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,CAI1C;AAKD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,SAAS,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAC9E,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,EAC1D,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,EAAE,EACvB,GAAG,eAAe,EAAE,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAC5D,OAAO,CAAC,iBAAiB,CAAC,CA0C5B"}
@@ -109,27 +109,6 @@ export function makeVacantCompiledContract(tag, ctor, managedDirPath) {
109
109
  const vacant = CompiledContract.withVacantWitnesses(base);
110
110
  return CompiledContract.withCompiledFileAssets(vacant, managedDirPath);
111
111
  }
112
- /**
113
- * Convert a contract address (hex, optional `0x`) into the reference shape a
114
- * Compact contract-typed constructor arg expects: `{ bytes: Uint8Array(32) }`.
115
- * Deploy scripts use this to seal a cross-contract reference (e.g. the
116
- * central signet contract) read from the environment.
117
- *
118
- * @param contractAddress - The 32-byte contract address in hex.
119
- * @returns The `{ bytes }` reference.
120
- * @throws {Error} If the address is not 32 bytes of hex.
121
- */
122
- export function contractAddressToReference(contractAddress) {
123
- const hex = contractAddress.startsWith("0x") ? contractAddress.slice(2) : contractAddress;
124
- if (!/^[0-9a-fA-F]{64}$/.test(hex)) {
125
- throw new Error(`not a 32-byte contract address in hex: "${contractAddress}"`);
126
- }
127
- const bytes = new Uint8Array(32);
128
- for (let i = 0; i < 32; i++) {
129
- bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
130
- }
131
- return { bytes };
132
- }
133
112
  // How long the deploy intent stays valid before it must be re-built.
134
113
  const DEPLOY_TTL_MS = 30 * 60 * 1000;
135
114
  /**
@@ -172,19 +151,4 @@ export async function buildDeployTransaction(compiledContract, networkId, coinPu
172
151
  serializedTransaction: transaction.serialize(),
173
152
  };
174
153
  }
175
- /**
176
- * Fail fast when the deployer wallet cannot pay for a transaction: fees are
177
- * paid in DUST, which only generates on NIGHT registered for dust generation.
178
- *
179
- * @param state - The synced facade state to inspect (see `withSyncedWalletFacade` in wallet.ts).
180
- * @throws {Error} If the deployer's spendable DUST balance is zero.
181
- */
182
- export function assertDeployerFunded(state) {
183
- const dust = state.dust.balance(new Date());
184
- if (dust > 0n)
185
- return;
186
- const night = Object.values(state.unshielded.balances).reduce((sum, value) => sum + value, 0n);
187
- throw new Error(`deployer wallet has no DUST to pay fees (NIGHT balance: ${String(night)}). ` +
188
- "Fund the wallet with NIGHT and register it for dust generation, then retry.");
189
- }
190
154
  //# sourceMappingURL=deploy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/plumbing/deploy.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,yEAAyE;AACzE,0EAA0E;AAC1E,+EAA+E;AAC/E,+EAA+E;AAC/E,0DAA0D;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,gBAAgB,EAEhB,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,KAAK,aAAa,MAAM,kDAAkD,CAAC;AAClF,OAAO,KAAK,aAAa,MAAM,kDAAkD,CAAC;AAClF,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAc,MAAM,QAAQ,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EACL,YAAY,EACZ,qBAAqB,GAEtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAkB,MAAM,iBAAiB,CAAC;AAU3E,wEAAwE;AACxE,uEAAuE;AACvE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,wBAAwB,GACnC,kEAAkE,CAAC;AAErE,sEAAsE;AACtE,0EAA0E;AAC1E,oDAAoD;AACpD,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,wBAAwB,CAAC;AACpF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,mBAAmB,CAC1B,GAAuC,EACvC,SAAoB;IAEpB,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACtD,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,OAAO,QAAQ,IAAI,wBAAwB,CAAC;IAC9C,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM;QACrB,CAAC,CAAC,qBAAqB,MAAM,EAAE;QAC/B,CAAC,CAAC,wCAAwC,CAAC;IAC7C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,iCAAiC,SAAS,yDAAyD;YACjG,6EAA6E,QAAQ,GAAG,CAC3F,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,0EAA0E,SAAS,KAAK;YACtF,GAAG,QAAQ,+BAA+B,CAC7C,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAG,GAAuC,OAAO,CAAC,GAAG;IAErD,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACtD,OAAO;QACL,kBAAkB;QAClB,YAAY,EAAE,mBAAmB,CAAC,GAAG,EAAE,kBAAkB,CAAC,SAAS,CAAC;KACrE,CAAC;AACJ,CAAC;AAUD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAW,EACX,IAAmB,EACnB,SAAyC,EACzC,cAAsB;IAEtB,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAQ,GAAG,EAAE,IAAI,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtE,OAAO,gBAAgB,CAAC,sBAAsB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,0BAA0B,CACxC,GAAW,EACX,IAAmB,EACnB,cAAsB;IAEtB,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAQ,GAAG,EAAE,IAAI,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO,gBAAgB,CAAC,sBAAsB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,0BAA0B,CAAC,eAAuB;IAChE,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;IAC1F,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,2CAA2C,eAAe,GAAG,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,qEAAqE;AACrE,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAErC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,gBAA0D,EAC1D,SAAoB,EACpB,gBAAwB,EACxB,mBAAuB,EACvB,GAAG,eAA0D;IAE7D,yEAAyE;IACzE,qEAAqE;IACrE,sEAAsE;IACtE,8DAA8D;IAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;QAClD,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAClD,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE;KACnC,CAAC,CAAC;IAEH,iFAAiF;IACjF,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,UAAU,CAC1C,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC;SACtC,UAAU,CAAC,mBAAmB,EAAE,GAAG,eAAe,CAAC;SACnD,IAAI,CACH,MAAM,CAAC,OAAO,CACZ,mBAAmB,CAAC,KAAK,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CACpF,EACD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EACjC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAC1B,CACJ,CAAC;IAEF,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,CACpD,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,CAC9C,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACzF,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,mBAAmB,CACxD,SAAS,EACT,SAAS,EACT,SAAS,EACT,MAAM,CACP,CAAC;IAEF,OAAO;QACL,eAAe,EAAE,MAAM,CAAC,OAAO;QAC/B,qBAAqB,EAAE,WAAW,CAAC,SAAS,EAAE;KAC/C,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAkB;IACrD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC5C,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO;IACtB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/F,MAAM,IAAI,KAAK,CACb,2DAA2D,MAAM,CAAC,KAAK,CAAC,KAAK;QAC3E,6EAA6E,CAChF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/plumbing/deploy.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { MidnightNodeConfig } from "./midnight-node-config.ts";
2
- import { type WalletAddresses } from "./wallet.ts";
2
+ import { type NetworkId } from "./network-id.ts";
3
+ import { type AccountKeys, type FacadeState, type WalletAddresses, type WalletFacade } from "./wallet.ts";
3
4
  /** A wallet's synced funding snapshot: its addresses and NIGHT/DUST balances (base units). */
4
5
  export interface AccountFunding {
5
6
  /** The wallet's three bech32m addresses (network-prefixed). */
@@ -34,11 +35,13 @@ export declare function readAccountFunding(config: MidnightNodeConfig, seed: str
34
35
  */
35
36
  export declare function isFeeReady(funding: AccountFunding): boolean;
36
37
  /**
37
- * The root wallet holds no funds on a deployed network until its NIGHT
38
- * receive address is faucet-funded. Thrown by {@link assertRootFunded} so the
39
- * setup pipeline can STOP with the exact address and faucet URL to act on.
38
+ * A wallet holds no NIGHT and no DUST, so it cannot pay fees until its NIGHT
39
+ * receive address is funded (on a deployed network, via the network's
40
+ * faucet). Thrown by {@link ensureFeeReady} and {@link assertRootFunded},
41
+ * carrying the exact address and faucet URL to act on, so a setup pipeline
42
+ * can STOP printing them.
40
43
  */
41
- export declare class RootUnfundedError extends Error {
44
+ export declare class WalletUnfundedError extends Error {
42
45
  readonly nightAddress: string;
43
46
  readonly faucetUrl: string | undefined;
44
47
  /**
@@ -47,32 +50,56 @@ export declare class RootUnfundedError extends Error {
47
50
  */
48
51
  constructor(nightAddress: string, faucetUrl: string | undefined);
49
52
  }
53
+ /**
54
+ * Bring one wallet to fee-ready and return its spendable DUST balance. Fees
55
+ * are paid in DUST, which only generates on NIGHT registered for dust
56
+ * generation, so every unregistered NIGHT UTXO the wallet holds is registered
57
+ * here first, whatever its current dust: a faucet top-up or transfer change
58
+ * arrives unregistered, and leaving it so while older dust lasts would let
59
+ * the wallet's dust generation shrink with every spend. Then a wallet with
60
+ * spendable dust returns it, and one without waits until its first dust
61
+ * appears (a few blocks). The facade must be started and synced, and `state`
62
+ * must be its synced state (see `withSyncedWalletFacade` in wallet.ts).
63
+ *
64
+ * @param facade - A started wallet facade for `keys`, which submits the registration.
65
+ * @param keys - The key material of the same wallet. Its keystore signs the registration.
66
+ * @param state - The synced facade state the balances and NIGHT UTXOs are read from.
67
+ * @param networkId - The network the wallet lives on, which prefixes the
68
+ * NIGHT receive address the no-NIGHT error prints for faucet funding.
69
+ * @param faucetUrl - The network's faucet for the no-NIGHT hint, when one is known.
70
+ * @returns The wallet's spendable DUST balance, always positive.
71
+ * @throws {WalletUnfundedError} If the wallet holds neither NIGHT nor DUST.
72
+ * @throws {Error} If no dust appears in time after registration (see
73
+ * {@link waitForSpendableDust}).
74
+ */
75
+ export declare function ensureFeeReady(facade: WalletFacade, keys: AccountKeys, state: FacadeState, networkId: NetworkId, faucetUrl?: string): Promise<bigint>;
50
76
  /**
51
77
  * Ensure the root wallet is fee-ready, returning its snapshot. Root holds no
52
78
  * NIGHT on a deployed network before faucet funding, so this throws
53
- * {@link RootUnfundedError} (NIGHT address + faucet URL) when NIGHT is zero.
79
+ * {@link WalletUnfundedError} (NIGHT address + faucet URL) when NIGHT is zero.
54
80
  * On the local standalone chain, where genesis funds root by construction, a
55
81
  * zero balance is instead retried until the indexer catches up (see
56
- * {@link GENESIS_INDEX_TIMEOUT_MS}). Otherwise it registers root's NIGHT for
57
- * dust generation and waits for a spendable DUST balance, because root pays
58
- * the children's funding transfers in DUST: the local genesis root is already
59
- * registered (a no-op here), but a faucet-funded root is not, and would have
60
- * no DUST to spend.
82
+ * {@link GENESIS_INDEX_TIMEOUT_MS}). Root pays the children's funding
83
+ * transfers in DUST, so with NIGHT proven present it finishes through
84
+ * {@link ensureFeeReady}: a faucet-funded root needs its NIGHT registered for
85
+ * dust generation before it holds any spendable DUST.
61
86
  *
62
87
  * @param config - The stack the root wallet connects to.
63
88
  * @param rootSeed - The root wallet seed.
64
89
  * @param faucetUrl - The network's faucet URL for the underfunded message.
65
90
  * @returns The root's fee-ready funding snapshot.
66
- * @throws {RootUnfundedError} If root holds no NIGHT, or if no dust
67
- * appears in time after registration.
91
+ * @throws {WalletUnfundedError} If root holds no NIGHT.
92
+ * @throws {Error} If no dust appears in time after registration (see
93
+ * {@link waitForSpendableDust}): root is funded but not yet fee-ready, so
94
+ * this is a plain error, not a funding stop.
68
95
  */
69
96
  export declare function assertRootFunded(config: MidnightNodeConfig, rootSeed: string, faucetUrl: string | undefined): Promise<AccountFunding>;
70
97
  /**
71
98
  * Bring one child wallet to fee-ready by topping it up from root: if it holds
72
- * no NIGHT, transfer `amount` from root and wait for the child to see it; then
73
- * register the child's NIGHT for dust generation and wait for spendable dust.
74
- * A child that already holds NIGHT but no dust yet is only registered + waited
75
- * (no transfer). Call only for a child that is not already fee-ready.
99
+ * no NIGHT, transfer `amount` from root and wait for the child to see it, then
100
+ * finish through {@link ensureFeeReady}. A child that already holds NIGHT but
101
+ * no dust yet is only registered and waited on (no transfer). Call only for a
102
+ * child that is not already fee-ready.
76
103
  *
77
104
  * @param config - The stack both wallets connect to.
78
105
  * @param rootSeed - The funding wallet's seed.
@@ -1 +1 @@
1
- {"version":3,"file":"funding.d.ts","sourceRoot":"","sources":["../../src/plumbing/funding.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAOL,KAAK,eAAe,EAErB,MAAM,aAAa,CAAC;AAErB,8FAA8F;AAC9F,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAYD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,eAAe,CAE/F;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,CAUzB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAE3D;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAMxC,QAAQ,CAAC,YAAY,EAAE,MAAM;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IANxC;;;OAGG;IACH,YACW,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAAG,SAAS,EASvC;CACF;AASD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,cAAc,CAAC,CAqBzB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAsCzB"}
1
+ {"version":3,"file":"funding.d.ts","sourceRoot":"","sources":["../../src/plumbing/funding.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EACL,KAAK,WAAW,EAGhB,KAAK,WAAW,EAIhB,KAAK,eAAe,EACpB,KAAK,YAAY,EAElB,MAAM,aAAa,CAAC;AAErB,8FAA8F;AAC9F,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAYD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,eAAe,CAE/F;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,CAUzB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAE3D;AAED;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAM1C,QAAQ,CAAC,YAAY,EAAE,MAAM;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IANxC;;;OAGG;IACH,YACW,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAAG,SAAS,EASvC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,SAAS,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAajB;AASD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,cAAc,CAAC,CAmBzB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAqCzB"}
@@ -57,11 +57,13 @@ export function isFeeReady(funding) {
57
57
  return funding.night > 0n && funding.dust > 0n;
58
58
  }
59
59
  /**
60
- * The root wallet holds no funds on a deployed network until its NIGHT
61
- * receive address is faucet-funded. Thrown by {@link assertRootFunded} so the
62
- * setup pipeline can STOP with the exact address and faucet URL to act on.
60
+ * A wallet holds no NIGHT and no DUST, so it cannot pay fees until its NIGHT
61
+ * receive address is funded (on a deployed network, via the network's
62
+ * faucet). Thrown by {@link ensureFeeReady} and {@link assertRootFunded},
63
+ * carrying the exact address and faucet URL to act on, so a setup pipeline
64
+ * can STOP printing them.
63
65
  */
64
- export class RootUnfundedError extends Error {
66
+ export class WalletUnfundedError extends Error {
65
67
  nightAddress;
66
68
  faucetUrl;
67
69
  /**
@@ -70,14 +72,52 @@ export class RootUnfundedError extends Error {
70
72
  */
71
73
  constructor(nightAddress, faucetUrl) {
72
74
  const where = faucetUrl ? `at ${faucetUrl}` : "via the network's faucet";
73
- super(`root wallet holds no NIGHT. Fund it ${where}, then rerun.\n` +
75
+ super(`wallet holds no NIGHT and so cannot generate the DUST that pays fees. Fund it ${where}, then retry.\n` +
74
76
  ` NIGHT address: ${nightAddress}` +
75
77
  (faucetUrl ? `\n faucet: ${faucetUrl}` : ""));
76
78
  this.nightAddress = nightAddress;
77
79
  this.faucetUrl = faucetUrl;
78
- this.name = "RootUnfundedError";
80
+ this.name = "WalletUnfundedError";
79
81
  }
80
82
  }
83
+ /**
84
+ * Bring one wallet to fee-ready and return its spendable DUST balance. Fees
85
+ * are paid in DUST, which only generates on NIGHT registered for dust
86
+ * generation, so every unregistered NIGHT UTXO the wallet holds is registered
87
+ * here first, whatever its current dust: a faucet top-up or transfer change
88
+ * arrives unregistered, and leaving it so while older dust lasts would let
89
+ * the wallet's dust generation shrink with every spend. Then a wallet with
90
+ * spendable dust returns it, and one without waits until its first dust
91
+ * appears (a few blocks). The facade must be started and synced, and `state`
92
+ * must be its synced state (see `withSyncedWalletFacade` in wallet.ts).
93
+ *
94
+ * @param facade - A started wallet facade for `keys`, which submits the registration.
95
+ * @param keys - The key material of the same wallet. Its keystore signs the registration.
96
+ * @param state - The synced facade state the balances and NIGHT UTXOs are read from.
97
+ * @param networkId - The network the wallet lives on, which prefixes the
98
+ * NIGHT receive address the no-NIGHT error prints for faucet funding.
99
+ * @param faucetUrl - The network's faucet for the no-NIGHT hint, when one is known.
100
+ * @returns The wallet's spendable DUST balance, always positive.
101
+ * @throws {WalletUnfundedError} If the wallet holds neither NIGHT nor DUST.
102
+ * @throws {Error} If no dust appears in time after registration (see
103
+ * {@link waitForSpendableDust}).
104
+ */
105
+ export async function ensureFeeReady(facade, keys, state, networkId, faucetUrl) {
106
+ const dust = state.dust.balance(new Date());
107
+ if (totalNight(state) === 0n) {
108
+ if (dust > 0n)
109
+ return dust;
110
+ throw new WalletUnfundedError(deriveAddresses(keys, networkId).unshielded, faucetUrl);
111
+ }
112
+ const registered = await registerNightForDustGeneration(facade, keys, state);
113
+ if (registered > 0) {
114
+ console.log(`registered ${String(registered)} NIGHT UTXO(s) for dust generation`);
115
+ }
116
+ if (dust > 0n)
117
+ return dust;
118
+ console.log("waiting for spendable DUST...");
119
+ return waitForSpendableDust(facade);
120
+ }
81
121
  // A freshly composed local stack has a window where the indexer reports a
82
122
  // synced (empty) state before it has indexed the genesis block that funds the
83
123
  // genesis mint wallet — so a zero root balance there means "not indexed yet",
@@ -87,21 +127,22 @@ const GENESIS_INDEX_TIMEOUT_MS = 120_000;
87
127
  /**
88
128
  * Ensure the root wallet is fee-ready, returning its snapshot. Root holds no
89
129
  * NIGHT on a deployed network before faucet funding, so this throws
90
- * {@link RootUnfundedError} (NIGHT address + faucet URL) when NIGHT is zero.
130
+ * {@link WalletUnfundedError} (NIGHT address + faucet URL) when NIGHT is zero.
91
131
  * On the local standalone chain, where genesis funds root by construction, a
92
132
  * zero balance is instead retried until the indexer catches up (see
93
- * {@link GENESIS_INDEX_TIMEOUT_MS}). Otherwise it registers root's NIGHT for
94
- * dust generation and waits for a spendable DUST balance, because root pays
95
- * the children's funding transfers in DUST: the local genesis root is already
96
- * registered (a no-op here), but a faucet-funded root is not, and would have
97
- * no DUST to spend.
133
+ * {@link GENESIS_INDEX_TIMEOUT_MS}). Root pays the children's funding
134
+ * transfers in DUST, so with NIGHT proven present it finishes through
135
+ * {@link ensureFeeReady}: a faucet-funded root needs its NIGHT registered for
136
+ * dust generation before it holds any spendable DUST.
98
137
  *
99
138
  * @param config - The stack the root wallet connects to.
100
139
  * @param rootSeed - The root wallet seed.
101
140
  * @param faucetUrl - The network's faucet URL for the underfunded message.
102
141
  * @returns The root's fee-ready funding snapshot.
103
- * @throws {RootUnfundedError} If root holds no NIGHT, or if no dust
104
- * appears in time after registration.
142
+ * @throws {WalletUnfundedError} If root holds no NIGHT.
143
+ * @throws {Error} If no dust appears in time after registration (see
144
+ * {@link waitForSpendableDust}): root is funded but not yet fee-ready, so
145
+ * this is a plain error, not a funding stop.
105
146
  */
106
147
  export async function assertRootFunded(config, rootSeed, faucetUrl) {
107
148
  const keys = deriveAccountKeys(rootSeed, config.networkId);
@@ -117,20 +158,18 @@ export async function assertRootFunded(config, rootSeed, faucetUrl) {
117
158
  }
118
159
  }
119
160
  if (night === 0n) {
120
- throw new RootUnfundedError(addresses.unshielded, faucetUrl);
161
+ throw new WalletUnfundedError(addresses.unshielded, faucetUrl);
121
162
  }
122
- await registerNightForDustGeneration(facade, keys, state);
123
- const dustNow = state.dust.balance(new Date());
124
- const dust = dustNow > 0n ? dustNow : await waitForSpendableDust(facade);
163
+ const dust = await ensureFeeReady(facade, keys, state, config.networkId, faucetUrl);
125
164
  return { addresses, night, dust };
126
165
  });
127
166
  }
128
167
  /**
129
168
  * Bring one child wallet to fee-ready by topping it up from root: if it holds
130
- * no NIGHT, transfer `amount` from root and wait for the child to see it; then
131
- * register the child's NIGHT for dust generation and wait for spendable dust.
132
- * A child that already holds NIGHT but no dust yet is only registered + waited
133
- * (no transfer). Call only for a child that is not already fee-ready.
169
+ * no NIGHT, transfer `amount` from root and wait for the child to see it, then
170
+ * finish through {@link ensureFeeReady}. A child that already holds NIGHT but
171
+ * no dust yet is only registered and waited on (no transfer). Call only for a
172
+ * child that is not already fee-ready.
134
173
  *
135
174
  * @param config - The stack both wallets connect to.
136
175
  * @param rootSeed - The funding wallet's seed.
@@ -159,8 +198,7 @@ export async function fundChildFromRoot(config, rootSeed, childSeed, amount) {
159
198
  if (totalNight(state) === 0n) {
160
199
  throw new Error(`child wallet ${childAddresses.unshielded} shows no NIGHT after funding from root`);
161
200
  }
162
- await registerNightForDustGeneration(childFacade, childKeys, state);
163
- const dust = await waitForSpendableDust(childFacade);
201
+ const dust = await ensureFeeReady(childFacade, childKeys, state, config.networkId);
164
202
  return { addresses: childAddresses, night: totalNight(state), dust };
165
203
  });
166
204
  }
@@ -1 +1 @@
1
- {"version":3,"file":"funding.js","sourceRoot":"","sources":["../../src/plumbing/funding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"funding.js","sourceRoot":"","sources":["../../src/plumbing/funding.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,15 @@ export type Endpoints = Omit<MidnightNodeConfig, "networkId">;
18
18
  export declare const LOCAL_PROOF_SERVER = "http://127.0.0.1:6300";
19
19
  /** Baseline endpoints per network, before any environment override. */
20
20
  export declare const DEFAULT_ENDPOINTS: Record<NetworkId, Endpoints>;
21
- /** Known faucet URLs per network, used to build the fund-your-wallet hint. */
21
+ /**
22
+ * Faucet URLs per test network, for the fund-your-wallet hint: stagenet's
23
+ * own faucet, and the Nethermind-hosted Midnight faucets for preview and
24
+ * preprod. Mainnet carries real value and has no faucet, and the local
25
+ * standalone chain funds via genesis, so neither has an entry. The
26
+ * MIDNIGHT_FAUCET_URL environment variable overrides any entry and supplies
27
+ * one where there is none (see {@link getFaucetUrl}), and without either the
28
+ * hint degrades to a generic "fund via the network's faucet".
29
+ */
22
30
  export declare const FAUCET_URLS: Partial<Record<NetworkId, string>>;
23
31
  /**
24
32
  * The faucet URL to show in underfunded-wallet hints: `MIDNIGHT_FAUCET_URL`
@@ -36,10 +44,10 @@ export declare function getFaucetUrl(env: Record<string, string | undefined>, ne
36
44
  */
37
45
  export declare function indexerWsUrlFromIndexerUrl(indexerUrl: string): string;
38
46
  /**
39
- * Read a {@link MidnightNodeConfig} from the environment. With nothing set
40
- * this yields the local "undeployed" stack; a network with blank defaults
41
- * (stagenet its endpoints are not published in this repo) REQUIRES the
42
- * endpoint variables and fails naming the missing ones.
47
+ * Read a {@link MidnightNodeConfig} from the environment. Every network has
48
+ * complete built-in endpoints, so with nothing set this yields the local
49
+ * "undeployed" stack, and `NETWORK_ID` alone is enough to reach a deployed
50
+ * network.
43
51
  *
44
52
  * Parse flow:
45
53
  * 1. `NETWORK_ID` (default "undeployed", validated against {@link NETWORK_IDS})
@@ -48,13 +56,11 @@ export declare function indexerWsUrlFromIndexerUrl(indexerUrl: string): string;
48
56
  * `MIDNIGHT_NODE_URL`, `MIDNIGHT_NODE_INDEXER_URL`,
49
57
  * `MIDNIGHT_NODE_INDEXER_WS_URL`, `MIDNIGHT_NODE_PROOF_SERVER_URL`.
50
58
  * When the indexer URL is overridden without a WS override, the WS URL is
51
- * derived from it instead of keeping the baseline host.
52
- * 3. Every resolved endpoint must be non-empty.
59
+ * derived from it, keeping the pair on one host.
53
60
  *
54
61
  * @param env - The environment to read; defaults to `process.env`.
55
62
  * @returns The fully resolved node config.
56
- * @throws {Error} If `NETWORK_ID` is unknown, or an endpoint resolves empty (blank
57
- * default and no environment override).
63
+ * @throws {Error} If `NETWORK_ID` is unknown.
58
64
  */
59
65
  export declare function getMidnightNodeConfig(env?: Record<string, string | undefined>): MidnightNodeConfig;
60
66
  //# sourceMappingURL=midnight-node-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"midnight-node-config.d.ts","sourceRoot":"","sources":["../../src/plumbing/midnight-node-config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B;AAED,yEAAyE;AACzE,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;AAI9D,gDAAgD;AAChD,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAI1D,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,CAuC1D,CAAC;AASF,8EAA8E;AAC9E,eAAO,MAAM,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAM,CAAC;AAElE;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,SAAS,GACnB,MAAM,GAAG,SAAS,CAEpB;AAID;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKrE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,kBAAkB,CA4CpB"}
1
+ {"version":3,"file":"midnight-node-config.d.ts","sourceRoot":"","sources":["../../src/plumbing/midnight-node-config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B;AAED,yEAAyE;AACzE,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;AAI9D,gDAAgD;AAChD,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAI1D,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,CAiC1D,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAI1D,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,SAAS,GACnB,MAAM,GAAG,SAAS,CAEpB;AAID;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKrE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,kBAAkB,CA2BpB"}
@@ -15,18 +15,12 @@ export const DEFAULT_ENDPOINTS = {
15
15
  nodeUrl: "http://127.0.0.1:9944",
16
16
  proofServerUrl: LOCAL_PROOF_SERVER,
17
17
  },
18
- // Stagenet's endpoints are deliberately NOT published in this repo.
19
- // Provide them via the environment (repo-root .env), which
20
- // getMidnightNodeConfig REQUIRES for this network:
21
- // MIDNIGHT_NODE_URL — node RPC
22
- // MIDNIGHT_NODE_INDEXER_URL — indexer GraphQL over HTTP (the WS
23
- // twin derives from it when unset)
24
- // MIDNIGHT_NODE_INDEXER_WS_URL — indexer GraphQL over WebSocket
25
- // The proof server stays local (it sees private witness data).
18
+ // Stagenet runs the v4 indexer API, so its indexer paths differ from the
19
+ // v3 paths of the *.midnight.network networks below.
26
20
  [MidnightNetwork.Stagenet]: {
27
- indexerUrl: "",
28
- indexerWsUrl: "",
29
- nodeUrl: "",
21
+ indexerUrl: "https://indexer.stagenet.shielded.tools/api/v4/graphql",
22
+ indexerWsUrl: "wss://indexer.stagenet.shielded.tools/api/v4/graphql/ws",
23
+ nodeUrl: "https://rpc.stagenet.shielded.tools",
30
24
  proofServerUrl: LOCAL_PROOF_SERVER,
31
25
  },
32
26
  [MidnightNetwork.Preview]: {
@@ -48,15 +42,20 @@ export const DEFAULT_ENDPOINTS = {
48
42
  proofServerUrl: LOCAL_PROOF_SERVER,
49
43
  },
50
44
  };
51
- // Faucet URLs for the networks that publish one, for underfunded-wallet
52
- // hints. The local standalone chain funds via genesis, not a faucet, so it
53
- // has no entry. Stagenet's faucet URL is deliberately NOT published in this
54
- // repo provide it via the MIDNIGHT_FAUCET_URL environment variable (see
55
- // {@link getFaucetUrl}); without it the hint degrades to a generic "fund via
56
- // the network's faucet". The public *.midnight.network faucet URLs are
57
- // omitted until confirmed.
58
- /** Known faucet URLs per network, used to build the fund-your-wallet hint. */
59
- export const FAUCET_URLS = {};
45
+ /**
46
+ * Faucet URLs per test network, for the fund-your-wallet hint: stagenet's
47
+ * own faucet, and the Nethermind-hosted Midnight faucets for preview and
48
+ * preprod. Mainnet carries real value and has no faucet, and the local
49
+ * standalone chain funds via genesis, so neither has an entry. The
50
+ * MIDNIGHT_FAUCET_URL environment variable overrides any entry and supplies
51
+ * one where there is none (see {@link getFaucetUrl}), and without either the
52
+ * hint degrades to a generic "fund via the network's faucet".
53
+ */
54
+ export const FAUCET_URLS = {
55
+ [MidnightNetwork.Stagenet]: "https://faucet.stagenet.shielded.tools",
56
+ [MidnightNetwork.Preview]: "https://midnight-tmnight-preview.nethermind.dev",
57
+ [MidnightNetwork.Preprod]: "https://midnight-tmnight-preprod.nethermind.dev",
58
+ };
60
59
  /**
61
60
  * The faucet URL to show in underfunded-wallet hints: `MIDNIGHT_FAUCET_URL`
62
61
  * from the environment when set, else the network's {@link FAUCET_URLS}
@@ -82,10 +81,10 @@ export function indexerWsUrlFromIndexerUrl(indexerUrl) {
82
81
  return url.toString();
83
82
  }
84
83
  /**
85
- * Read a {@link MidnightNodeConfig} from the environment. With nothing set
86
- * this yields the local "undeployed" stack; a network with blank defaults
87
- * (stagenet its endpoints are not published in this repo) REQUIRES the
88
- * endpoint variables and fails naming the missing ones.
84
+ * Read a {@link MidnightNodeConfig} from the environment. Every network has
85
+ * complete built-in endpoints, so with nothing set this yields the local
86
+ * "undeployed" stack, and `NETWORK_ID` alone is enough to reach a deployed
87
+ * network.
89
88
  *
90
89
  * Parse flow:
91
90
  * 1. `NETWORK_ID` (default "undeployed", validated against {@link NETWORK_IDS})
@@ -94,13 +93,11 @@ export function indexerWsUrlFromIndexerUrl(indexerUrl) {
94
93
  * `MIDNIGHT_NODE_URL`, `MIDNIGHT_NODE_INDEXER_URL`,
95
94
  * `MIDNIGHT_NODE_INDEXER_WS_URL`, `MIDNIGHT_NODE_PROOF_SERVER_URL`.
96
95
  * When the indexer URL is overridden without a WS override, the WS URL is
97
- * derived from it instead of keeping the baseline host.
98
- * 3. Every resolved endpoint must be non-empty.
96
+ * derived from it, keeping the pair on one host.
99
97
  *
100
98
  * @param env - The environment to read; defaults to `process.env`.
101
99
  * @returns The fully resolved node config.
102
- * @throws {Error} If `NETWORK_ID` is unknown, or an endpoint resolves empty (blank
103
- * default and no environment override).
100
+ * @throws {Error} If `NETWORK_ID` is unknown.
104
101
  */
105
102
  export function getMidnightNodeConfig(env = process.env) {
106
103
  const networkId = envOrUndefined(env, "NETWORK_ID") ?? MidnightNetwork.Undeployed;
@@ -116,29 +113,12 @@ export function getMidnightNodeConfig(env = process.env) {
116
113
  (indexerOverride === undefined
117
114
  ? defaults.indexerWsUrl
118
115
  : indexerWsUrlFromIndexerUrl(indexerUrl));
119
- const config = {
116
+ return {
120
117
  networkId,
121
118
  indexerUrl,
122
119
  indexerWsUrl,
123
120
  nodeUrl: envOrUndefined(env, "MIDNIGHT_NODE_URL") ?? defaults.nodeUrl,
124
121
  proofServerUrl: envOrUndefined(env, "MIDNIGHT_NODE_PROOF_SERVER_URL") ?? defaults.proofServerUrl,
125
122
  };
126
- // A blank default means the network's endpoints are not published in this
127
- // repo (stagenet) — the environment must supply them, so fail with the
128
- // exact variables to set.
129
- const missing = [];
130
- if (!config.nodeUrl)
131
- missing.push("MIDNIGHT_NODE_URL");
132
- if (!config.indexerUrl)
133
- missing.push("MIDNIGHT_NODE_INDEXER_URL");
134
- if (!config.indexerWsUrl)
135
- missing.push("MIDNIGHT_NODE_INDEXER_WS_URL");
136
- if (!config.proofServerUrl)
137
- missing.push("MIDNIGHT_NODE_PROOF_SERVER_URL");
138
- if (missing.length > 0) {
139
- throw new Error(`network "${networkId}" has no built-in endpoints in this repo — set ${missing.join(", ")} ` +
140
- `in the environment (or the repo-root .env).`);
141
- }
142
- return config;
143
123
  }
144
124
  //# sourceMappingURL=midnight-node-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"midnight-node-config.js","sourceRoot":"","sources":["../../src/plumbing/midnight-node-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"midnight-node-config.js","sourceRoot":"","sources":["../../src/plumbing/midnight-node-config.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAkB,MAAM,iBAAiB,CAAC;AAmB/E,0EAA0E;AAC1E,qCAAqC;AACrC,gDAAgD;AAChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;AAE1D,0EAA0E;AAC1E,8CAA8C;AAC9C,uEAAuE;AACvE,MAAM,CAAC,MAAM,iBAAiB,GAAiC;IAC7D,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;QAC5B,UAAU,EAAE,sCAAsC;QAClD,YAAY,EAAE,uCAAuC;QACrD,OAAO,EAAE,uBAAuB;QAChC,cAAc,EAAE,kBAAkB;KACnC;IACD,yEAAyE;IACzE,qDAAqD;IACrD,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;QAC1B,UAAU,EAAE,wDAAwD;QACpE,YAAY,EAAE,yDAAyD;QACvE,OAAO,EAAE,qCAAqC;QAC9C,cAAc,EAAE,kBAAkB;KACnC;IACD,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;QACzB,UAAU,EAAE,yDAAyD;QACrE,YAAY,EAAE,0DAA0D;QACxE,OAAO,EAAE,sCAAsC;QAC/C,cAAc,EAAE,kBAAkB;KACnC;IACD,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;QACzB,UAAU,EAAE,yDAAyD;QACrE,YAAY,EAAE,0DAA0D;QACxE,OAAO,EAAE,sCAAsC;QAC/C,cAAc,EAAE,kBAAkB;KACnC;IACD,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;QACzB,UAAU,EAAE,yDAAyD;QACrE,YAAY,EAAE,0DAA0D;QACxE,OAAO,EAAE,sCAAsC;QAC/C,cAAc,EAAE,kBAAkB;KACnC;CACF,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAuC;IAC7D,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,wCAAwC;IACpE,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,iDAAiD;IAC5E,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,iDAAiD;CAC7E,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAuC,EACvC,SAAoB;IAEpB,OAAO,cAAc,CAAC,GAAG,EAAE,qBAAqB,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;AAC9E,CAAC;AAED,8EAA8E;AAC9E,kEAAkE;AAClE;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,UAAkB;IAC3D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1D,GAAG,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;IACvD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAAG,GAAuC,OAAO,CAAC,GAAG;IAErD,MAAM,SAAS,GAAc,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,eAAe,CAAC,UAAU,CAAC;IAC7F,6EAA6E;IAC7E,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACb,uBAAuB,SAAS,wBAAwB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,cAAc,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,eAAe,IAAI,QAAQ,CAAC,UAAU,CAAC;IAC1D,MAAM,YAAY,GAChB,cAAc,CAAC,GAAG,EAAE,8BAA8B,CAAC;QACnD,CAAC,eAAe,KAAK,SAAS;YAC5B,CAAC,CAAC,QAAQ,CAAC,YAAY;YACvB,CAAC,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC,CAAC;IAE9C,OAAO;QACL,SAAS;QACT,UAAU;QACV,YAAY;QACZ,OAAO,EAAE,cAAc,CAAC,GAAG,EAAE,mBAAmB,CAAC,IAAI,QAAQ,CAAC,OAAO;QACrE,cAAc,EACZ,cAAc,CAAC,GAAG,EAAE,gCAAgC,CAAC,IAAI,QAAQ,CAAC,cAAc;KACnF,CAAC;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import * as ledger from "@midnightntwrk/ledger-v9";
2
2
  import { type FacadeState, type TransactionIdentifier, WalletFacade } from "@midnightntwrk/wallet-sdk-facade";
3
+ import { WalletSeeds } from "@midnightntwrk/wallet-sdk-hd";
3
4
  import { type UnshieldedKeystore } from "@midnightntwrk/wallet-sdk-unshielded-wallet";
4
5
  import type { MidnightNodeConfig } from "./midnight-node-config.ts";
5
6
  import type { NetworkId } from "./network-id.ts";
@@ -7,7 +8,11 @@ export type { FacadeState, TransactionIdentifier, WalletFacade, } from "@midnigh
7
8
  export type { EncPublicKey } from "@midnightntwrk/ledger-v9";
8
9
  /** The live key material for one account. Reused for signing / balancing. */
9
10
  export interface AccountKeys {
11
+ /** The three per-wallet seeds the facade and its sub-wallets start from. */
12
+ seeds: WalletSeeds;
13
+ /** The shielded key pair the seeds derive: its coin and encryption public keys identify the account. */
10
14
  shieldedSecretKeys: ledger.ZswapSecretKeys;
15
+ /** The dust key the seeds derive: its public key is the dust address. */
11
16
  dustSecretKey: ledger.DustSecretKey;
12
17
  unshieldedKeystore: UnshieldedKeystore;
13
18
  }
@@ -48,13 +53,14 @@ export interface WalletFacadeOptions {
48
53
  additionalFeeOverhead?: bigint;
49
54
  }
50
55
  /**
51
- * Parse a seed and derive the three role keys (Zswap / NightExternal / Dust).
52
- * Pure crypto no network. This is the step that exercises the ledger WASM.
56
+ * Parse a seed and derive the three per-wallet seeds (Zswap / NightExternal /
57
+ * Dust roles at account 0, address index 0) plus the keys read off them.
58
+ * Pure crypto, no network. This is the step that exercises the ledger WASM.
53
59
  *
54
60
  * @param seed - The wallet seed, as hex or a BIP-39 mnemonic.
55
61
  * @param networkId - The network the unshielded keystore is bound to.
56
- * @returns The Zswap, Dust and unshielded role keys.
57
- * @throws {Error} If the seed is rejected by the HD wallet or key derivation fails.
62
+ * @returns The per-wallet seeds and the Zswap, Dust and unshielded keys.
63
+ * @throws {SeedDerivationError} If the seed cannot be walked to the three role seeds.
58
64
  */
59
65
  export declare function deriveAccountKeys(seed: string, networkId: NetworkId): AccountKeys;
60
66
  /**
@@ -84,7 +90,8 @@ export declare function initialiseWalletFacade(keys: AccountKeys, config: Midnig
84
90
  * @param keys - The key material of the same wallet, for balancing and signing.
85
91
  * @param serializedTransaction - The unproven transaction bytes.
86
92
  * @returns The submitted transaction's identifier.
87
- * @throws {Error} If the wallet cannot cover fees, proving fails, or the node rejects the transaction.
93
+ * @throws {Error} If the wallet still cannot cover fees after the balancing retry
94
+ * budget, proving fails, or the node rejects the transaction.
88
95
  */
89
96
  export declare function submitUnprovenTransaction(facade: WalletFacade, keys: AccountKeys, serializedTransaction: Uint8Array): Promise<TransactionIdentifier>;
90
97
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/plumbing/wallet.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AAWnD,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,qBAAqB,EAE1B,YAAY,EACb,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAGL,KAAK,kBAAkB,EAExB,MAAM,6CAA6C,CAAC;AAErD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAKjD,YAAY,EACV,WAAW,EACX,qBAAqB,EACrB,YAAY,GACb,MAAM,kCAAkC,CAAC;AAI1C,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,MAAM,CAAC,eAAe,CAAC;IAC3C,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC;IACpC,kBAAkB,EAAE,kBAAkB,CAAC;CACxC;AAED,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,+BAA+B,kBAAsB,CAAC;AAKnE;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,WAAW,CAqBjF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,GAAG,eAAe,CAUxF;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,YAAY,CAAC,CA+BvB;AAKD;;;;;;;;;;GAUG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,WAAW,EACjB,qBAAqB,EAAE,UAAU,GAChC,OAAO,CAAC,qBAAqB,CAAC,CAiBhC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,WAAW,EAClB,mBAAmB,EAAE,MAAM,EAC3B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC,CAiBhC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAMD;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,YAAY,EACpB,SAAS,SAAU,GAClB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,kBAAkB,EAC1B,EAAE,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EAC5D,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,CAAC,CAAC,CASZ"}
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/plumbing/wallet.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,11 @@
3
3
  // encoding and WalletFacade wiring. Pure crypto + facade construction — no
4
4
  // network I/O happens here (the facade connects only when started).
5
5
  import * as ledger from "@midnightntwrk/ledger-v9";
6
- import { InMemoryTransactionHistoryStorage } from "@midnightntwrk/wallet-sdk-abstractions";
6
+ import { InMemoryTransactionHistoryStorage, WalletTransaction, } from "@midnightntwrk/wallet-sdk-abstractions";
7
7
  import { DustAddress, MidnightBech32m, ShieldedAddress, ShieldedCoinPublicKey, ShieldedEncryptionPublicKey, UnshieldedAddress, } from "@midnightntwrk/wallet-sdk-address-format";
8
8
  import { DustWallet } from "@midnightntwrk/wallet-sdk-dust-wallet";
9
9
  import { mergeWalletEntries, WalletEntrySchema, WalletFacade, } from "@midnightntwrk/wallet-sdk-facade";
10
- import { HDWallet, Roles } from "@midnightntwrk/wallet-sdk-hd";
10
+ import { WalletSeeds } from "@midnightntwrk/wallet-sdk-hd";
11
11
  import { ShieldedWallet } from "@midnightntwrk/wallet-sdk-shielded";
12
12
  import { createKeystore, PublicKey as UnshieldedPublicKey, UnshieldedWallet, } from "@midnightntwrk/wallet-sdk-unshielded-wallet";
13
13
  import { parseSeed } from "./seed.js";
@@ -31,30 +31,22 @@ export const DEFAULT_ADDITIONAL_FEE_OVERHEAD = 50000000000000n;
31
31
  // Fee margin in blocks the facade balances with, alongside the overhead.
32
32
  const FEE_BLOCKS_MARGIN = 5;
33
33
  /**
34
- * Parse a seed and derive the three role keys (Zswap / NightExternal / Dust).
35
- * Pure crypto no network. This is the step that exercises the ledger WASM.
34
+ * Parse a seed and derive the three per-wallet seeds (Zswap / NightExternal /
35
+ * Dust roles at account 0, address index 0) plus the keys read off them.
36
+ * Pure crypto, no network. This is the step that exercises the ledger WASM.
36
37
  *
37
38
  * @param seed - The wallet seed, as hex or a BIP-39 mnemonic.
38
39
  * @param networkId - The network the unshielded keystore is bound to.
39
- * @returns The Zswap, Dust and unshielded role keys.
40
- * @throws {Error} If the seed is rejected by the HD wallet or key derivation fails.
40
+ * @returns The per-wallet seeds and the Zswap, Dust and unshielded keys.
41
+ * @throws {SeedDerivationError} If the seed cannot be walked to the three role seeds.
41
42
  */
42
43
  export function deriveAccountKeys(seed, networkId) {
43
44
  const { seed: seedBytes } = parseSeed(seed);
44
- const hd = HDWallet.fromSeed(seedBytes);
45
- if (hd.type !== "seedOk")
46
- throw new Error("HDWallet.fromSeed failed (seedError).");
47
- const derived = hd.hdWallet
48
- .selectAccount(0)
49
- .selectRoles([Roles.Zswap, Roles.NightExternal, Roles.Dust])
50
- .deriveKeysAt(0);
51
- if (derived.type !== "keysDerived")
52
- throw new Error("deriveKeysAt failed (keyOutOfBounds).");
53
- hd.hdWallet.clear();
54
- const shieldedSecretKeys = ledger.ZswapSecretKeys.fromSeed(derived.keys[Roles.Zswap]);
55
- const dustSecretKey = ledger.DustSecretKey.fromSeed(derived.keys[Roles.Dust]);
56
- const unshieldedKeystore = createKeystore({ kind: "schnorr", secret: derived.keys[Roles.NightExternal] }, networkId);
57
- return { shieldedSecretKeys, dustSecretKey, unshieldedKeystore };
45
+ const seeds = WalletSeeds.fromMasterSeed(seedBytes);
46
+ const shieldedSecretKeys = ledger.ZswapSecretKeys.fromSeed(seeds.shielded);
47
+ const dustSecretKey = ledger.DustSecretKey.fromSeed(seeds.dust);
48
+ const unshieldedKeystore = createKeystore({ kind: "schnorr", secret: seeds.unshielded }, networkId);
49
+ return { seeds, shieldedSecretKeys, dustSecretKey, unshieldedKeystore };
58
50
  }
59
51
  /**
60
52
  * Compute the three bech32m addresses from the keys. Pure — no network.
@@ -97,13 +89,53 @@ export function initialiseWalletFacade(keys, config, options = {}) {
97
89
  },
98
90
  txHistoryStorage: new InMemoryTransactionHistoryStorage(WalletEntrySchema, mergeWalletEntries),
99
91
  },
100
- shielded: (cfg) => ShieldedWallet(cfg).startWithSecretKeys(keys.shieldedSecretKeys),
92
+ shielded: (cfg) => ShieldedWallet(cfg).startWithSeed(keys.seeds.shielded),
101
93
  unshielded: (cfg) => UnshieldedWallet(cfg).startWithPublicKey(UnshieldedPublicKey.fromKeyStore(keys.unshieldedKeystore)),
102
- dust: (cfg) => DustWallet(cfg).startWithSecretKey(keys.dustSecretKey, ledger.LedgerParameters.initialParameters().dust),
94
+ dust: (cfg) => DustWallet(cfg).startWithSeed(keys.seeds.dust),
103
95
  });
104
96
  }
105
97
  // Recipes (balancing plans for submitted transactions) expire 30 min out.
106
98
  const RECIPE_TTL_MS = 30 * 60 * 1000;
99
+ // Balancing throws Wallet.InsufficientFunds ("could not balance dust") while
100
+ // the paying wallet's DUST is still generating: a young local chain accrues
101
+ // it block by block from the genesis NIGHT, and a freshly registered wallet
102
+ // on a deployed network starts from its first few units. Building the recipe
103
+ // costs no proving, so it is retried in place until the wallet covers the
104
+ // fee. A wallet with nothing to generate from fails fast in ensureFeeReady
105
+ // (funding.ts) before any of this, so the bounded retry cannot mask real
106
+ // underfunding.
107
+ const BALANCE_RETRY_INTERVAL_MS = 15_000;
108
+ const BALANCE_RETRY_TIMEOUT_MS = 6 * 60 * 1000;
109
+ /**
110
+ * Run a recipe-building call, retrying while it fails for lack of DUST. Each
111
+ * retry first waits for the facade to report itself synced again, so the
112
+ * balancer works from the chain tip rather than the view the last attempt
113
+ * failed on.
114
+ *
115
+ * @param facade - The started facade `build` balances with.
116
+ * @param build - The balancing call to (re)attempt.
117
+ * @returns The recipe `build` resolves to.
118
+ * @throws {Error} The last error once {@link BALANCE_RETRY_TIMEOUT_MS} is
119
+ * spent, or immediately for any error other than insufficient dust.
120
+ */
121
+ async function balanceWhileDustGenerates(facade, build) {
122
+ const deadline = Date.now() + BALANCE_RETRY_TIMEOUT_MS;
123
+ for (;;) {
124
+ try {
125
+ return await build();
126
+ }
127
+ catch (error) {
128
+ const message = String(error);
129
+ const insufficientDust = message.includes("InsufficientFunds") || message.includes("could not balance dust");
130
+ if (!insufficientDust || Date.now() >= deadline)
131
+ throw error;
132
+ console.log(`the wallet cannot cover the fee yet (DUST still generating), retrying in ${String(BALANCE_RETRY_INTERVAL_MS / 1000)}s`);
133
+ await new Promise((resolve) => setTimeout(resolve, BALANCE_RETRY_INTERVAL_MS));
134
+ const state = await facade.waitForSyncedState();
135
+ console.log(`wallet resynced, spendable DUST: ${String(state.dust.balance(new Date()))}`);
136
+ }
137
+ }
138
+ }
107
139
  /**
108
140
  * Balance, sign, prove and submit a serialized unproven transaction (e.g. a
109
141
  * contract deploy built by `buildDeployTransaction` in deploy.ts). Proving
@@ -113,15 +145,22 @@ const RECIPE_TTL_MS = 30 * 60 * 1000;
113
145
  * @param keys - The key material of the same wallet, for balancing and signing.
114
146
  * @param serializedTransaction - The unproven transaction bytes.
115
147
  * @returns The submitted transaction's identifier.
116
- * @throws {Error} If the wallet cannot cover fees, proving fails, or the node rejects the transaction.
148
+ * @throws {Error} If the wallet still cannot cover fees after the balancing retry
149
+ * budget, proving fails, or the node rejects the transaction.
117
150
  */
118
151
  export async function submitUnprovenTransaction(facade, keys, serializedTransaction) {
119
- // Deserialize back into the ledger UnprovenTransaction the facade balances.
152
+ // Deserialize back into the ledger UnprovenTransaction the facade balances,
153
+ // stamped with the protocol version the wallet is currently authoring for.
120
154
  const tx = ledger.Transaction.deserialize("signature", "pre-proof", "pre-binding", serializedTransaction);
155
+ const { activeProtocolVersion } = await facade.waitForSyncedState();
156
+ const unproven = WalletTransaction.adopt("Unproven", tx, activeProtocolVersion);
121
157
  // Balance (add dust/fee inputs) → sign those inputs → finalize (prove) → submit.
122
- const recipe = await facade.balanceUnprovenTransaction(tx, { shieldedSecretKeys: keys.shieldedSecretKeys, dustSecretKey: keys.dustSecretKey }, { ttl: new Date(Date.now() + RECIPE_TTL_MS) });
158
+ console.log("balancing and signing transaction...");
159
+ const recipe = await balanceWhileDustGenerates(facade, () => facade.balanceUnprovenTransaction(unproven, { ttl: new Date(Date.now() + RECIPE_TTL_MS) }));
123
160
  const signed = await facade.signRecipe(recipe, keys.unshieldedKeystore.signDataAsync);
161
+ console.log("proving transaction (proof server, can take minutes)...");
124
162
  const finalized = await facade.finalizeRecipe(signed);
163
+ console.log("submitting transaction...");
125
164
  return facade.submitTransaction(finalized);
126
165
  }
127
166
  /**
@@ -147,7 +186,7 @@ export async function transferNight(facade, keys, state, toUnshieldedAddress, ne
147
186
  throw new Error("funder wallet holds no unshielded NIGHT to transfer");
148
187
  }
149
188
  const receiverAddress = MidnightBech32m.parse(toUnshieldedAddress).decode(UnshieldedAddress, networkId);
150
- const recipe = await facade.transferTransaction([{ type: "unshielded", outputs: [{ type: nightTokenType, receiverAddress, amount }] }], { shieldedSecretKeys: keys.shieldedSecretKeys, dustSecretKey: keys.dustSecretKey }, { ttl: new Date(Date.now() + RECIPE_TTL_MS), payFees: true });
189
+ const recipe = await balanceWhileDustGenerates(facade, () => facade.transferTransaction([{ type: "unshielded", outputs: [{ type: nightTokenType, receiverAddress, amount }] }], { ttl: new Date(Date.now() + RECIPE_TTL_MS), payFees: true }));
151
190
  const signed = await facade.signRecipe(recipe, keys.unshieldedKeystore.signDataAsync);
152
191
  const finalized = await facade.finalizeRecipe(signed);
153
192
  return facade.submitTransaction(finalized);
@@ -217,9 +256,11 @@ export async function waitForSpendableDust(facade, timeoutMs = 300_000) {
217
256
  */
218
257
  export async function withSyncedWalletFacade(keys, config, fn, options = {}) {
219
258
  const facade = await initialiseWalletFacade(keys, config, options);
220
- await facade.start(keys.shieldedSecretKeys, keys.dustSecretKey);
259
+ await facade.start(keys.seeds);
221
260
  try {
261
+ console.log(`syncing wallet (indexer: ${config.indexerUrl})...`);
222
262
  const state = await facade.waitForSyncedState();
263
+ console.log("wallet synced");
223
264
  return await fn(facade, state);
224
265
  }
225
266
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/plumbing/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/plumbing/wallet.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sig-net/midnight-contract-deploy",
3
- "version": "0.21.0-rc.2",
3
+ "version": "0.21.0-rc.7",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/sig-net/midnight-integration",
@@ -36,23 +36,23 @@
36
36
  }
37
37
  },
38
38
  "dependencies": {
39
- "@effect/platform-node": "^0.107.0",
40
- "@midnight-ntwrk/compact-js": "2.5.5-rc.7",
41
- "@midnight-ntwrk/compact-js-node": "2.5.5-rc.7",
42
- "@midnight-ntwrk/midnight-js": "5.0.0-beta.6",
39
+ "@effect/platform-node": "^0.108.1",
40
+ "@midnight-ntwrk/compact-js": "2.5.5-rc.8",
41
+ "@midnight-ntwrk/compact-js-node": "2.5.5-rc.8",
42
+ "@midnight-ntwrk/midnight-js": "5.0.0-beta.7",
43
43
  "@midnight-ntwrk/platform-js": "^3.0.0",
44
- "@midnightntwrk/ledger-v9": "1.0.0-rc.3",
45
- "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0",
46
- "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2",
47
- "@midnightntwrk/wallet-sdk-dust-wallet": "5.0.0-beta.2",
48
- "@midnightntwrk/wallet-sdk-facade": "5.0.0-beta.2",
49
- "@midnightntwrk/wallet-sdk-hd": "3.1.0-beta.1",
50
- "@midnightntwrk/wallet-sdk-shielded": "4.0.0-beta.2",
51
- "@midnightntwrk/wallet-sdk-unshielded-wallet": "4.0.0-beta.2",
44
+ "@midnightntwrk/ledger-v9": "1.0.0-rc.4",
45
+ "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.1",
46
+ "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.3",
47
+ "@midnightntwrk/wallet-sdk-dust-wallet": "5.0.0-beta.3",
48
+ "@midnightntwrk/wallet-sdk-facade": "5.0.0-beta.3",
49
+ "@midnightntwrk/wallet-sdk-hd": "3.1.0-beta.2",
50
+ "@midnightntwrk/wallet-sdk-shielded": "4.0.0-beta.3",
51
+ "@midnightntwrk/wallet-sdk-unshielded-wallet": "4.0.0-beta.3",
52
52
  "@scure/bip39": "^2.2.0",
53
- "@sig-net/midnight": "^0.21.0-rc.2",
54
- "@sig-net/midnight-contract": "^0.21.0-rc.2",
55
- "effect": "^3.21.4"
53
+ "@sig-net/midnight": "^0.21.0-rc.7",
54
+ "@sig-net/midnight-contract": "^0.21.0-rc.7",
55
+ "effect": "^3.22.1"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@types/node": "^26.1.0",