@kynesyslabs/demosdk 4.0.3 → 4.0.5

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.
@@ -187,6 +187,127 @@ describe("round-trip hash equality — SDK post-fork == node post-fork", () => {
187
187
  const parsed = JSON.parse(sdkBytes);
188
188
  expect(parsed.amount).toBe("100");
189
189
  });
190
+ test("networkUpgrade content (post-sign canonical shape) round-trips", () => {
191
+ // Mirrors what `DemosTransactions.proposeNetworkUpgrade()` ships
192
+ // AFTER `demos.sign()` normalises the content via
193
+ // `raw_tx.content = JSON.parse(serialized)`. The wire shape that
194
+ // reaches the node has:
195
+ // - top-level `amount` as OS string
196
+ // - `transaction_fee.*` as OS strings
197
+ // - `gcr_edits[].balance.amount` already canonicalised to OS
198
+ // string by the SDK's `transformEditPostFork` walk
199
+ // Asserts the byte-equality contract holds for governance content
200
+ // shapes — closes the coverage gap revealed by dev.node2 propose
201
+ // failures (see kynesyslabs/node@a0957941 battery report).
202
+ const content = {
203
+ type: "networkUpgrade",
204
+ from: "0xsender",
205
+ to: "0xsender",
206
+ amount: "0",
207
+ data: [
208
+ "networkUpgrade",
209
+ {
210
+ proposalId: "00000000-0000-0000-0000-000000000001",
211
+ proposedParameters: { blockTimeMs: 1100 },
212
+ rationale: "smoke",
213
+ effectiveAtBlock: 1000,
214
+ },
215
+ ],
216
+ nonce: 1,
217
+ timestamp: 1700000000000,
218
+ transaction_fee: {
219
+ network_fee: "1000000000",
220
+ rpc_fee: "1000000000",
221
+ additional_fee: "0",
222
+ rpc_address: null,
223
+ },
224
+ from_ed25519_address: "0xsender",
225
+ gcr_edits: [
226
+ {
227
+ type: "networkUpgrade",
228
+ isRollback: false,
229
+ account: "0xsender",
230
+ proposalId: "00000000-0000-0000-0000-000000000001",
231
+ proposedParameters: { blockTimeMs: 1100 },
232
+ rationale: "smoke",
233
+ effectiveAtBlock: 1000,
234
+ txhash: "",
235
+ },
236
+ {
237
+ type: "balance",
238
+ isRollback: false,
239
+ operation: "remove",
240
+ account: "0xsender",
241
+ amount: "1000000000",
242
+ txhash: "",
243
+ },
244
+ {
245
+ type: "nonce",
246
+ isRollback: false,
247
+ operation: "add",
248
+ account: "0xsender",
249
+ amount: 1,
250
+ txhash: "",
251
+ },
252
+ ],
253
+ };
254
+ const sdkBytes = serializeTransactionContent(content, true);
255
+ const nodeBytes = nodeSerializeTransactionContent(content, true);
256
+ expect(sdkBytes).toBe(nodeBytes);
257
+ });
258
+ test("networkUpgradeVote content (post-sign canonical shape) round-trips", () => {
259
+ const content = {
260
+ type: "networkUpgradeVote",
261
+ from: "0xsender",
262
+ to: "0xsender",
263
+ amount: "0",
264
+ data: [
265
+ "networkUpgradeVote",
266
+ {
267
+ proposalId: "00000000-0000-0000-0000-000000000001",
268
+ approve: true,
269
+ },
270
+ ],
271
+ nonce: 2,
272
+ timestamp: 1700000000001,
273
+ transaction_fee: {
274
+ network_fee: "1000000000",
275
+ rpc_fee: "1000000000",
276
+ additional_fee: "0",
277
+ rpc_address: null,
278
+ },
279
+ from_ed25519_address: "0xsender",
280
+ gcr_edits: [
281
+ {
282
+ type: "networkUpgradeVote",
283
+ isRollback: false,
284
+ account: "0xsender",
285
+ proposalId: "00000000-0000-0000-0000-000000000001",
286
+ approve: true,
287
+ txhash: "",
288
+ },
289
+ {
290
+ type: "balance",
291
+ isRollback: false,
292
+ operation: "remove",
293
+ account: "0xsender",
294
+ amount: "1000000000",
295
+ txhash: "",
296
+ },
297
+ {
298
+ type: "nonce",
299
+ isRollback: false,
300
+ operation: "add",
301
+ account: "0xsender",
302
+ amount: 2,
303
+ txhash: "",
304
+ },
305
+ ],
306
+ };
307
+ const sdkBytes = serializeTransactionContent(content, true);
308
+ const nodeBytes = nodeSerializeTransactionContent(content, true);
309
+ expect(sdkBytes).toBe(nodeBytes);
310
+ });
190
311
  test("pre-fork branch: SDK and node both stringify content as-is", () => {
191
312
  // For pre-fork content with no internal bigints / OS strings,
192
313
  // both branches produce `JSON.stringify(content)` verbatim.
@@ -1 +1 @@
1
- {"version":3,"file":"roundTripHash.test.js","sourceRoot":"","sources":["../../../src/denomination/roundTripHash.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roundTripHash.test.js","sourceRoot":"","sources":["../../../src/denomination/roundTripHash.test.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,30 @@ export interface GCREditBalance {
26
26
  * Nonce-increment GCR edit. `amount` is a counter delta, not a token
27
27
  * amount — always `1` in current code. Kept as `number` because the fork
28
28
  * does not change its encoding. Do **not** confuse with `GCREditBalance.amount`.
29
+ *
30
+ * `expectedPrior` is the consensus-time apply check introduced by the
31
+ * Demos node `nonceEnforcement` fork (audit-sweep batch C):
32
+ *
33
+ * - **Optional** so the SDK runtime continues to emit the legacy
34
+ * shape (no `expectedPrior`). Old clients stay forwards-compatible
35
+ * forever; re-syncing pre-fork blocks is unaffected; new clients
36
+ * also do not need to know about the field at runtime.
37
+ * - **Populated by the node** after hash validation, not by the SDK.
38
+ * The node's post-fork `nonceEnforcement` apply path fills it from
39
+ * the local GCR state (`accountGCR.nonce`) immediately before
40
+ * handing the edit to `GCRNonceRoutines`. Both ends of the
41
+ * SDK-emit + node-regen comparison ship the edit WITHOUT the
42
+ * field, so hashes match.
43
+ * - **At apply time**, `GCRNonceRoutines` rejects the edit iff
44
+ * `accountGCR.nonce !== expectedPrior` — this is the cross-RPC
45
+ * double-spend safety net. Two competing same-nonce txs bundled
46
+ * into the same block from different RPCs cannot both apply: the
47
+ * second loses because its `expectedPrior` (filled at apply time
48
+ * by the node) no longer matches after the first applies.
49
+ * - SDK consumers that walk `tx.content.gcr_edits[]` from a
50
+ * persisted block (e.g. block-explorer code, indexers) may see the
51
+ * field on post-fork blocks. The field is declared here so those
52
+ * consumers compile; SDK runtime never writes it.
29
53
  */
30
54
  export interface GCREditNonce {
31
55
  type: "nonce";
@@ -34,6 +58,7 @@ export interface GCREditNonce {
34
58
  account: string;
35
59
  amount: number;
36
60
  txhash: string;
61
+ expectedPrior?: number;
37
62
  }
38
63
  export interface GCREditAssign {
39
64
  type: "assign";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kynesyslabs/demosdk",
3
- "version": "4.0.3",
3
+ "version": "4.0.5",
4
4
  "type": "module",
5
5
  "description": "Demosdk is a JavaScript/TypeScript SDK that provides a unified interface for interacting with Demos network",
6
6
  "main": "build/index.js",