@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":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAIjE,mEAAmE;AACnE,kEAAkE;AAClE,qEAAqE;AACrE,8DAA8D;AAC9D,2CAA2C;AAC3C,EAAE;AACF,gEAAgE;AAChE,qEAAqE;AAErE;;;;;GAKG;AACH,SAAS,cAAc,CAAC,KAA+B;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAA;IAChB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,aAAa,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA;AACzB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mCAAmC,CACxC,OAA2B;IAE3B,MAAM,WAAW,GAAG,EAAE,GAAG,OAAO,EAAwB,CAAA;IAExD,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACnE,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,MAAkC,CAAC,CAAA;QAC3E,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAsB,CAAA;IAClE,CAAC;IAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,CAAA;QACnC,WAAW,CAAC,eAAe,GAAG;YAC1B,WAAW,EAAE,UAAU,CACnB,cAAc,CAAC,GAAG,CAAC,WAAuC,CAAC,CACzC;YACtB,OAAO,EAAE,UAAU,CACf,cAAc,CAAC,GAAG,CAAC,OAAmC,CAAC,CACrC;YACtB,cAAc,EAAE,UAAU,CACtB,cAAc,CAAC,GAAG,CAAC,cAA0C,CAAC,CAC5C;YACtB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;SACvC,CAAA;IACL,CAAC;IAED,OAAO,WAAW,CAAA;AACtB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,+BAA+B,CACpC,OAA2B,EAC3B,UAAmB;IAEnB,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,mCAAmC,CAAC,OAAO,CAAC,CAAC,CAAA;IACvE,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;AAClC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,0BAA0B;IAC/B,MAAM,SAAS,GAAc;QACzB;YACI,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,cAAc,EAAE,8BAA8B;YACtD,MAAM,EAAE,EAAE;SACb;QACD;YACI,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,EAAE;SACb;QACD;YACI,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,EAAE;SACb;QACD;YACI,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE;gBACF,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,cAAc;gBACtB,UAAU,EAAE,EAAE;aACjB;YACD,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,KAAK;SACpB;KACJ,CAAA;IAED,OAAO;QACH,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,UAAU;QAChB,EAAE,EAAE,YAAY;QAChB,MAAM,EAAE,cAAc,EAAE,8BAA8B;QACtD,IAAI,EAAE;YACF,QAAQ;YACR;gBACI,eAAe,EAAE,MAAM;gBACvB,IAAI,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC;aACvC;SAC0B;QAC/B,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,aAAiB;QAC5B,eAAe,EAAE;YACb,WAAW,EAAE,YAAY;YACzB,OAAO,EAAE,GAAG;YACZ,cAAc,EAAE,GAAG;YACnB,WAAW,EAAE,IAAI;SACpB;QACD,oBAAoB,EAAE,UAAU;QAChC,SAAS;KACZ,CAAA;AACL,CAAC;AAED,QAAQ,CAAC,4DAA4D,EAAE,GAAG,EAAE;IACxE,IAAI,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAA;QAC5C,MAAM,QAAQ,GAAG,2BAA2B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC3D,MAAM,SAAS,GAAG,+BAA+B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAChE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,4DAA4D;QAC5D,6DAA6D;QAC7D,iDAAiD;QACjD,0DAA0D;QAC1D,6DAA6D;QAC7D,0DAA0D;QAC1D,6DAA6D;QAC7D,qDAAqD;QACrD,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAA;QAC5C,8DAA8D;QAC9D,OAAO,CAAC,MAAM,GAAG,GAAwB,CAAA;QACzC,OAAO,CAAC,eAAe,GAAG;YACtB,WAAW,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;YACV,cAAc,EAAE,CAAC;YACjB,WAAW,EAAE,IAAI;SACpB,CAAA;QACD,MAAM,QAAQ,GAAG,2BAA2B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC3D,MAAM,SAAS,GAAG,+BAA+B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAChE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,4DAA4D;QAC5D,6DAA6D;QAC7D,6DAA6D;QAC7D,uDAAuD;QACvD,sDAAsD;QACtD,MAAM,cAAc,GAAG,aAAgB,CAAA;QACvC,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAA;QAC5C,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,cAAc,CAAsB,CAAA;QAEhE,MAAM,QAAQ,GAAG,2BAA2B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC3D,MAAM,SAAS,GAAG,+BAA+B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAChE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAEhC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAA;QAC5C,OAAO,CAAC,MAAM,GAAG,OAA4B,CAAA;QAC7C,MAAM,QAAQ,GAAG,2BAA2B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC3D,MAAM,SAAS,GAAG,+BAA+B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAChE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,8DAA8D;QAC9D,4DAA4D;QAC5D,MAAM,OAAO,GAAuB;YAChC,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,YAAY;YAChB,MAAM,EAAE,GAAG;YACX,IAAI,EAAE;gBACF,QAAQ;gBACR;oBACI,eAAe,EAAE,MAAM;oBACvB,IAAI,EAAE,CAAC,YAAY,EAAE,GAAG,CAAC;iBAC5B;aAC0B;YAC/B,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,aAAiB;YAC5B,eAAe,EAAE;gBACb,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,CAAC;gBACV,cAAc,EAAE,CAAC;gBACjB,WAAW,EAAE,IAAI;aACpB;YACD,oBAAoB,EAAE,UAAU;YAChC,SAAS,EAAE;gBACP;oBACI,IAAI,EAAE,SAAS;oBACf,UAAU,EAAE,KAAK;oBACjB,SAAS,EAAE,QAAQ;oBACnB,OAAO,EAAE,UAAU;oBACnB,MAAM,EAAE,GAAG;oBACX,MAAM,EAAE,EAAE;iBACb;aACJ;SACJ,CAAA;QACD,MAAM,QAAQ,GAAG,2BAA2B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC5D,MAAM,SAAS,GAAG,+BAA+B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
|
|
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