@aibtc/mcp-server 1.42.4 → 1.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/services/nonce-tracker.d.ts +135 -0
- package/dist/services/nonce-tracker.d.ts.map +1 -0
- package/dist/services/nonce-tracker.js +315 -0
- package/dist/services/nonce-tracker.js.map +1 -0
- package/dist/services/wallet-manager.d.ts +1 -1
- package/dist/services/wallet-manager.d.ts.map +1 -1
- package/dist/services/wallet-manager.js +10 -10
- package/dist/services/wallet-manager.js.map +1 -1
- package/dist/tools/inbox.tools.js +23 -18
- package/dist/tools/inbox.tools.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/news.tools.d.ts +2 -1
- package/dist/tools/news.tools.d.ts.map +1 -1
- package/dist/tools/news.tools.js +87 -1
- package/dist/tools/news.tools.js.map +1 -1
- package/dist/tools/nonce.tools.d.ts +11 -0
- package/dist/tools/nonce.tools.d.ts.map +1 -0
- package/dist/tools/nonce.tools.js +222 -0
- package/dist/tools/nonce.tools.js.map +1 -0
- package/dist/tools/skill-mappings.d.ts.map +1 -1
- package/dist/tools/skill-mappings.js +1 -0
- package/dist/tools/skill-mappings.js.map +1 -1
- package/dist/tools/wallet-management.tools.js +1 -1
- package/dist/tools/wallet-management.tools.js.map +1 -1
- package/dist/transactions/builder.d.ts +5 -20
- package/dist/transactions/builder.d.ts.map +1 -1
- package/dist/transactions/builder.js +34 -92
- package/dist/transactions/builder.js.map +1 -1
- package/dist/yield-hunter/index.js +4 -4
- package/dist/yield-hunter/index.js.map +1 -1
- package/package.json +1 -1
- package/skill/SKILL.md +1 -1
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Nonce Tracker
|
|
3
|
+
*
|
|
4
|
+
* Unified, file-backed nonce tracker that prevents client-side nonce conflicts
|
|
5
|
+
* across all tx-submitting MCP tools. Replaces the separate in-memory trackers
|
|
6
|
+
* in builder.ts and inbox.tools.ts.
|
|
7
|
+
*
|
|
8
|
+
* Design principles (issue #413):
|
|
9
|
+
* - Local state is primary — no network calls on the hot path for nonce assignment
|
|
10
|
+
* - Hiro is periodic reconciliation, not a real-time oracle
|
|
11
|
+
* - Non-blocking — file read/write on the hot path, no network calls
|
|
12
|
+
* - Records every submission — nonce + txid + timestamp for debugging
|
|
13
|
+
* - Shared state file (~/.aibtc/nonce-state.json) for cross-process compatibility
|
|
14
|
+
* with CLI skills (aibtcdev/skills#240)
|
|
15
|
+
*
|
|
16
|
+
* @see https://github.com/aibtcdev/aibtc-mcp-server/issues/413
|
|
17
|
+
*/
|
|
18
|
+
/** A record of a single submitted transaction. */
|
|
19
|
+
export interface PendingTxRecord {
|
|
20
|
+
nonce: number;
|
|
21
|
+
txid: string;
|
|
22
|
+
timestamp: string;
|
|
23
|
+
}
|
|
24
|
+
/** Per-address nonce state. */
|
|
25
|
+
export interface AddressNonceState {
|
|
26
|
+
/** The highest nonce we have assigned (not yet necessarily confirmed). */
|
|
27
|
+
lastUsedNonce: number;
|
|
28
|
+
/** ISO-8601 timestamp of the last nonce assignment. */
|
|
29
|
+
lastUpdated: string;
|
|
30
|
+
/** Rolling log of recent submissions (bounded to MAX_PENDING_LOG). */
|
|
31
|
+
pending: PendingTxRecord[];
|
|
32
|
+
}
|
|
33
|
+
/** On-disk file format. */
|
|
34
|
+
export interface NonceStateFile {
|
|
35
|
+
version: number;
|
|
36
|
+
addresses: Record<string, AddressNonceState>;
|
|
37
|
+
}
|
|
38
|
+
/** Snapshot returned by getHealthStatus(). */
|
|
39
|
+
export interface NonceHealthSnapshot {
|
|
40
|
+
address: string;
|
|
41
|
+
local: {
|
|
42
|
+
lastUsedNonce: number;
|
|
43
|
+
lastUpdated: string;
|
|
44
|
+
pendingCount: number;
|
|
45
|
+
isStale: boolean;
|
|
46
|
+
};
|
|
47
|
+
chain: {
|
|
48
|
+
possibleNextNonce: number;
|
|
49
|
+
lastExecutedNonce: number;
|
|
50
|
+
lastMempoolNonce: number | null;
|
|
51
|
+
missingNonces: number[];
|
|
52
|
+
mempoolNonces: number[];
|
|
53
|
+
};
|
|
54
|
+
healthy: boolean;
|
|
55
|
+
issues: string[];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* How long a locally-tracked nonce is considered fresh. After this window the
|
|
59
|
+
* tracker falls back to the chain value on the next getNextNonce() call.
|
|
60
|
+
*
|
|
61
|
+
* Set to 90 seconds (~15-30 Stacks blocks post-Nakamoto, where blocks are 3-5s).
|
|
62
|
+
* Previously 10 minutes (calibrated for Bitcoin block times). The shorter window
|
|
63
|
+
* ensures the tracker detects external sends and chain advances promptly.
|
|
64
|
+
*/
|
|
65
|
+
export declare const STALE_NONCE_MS: number;
|
|
66
|
+
/**
|
|
67
|
+
* Get the next nonce to use for an address.
|
|
68
|
+
*
|
|
69
|
+
* This is the HOT PATH — no network calls. Returns the locally tracked
|
|
70
|
+
* next nonce, or 0 if no state exists for the address (caller should then
|
|
71
|
+
* fall back to chain query).
|
|
72
|
+
*
|
|
73
|
+
* @returns The next nonce to use, or `null` if no local state exists or the
|
|
74
|
+
* local state is stale (caller should query the chain).
|
|
75
|
+
*/
|
|
76
|
+
export declare function getTrackedNonce(address: string): Promise<number | null>;
|
|
77
|
+
/**
|
|
78
|
+
* Record that a nonce was used for a transaction.
|
|
79
|
+
*
|
|
80
|
+
* Called after successful broadcast. Updates both in-memory and on-disk state.
|
|
81
|
+
*
|
|
82
|
+
* @param address - The sender STX address
|
|
83
|
+
* @param nonce - The nonce that was used
|
|
84
|
+
* @param txid - The transaction ID from broadcast
|
|
85
|
+
*/
|
|
86
|
+
export declare function recordNonceUsed(address: string, nonce: number, txid: string): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Reconcile local state with chain data.
|
|
89
|
+
*
|
|
90
|
+
* If the chain's `possibleNextNonce` is ahead of our local state, update
|
|
91
|
+
* to match (txs confirmed or external sends happened). If our local state
|
|
92
|
+
* is ahead, keep it (chain is lagging behind mempool propagation).
|
|
93
|
+
*
|
|
94
|
+
* @param address - The STX address
|
|
95
|
+
* @param chainNextNonce - The `possible_next_nonce` value from Hiro API
|
|
96
|
+
*/
|
|
97
|
+
export declare function reconcileWithChain(address: string, chainNextNonce: number): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* Reset (clear) nonce state for an address.
|
|
100
|
+
* Called on wallet unlock/lock/switch so the tracker re-syncs from chain.
|
|
101
|
+
*/
|
|
102
|
+
export declare function resetTrackedNonce(address: string): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* Reset all tracked nonces (e.g., for testing or full resync).
|
|
105
|
+
*/
|
|
106
|
+
export declare function resetAllTrackedNonces(): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Get the raw state for an address (for diagnostics/health tool).
|
|
109
|
+
*/
|
|
110
|
+
export declare function getAddressState(address: string): Promise<AddressNonceState | null>;
|
|
111
|
+
/**
|
|
112
|
+
* Get the full state file (for diagnostics).
|
|
113
|
+
*/
|
|
114
|
+
export declare function getFullState(): Promise<NonceStateFile>;
|
|
115
|
+
/**
|
|
116
|
+
* Force reload state from disk (useful after external process wrote to file).
|
|
117
|
+
* Merges disk state into memory so external writes (CLI skills) are picked up
|
|
118
|
+
* without losing any in-memory nonce advancements.
|
|
119
|
+
*/
|
|
120
|
+
export declare function reloadFromDisk(): Promise<void>;
|
|
121
|
+
export declare const _testing: {
|
|
122
|
+
STALE_NONCE_MS: number;
|
|
123
|
+
MAX_PENDING_LOG: number;
|
|
124
|
+
MAX_ADDRESSES: number;
|
|
125
|
+
readonly NONCE_STATE_FILE: string;
|
|
126
|
+
/** Override the state file path for test isolation. */
|
|
127
|
+
setStateFilePath(filePath: string): void;
|
|
128
|
+
/** Reset state file path to default. */
|
|
129
|
+
resetStateFilePath(): void;
|
|
130
|
+
/** Clear in-memory state without touching disk. */
|
|
131
|
+
clearMemory(): void;
|
|
132
|
+
/** Get raw memory state ref for assertions. */
|
|
133
|
+
getMemoryState(): NonceStateFile | null;
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=nonce-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nonce-tracker.d.ts","sourceRoot":"","sources":["../../src/services/nonce-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAUH,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,+BAA+B;AAC/B,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,2BAA2B;AAC3B,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC9C;AAED,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,iBAAiB,EAAE,MAAM,CAAC;QAC1B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAaD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,QAAY,CAAC;AA+HxC;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAY7E;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAmCf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAItE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3D;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAGnC;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC,CAE5D;AAED;;;;GAIG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAOpD;AAMD,eAAO,MAAM,QAAQ;;;;;IAOnB,uDAAuD;+BAC5B,MAAM,GAAG,IAAI;IAGxC,wCAAwC;0BAClB,IAAI;IAG1B,mDAAmD;mBACpC,IAAI;IAGnB,+CAA+C;sBAC7B,cAAc,GAAG,IAAI;CAGxC,CAAC"}
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Nonce Tracker
|
|
3
|
+
*
|
|
4
|
+
* Unified, file-backed nonce tracker that prevents client-side nonce conflicts
|
|
5
|
+
* across all tx-submitting MCP tools. Replaces the separate in-memory trackers
|
|
6
|
+
* in builder.ts and inbox.tools.ts.
|
|
7
|
+
*
|
|
8
|
+
* Design principles (issue #413):
|
|
9
|
+
* - Local state is primary — no network calls on the hot path for nonce assignment
|
|
10
|
+
* - Hiro is periodic reconciliation, not a real-time oracle
|
|
11
|
+
* - Non-blocking — file read/write on the hot path, no network calls
|
|
12
|
+
* - Records every submission — nonce + txid + timestamp for debugging
|
|
13
|
+
* - Shared state file (~/.aibtc/nonce-state.json) for cross-process compatibility
|
|
14
|
+
* with CLI skills (aibtcdev/skills#240)
|
|
15
|
+
*
|
|
16
|
+
* @see https://github.com/aibtcdev/aibtc-mcp-server/issues/413
|
|
17
|
+
*/
|
|
18
|
+
import fs from "fs/promises";
|
|
19
|
+
import path from "path";
|
|
20
|
+
import os from "os";
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Constants
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
const DEFAULT_STORAGE_DIR = path.join(os.homedir(), ".aibtc");
|
|
25
|
+
const DEFAULT_NONCE_STATE_FILE = path.join(DEFAULT_STORAGE_DIR, "nonce-state.json");
|
|
26
|
+
/** Mutable path — overridable via _testing.setStateFilePath() for test isolation. */
|
|
27
|
+
let NONCE_STATE_FILE = DEFAULT_NONCE_STATE_FILE;
|
|
28
|
+
const CURRENT_VERSION = 1;
|
|
29
|
+
/**
|
|
30
|
+
* How long a locally-tracked nonce is considered fresh. After this window the
|
|
31
|
+
* tracker falls back to the chain value on the next getNextNonce() call.
|
|
32
|
+
*
|
|
33
|
+
* Set to 90 seconds (~15-30 Stacks blocks post-Nakamoto, where blocks are 3-5s).
|
|
34
|
+
* Previously 10 minutes (calibrated for Bitcoin block times). The shorter window
|
|
35
|
+
* ensures the tracker detects external sends and chain advances promptly.
|
|
36
|
+
*/
|
|
37
|
+
export const STALE_NONCE_MS = 90 * 1000;
|
|
38
|
+
/**
|
|
39
|
+
* Maximum pending tx records kept per address. Older entries are evicted FIFO.
|
|
40
|
+
*/
|
|
41
|
+
const MAX_PENDING_LOG = 50;
|
|
42
|
+
/**
|
|
43
|
+
* Maximum addresses tracked in the state file. Oldest (by lastUpdated) are
|
|
44
|
+
* evicted when this limit is reached, preventing unbounded file growth.
|
|
45
|
+
*/
|
|
46
|
+
const MAX_ADDRESSES = 100;
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
// In-memory cache
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
/** In-memory mirror of the on-disk state. Loaded lazily on first access. */
|
|
51
|
+
let _memoryState = null;
|
|
52
|
+
/**
|
|
53
|
+
* Serializes concurrent file writes within this process.
|
|
54
|
+
* Cross-process safety is handled by atomic temp+rename writes.
|
|
55
|
+
*/
|
|
56
|
+
let _writeLock = Promise.resolve();
|
|
57
|
+
// ---------------------------------------------------------------------------
|
|
58
|
+
// File I/O (follows storage.ts patterns: atomic temp+rename, 0o600 perms)
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
async function readStateFile() {
|
|
61
|
+
try {
|
|
62
|
+
const content = await fs.readFile(NONCE_STATE_FILE, "utf8");
|
|
63
|
+
const parsed = JSON.parse(content);
|
|
64
|
+
// Basic validation
|
|
65
|
+
if (parsed.version !== CURRENT_VERSION || typeof parsed.addresses !== "object") {
|
|
66
|
+
return createDefaultState();
|
|
67
|
+
}
|
|
68
|
+
return parsed;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return createDefaultState();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Merge on-disk state into in-memory state to prevent cross-process write
|
|
76
|
+
* races from silently regressing a nonce (see PR review suggestion).
|
|
77
|
+
*
|
|
78
|
+
* For each address:
|
|
79
|
+
* - Takes the higher lastUsedNonce (never regress)
|
|
80
|
+
* - In-memory pending log is authoritative (disk entries are stale copies of
|
|
81
|
+
* our own prior writes); we only pull in disk-only addresses that another
|
|
82
|
+
* process (CLI skills) may have created.
|
|
83
|
+
*/
|
|
84
|
+
function mergeStates(disk, memory) {
|
|
85
|
+
const merged = { version: CURRENT_VERSION, addresses: { ...memory.addresses } };
|
|
86
|
+
for (const [addr, diskEntry] of Object.entries(disk.addresses)) {
|
|
87
|
+
const memEntry = merged.addresses[addr];
|
|
88
|
+
if (!memEntry) {
|
|
89
|
+
// Address exists on disk but not in memory — another process wrote it
|
|
90
|
+
merged.addresses[addr] = diskEntry;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
// Both exist: take the higher nonce to prevent regression
|
|
94
|
+
if (diskEntry.lastUsedNonce > memEntry.lastUsedNonce) {
|
|
95
|
+
memEntry.lastUsedNonce = diskEntry.lastUsedNonce;
|
|
96
|
+
memEntry.lastUpdated = diskEntry.lastUpdated;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return merged;
|
|
100
|
+
}
|
|
101
|
+
async function writeStateFile(state) {
|
|
102
|
+
const dir = path.dirname(NONCE_STATE_FILE);
|
|
103
|
+
await fs.mkdir(dir, { recursive: true, mode: 0o700 });
|
|
104
|
+
const tempFile = `${NONCE_STATE_FILE}.tmp`;
|
|
105
|
+
await fs.writeFile(tempFile, JSON.stringify(state, null, 2), { mode: 0o600 });
|
|
106
|
+
await fs.rename(tempFile, NONCE_STATE_FILE);
|
|
107
|
+
}
|
|
108
|
+
function createDefaultState() {
|
|
109
|
+
return { version: CURRENT_VERSION, addresses: {} };
|
|
110
|
+
}
|
|
111
|
+
// ---------------------------------------------------------------------------
|
|
112
|
+
// Internal helpers
|
|
113
|
+
// ---------------------------------------------------------------------------
|
|
114
|
+
/** Load state into memory if not already loaded. */
|
|
115
|
+
async function ensureLoaded() {
|
|
116
|
+
if (!_memoryState) {
|
|
117
|
+
_memoryState = await readStateFile();
|
|
118
|
+
}
|
|
119
|
+
return _memoryState;
|
|
120
|
+
}
|
|
121
|
+
/** Persist the in-memory state to disk (serialized to prevent interleaving). */
|
|
122
|
+
function persistToDisk() {
|
|
123
|
+
if (!_memoryState)
|
|
124
|
+
return;
|
|
125
|
+
const stateSnapshot = _memoryState;
|
|
126
|
+
_writeLock = _writeLock
|
|
127
|
+
.then(() => writeStateFile(stateSnapshot))
|
|
128
|
+
.catch((err) => {
|
|
129
|
+
console.error("[nonce-tracker] Failed to persist nonce state:", err);
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
/** Evict oldest addresses if over MAX_ADDRESSES. */
|
|
133
|
+
function evictOldestAddresses(state) {
|
|
134
|
+
const entries = Object.entries(state.addresses);
|
|
135
|
+
if (entries.length <= MAX_ADDRESSES)
|
|
136
|
+
return;
|
|
137
|
+
// Sort by lastUpdated ascending (oldest first)
|
|
138
|
+
entries.sort((a, b) => new Date(a[1].lastUpdated).getTime() - new Date(b[1].lastUpdated).getTime());
|
|
139
|
+
// Keep only the newest MAX_ADDRESSES entries
|
|
140
|
+
const toKeep = entries.slice(entries.length - MAX_ADDRESSES);
|
|
141
|
+
state.addresses = Object.fromEntries(toKeep);
|
|
142
|
+
}
|
|
143
|
+
// ---------------------------------------------------------------------------
|
|
144
|
+
// Public API
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
/**
|
|
147
|
+
* Get the next nonce to use for an address.
|
|
148
|
+
*
|
|
149
|
+
* This is the HOT PATH — no network calls. Returns the locally tracked
|
|
150
|
+
* next nonce, or 0 if no state exists for the address (caller should then
|
|
151
|
+
* fall back to chain query).
|
|
152
|
+
*
|
|
153
|
+
* @returns The next nonce to use, or `null` if no local state exists or the
|
|
154
|
+
* local state is stale (caller should query the chain).
|
|
155
|
+
*/
|
|
156
|
+
export async function getTrackedNonce(address) {
|
|
157
|
+
const state = await ensureLoaded();
|
|
158
|
+
const entry = state.addresses[address];
|
|
159
|
+
if (!entry)
|
|
160
|
+
return null;
|
|
161
|
+
// Stale check
|
|
162
|
+
const lastUpdated = new Date(entry.lastUpdated).getTime();
|
|
163
|
+
if (Date.now() - lastUpdated > STALE_NONCE_MS) {
|
|
164
|
+
return null; // Stale — caller should query chain
|
|
165
|
+
}
|
|
166
|
+
return entry.lastUsedNonce + 1;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Record that a nonce was used for a transaction.
|
|
170
|
+
*
|
|
171
|
+
* Called after successful broadcast. Updates both in-memory and on-disk state.
|
|
172
|
+
*
|
|
173
|
+
* @param address - The sender STX address
|
|
174
|
+
* @param nonce - The nonce that was used
|
|
175
|
+
* @param txid - The transaction ID from broadcast
|
|
176
|
+
*/
|
|
177
|
+
export async function recordNonceUsed(address, nonce, txid) {
|
|
178
|
+
const state = await ensureLoaded();
|
|
179
|
+
const now = new Date().toISOString();
|
|
180
|
+
const existing = state.addresses[address];
|
|
181
|
+
if (existing) {
|
|
182
|
+
// Only advance — never regress
|
|
183
|
+
if (nonce > existing.lastUsedNonce) {
|
|
184
|
+
existing.lastUsedNonce = nonce;
|
|
185
|
+
}
|
|
186
|
+
existing.lastUpdated = now;
|
|
187
|
+
// Append to pending log
|
|
188
|
+
existing.pending.push({ nonce, txid, timestamp: now });
|
|
189
|
+
// Trim to MAX_PENDING_LOG (FIFO)
|
|
190
|
+
if (existing.pending.length > MAX_PENDING_LOG) {
|
|
191
|
+
existing.pending = existing.pending.slice(-MAX_PENDING_LOG);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
state.addresses[address] = {
|
|
196
|
+
lastUsedNonce: nonce,
|
|
197
|
+
lastUpdated: now,
|
|
198
|
+
pending: [{ nonce, txid, timestamp: now }],
|
|
199
|
+
};
|
|
200
|
+
evictOldestAddresses(state);
|
|
201
|
+
}
|
|
202
|
+
persistToDisk();
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Reconcile local state with chain data.
|
|
206
|
+
*
|
|
207
|
+
* If the chain's `possibleNextNonce` is ahead of our local state, update
|
|
208
|
+
* to match (txs confirmed or external sends happened). If our local state
|
|
209
|
+
* is ahead, keep it (chain is lagging behind mempool propagation).
|
|
210
|
+
*
|
|
211
|
+
* @param address - The STX address
|
|
212
|
+
* @param chainNextNonce - The `possible_next_nonce` value from Hiro API
|
|
213
|
+
*/
|
|
214
|
+
export async function reconcileWithChain(address, chainNextNonce) {
|
|
215
|
+
const state = await ensureLoaded();
|
|
216
|
+
const entry = state.addresses[address];
|
|
217
|
+
if (!entry) {
|
|
218
|
+
// No local state — initialize from chain
|
|
219
|
+
state.addresses[address] = {
|
|
220
|
+
lastUsedNonce: chainNextNonce - 1,
|
|
221
|
+
lastUpdated: new Date().toISOString(),
|
|
222
|
+
pending: [],
|
|
223
|
+
};
|
|
224
|
+
evictOldestAddresses(state);
|
|
225
|
+
persistToDisk();
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
let changed = false;
|
|
229
|
+
// Chain advanced past us — update (txs confirmed or external sends)
|
|
230
|
+
if (chainNextNonce - 1 > entry.lastUsedNonce) {
|
|
231
|
+
entry.lastUsedNonce = chainNextNonce - 1;
|
|
232
|
+
entry.lastUpdated = new Date().toISOString();
|
|
233
|
+
changed = true;
|
|
234
|
+
}
|
|
235
|
+
// Prune pending entries whose nonces are now confirmed on-chain
|
|
236
|
+
const beforeLen = entry.pending.length;
|
|
237
|
+
entry.pending = entry.pending.filter((p) => p.nonce >= chainNextNonce);
|
|
238
|
+
if (entry.pending.length !== beforeLen) {
|
|
239
|
+
changed = true;
|
|
240
|
+
}
|
|
241
|
+
if (changed) {
|
|
242
|
+
persistToDisk();
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Reset (clear) nonce state for an address.
|
|
247
|
+
* Called on wallet unlock/lock/switch so the tracker re-syncs from chain.
|
|
248
|
+
*/
|
|
249
|
+
export async function resetTrackedNonce(address) {
|
|
250
|
+
const state = await ensureLoaded();
|
|
251
|
+
delete state.addresses[address];
|
|
252
|
+
persistToDisk();
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Reset all tracked nonces (e.g., for testing or full resync).
|
|
256
|
+
*/
|
|
257
|
+
export async function resetAllTrackedNonces() {
|
|
258
|
+
_memoryState = createDefaultState();
|
|
259
|
+
persistToDisk();
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Get the raw state for an address (for diagnostics/health tool).
|
|
263
|
+
*/
|
|
264
|
+
export async function getAddressState(address) {
|
|
265
|
+
const state = await ensureLoaded();
|
|
266
|
+
return state.addresses[address] ?? null;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Get the full state file (for diagnostics).
|
|
270
|
+
*/
|
|
271
|
+
export async function getFullState() {
|
|
272
|
+
return ensureLoaded();
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Force reload state from disk (useful after external process wrote to file).
|
|
276
|
+
* Merges disk state into memory so external writes (CLI skills) are picked up
|
|
277
|
+
* without losing any in-memory nonce advancements.
|
|
278
|
+
*/
|
|
279
|
+
export async function reloadFromDisk() {
|
|
280
|
+
const diskState = await readStateFile();
|
|
281
|
+
if (_memoryState && Object.keys(_memoryState.addresses).length > 0) {
|
|
282
|
+
_memoryState = mergeStates(diskState, _memoryState);
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
_memoryState = diskState;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
// ---------------------------------------------------------------------------
|
|
289
|
+
// Testing helpers
|
|
290
|
+
// ---------------------------------------------------------------------------
|
|
291
|
+
export const _testing = {
|
|
292
|
+
STALE_NONCE_MS,
|
|
293
|
+
MAX_PENDING_LOG,
|
|
294
|
+
MAX_ADDRESSES,
|
|
295
|
+
get NONCE_STATE_FILE() {
|
|
296
|
+
return NONCE_STATE_FILE;
|
|
297
|
+
},
|
|
298
|
+
/** Override the state file path for test isolation. */
|
|
299
|
+
setStateFilePath(filePath) {
|
|
300
|
+
NONCE_STATE_FILE = filePath;
|
|
301
|
+
},
|
|
302
|
+
/** Reset state file path to default. */
|
|
303
|
+
resetStateFilePath() {
|
|
304
|
+
NONCE_STATE_FILE = DEFAULT_NONCE_STATE_FILE;
|
|
305
|
+
},
|
|
306
|
+
/** Clear in-memory state without touching disk. */
|
|
307
|
+
clearMemory() {
|
|
308
|
+
_memoryState = null;
|
|
309
|
+
},
|
|
310
|
+
/** Get raw memory state ref for assertions. */
|
|
311
|
+
getMemoryState() {
|
|
312
|
+
return _memoryState;
|
|
313
|
+
},
|
|
314
|
+
};
|
|
315
|
+
//# sourceMappingURL=nonce-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nonce-tracker.js","sourceRoot":"","sources":["../../src/services/nonce-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-manager.d.ts","sourceRoot":"","sources":["../../src/services/wallet-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAiBL,KAAK,cAAc,EAEnB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAc1D;;GAEG;AACH,UAAU,YAAa,SAAQ,eAAe;IAC5C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAE9C;;GAEG;AACH,cAAM,aAAa;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC;;OAEG;YACW,iBAAiB;IAO/B;;OAEG;YACW,WAAW;IAiDzB;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,kBAAkB,CAAC;IAS9B;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,kBAAkB,CAAC;IAW9B;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuGlE;;OAEG;
|
|
1
|
+
{"version":3,"file":"wallet-manager.d.ts","sourceRoot":"","sources":["../../src/services/wallet-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAiBL,KAAK,cAAc,EAEnB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAc1D;;GAEG;AACH,UAAU,YAAa,SAAQ,eAAe;IAC5C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAE9C;;GAEG;AACH,cAAM,aAAa;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC;;OAEG;YACW,iBAAiB;IAO/B;;OAEG;YACW,WAAW;IAiDzB;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,kBAAkB,CAAC;IAS9B;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,kBAAkB,CAAC;IAW9B;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuGlE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B;;OAEG;IACH,gBAAgB,IAAI,OAAO,GAAG,IAAI;IAclC;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,cAAc,IAAI,CAAC,eAAe,GAAG;QACnC,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;KACxB,CAAC,GAAG,IAAI;IAoBT;;;OAGG;IACH,UAAU,IAAI,OAAO,GAAG,IAAI;IAc5B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAM9C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAMpC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMjD;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBnD;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6CrE;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BzE;;OAEG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAiHhB;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBxD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAM3B;AAGD,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD"}
|
|
@@ -169,17 +169,17 @@ class WalletManager {
|
|
|
169
169
|
config.activeWalletId = walletId;
|
|
170
170
|
await writeAppConfig(config);
|
|
171
171
|
// Reset pending nonce counter so the new session re-syncs with the chain
|
|
172
|
-
resetPendingNonce(account.address);
|
|
172
|
+
await resetPendingNonce(account.address);
|
|
173
173
|
return account;
|
|
174
174
|
}
|
|
175
175
|
/**
|
|
176
176
|
* Lock the wallet (clear session)
|
|
177
177
|
*/
|
|
178
|
-
lock() {
|
|
178
|
+
async lock() {
|
|
179
179
|
this.clearAutoLockTimer();
|
|
180
180
|
// Reset pending nonce counter before clearing session
|
|
181
181
|
if (this.session?.account) {
|
|
182
|
-
resetPendingNonce(this.session.account.address);
|
|
182
|
+
await resetPendingNonce(this.session.account.address);
|
|
183
183
|
}
|
|
184
184
|
// Zero out sensitive key buffers before dropping references
|
|
185
185
|
if (this.session?.account) {
|
|
@@ -208,7 +208,7 @@ class WalletManager {
|
|
|
208
208
|
}
|
|
209
209
|
// Check if session expired
|
|
210
210
|
if (this.session.expiresAt && new Date() > this.session.expiresAt) {
|
|
211
|
-
this.lock();
|
|
211
|
+
void this.lock();
|
|
212
212
|
return null;
|
|
213
213
|
}
|
|
214
214
|
return this.session.account;
|
|
@@ -228,7 +228,7 @@ class WalletManager {
|
|
|
228
228
|
}
|
|
229
229
|
// Check expiry
|
|
230
230
|
if (this.session.expiresAt && new Date() > this.session.expiresAt) {
|
|
231
|
-
this.lock();
|
|
231
|
+
void this.lock();
|
|
232
232
|
return null;
|
|
233
233
|
}
|
|
234
234
|
return {
|
|
@@ -249,7 +249,7 @@ class WalletManager {
|
|
|
249
249
|
}
|
|
250
250
|
// Check expiry
|
|
251
251
|
if (this.session.expiresAt && new Date() > this.session.expiresAt) {
|
|
252
|
-
this.lock();
|
|
252
|
+
void this.lock();
|
|
253
253
|
return null;
|
|
254
254
|
}
|
|
255
255
|
return this.session.account;
|
|
@@ -290,7 +290,7 @@ class WalletManager {
|
|
|
290
290
|
throw new WalletNotFoundError(walletId);
|
|
291
291
|
}
|
|
292
292
|
// Lock current session
|
|
293
|
-
this.lock();
|
|
293
|
+
await this.lock();
|
|
294
294
|
// Update active wallet
|
|
295
295
|
const config = await readAppConfig();
|
|
296
296
|
config.activeWalletId = walletId;
|
|
@@ -323,7 +323,7 @@ class WalletManager {
|
|
|
323
323
|
}
|
|
324
324
|
// If this wallet is currently active, lock it
|
|
325
325
|
if (this.session?.walletId === walletId) {
|
|
326
|
-
this.lock();
|
|
326
|
+
await this.lock();
|
|
327
327
|
}
|
|
328
328
|
// Delete wallet storage
|
|
329
329
|
await deleteWalletStorage(walletId);
|
|
@@ -463,7 +463,7 @@ class WalletManager {
|
|
|
463
463
|
}
|
|
464
464
|
// Lock wallet if currently unlocked (force re-auth with new password)
|
|
465
465
|
if (this.session?.walletId === walletId) {
|
|
466
|
-
this.lock();
|
|
466
|
+
await this.lock();
|
|
467
467
|
}
|
|
468
468
|
}
|
|
469
469
|
/**
|
|
@@ -492,7 +492,7 @@ class WalletManager {
|
|
|
492
492
|
return; // No auto-lock
|
|
493
493
|
}
|
|
494
494
|
this.lockTimer = setTimeout(() => {
|
|
495
|
-
this.lock();
|
|
495
|
+
void this.lock();
|
|
496
496
|
}, minutes * 60 * 1000);
|
|
497
497
|
}
|
|
498
498
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-manager.js","sourceRoot":"","sources":["../../src/services/wallet-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wallet-manager.js","sourceRoot":"","sources":["../../src/services/wallet-manager.ts"],"names":[],"mappings":"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"}
|