@kynesyslabs/demosdk 2.12.1 → 3.1.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.
Files changed (108) hide show
  1. package/build/abstraction/EvmCoinFinder.js +14 -2
  2. package/build/abstraction/EvmCoinFinder.js.map +1 -1
  3. package/build/abstraction/Identities.js +3 -1
  4. package/build/abstraction/Identities.js.map +1 -1
  5. package/build/bridge/nativeBridgeTypes.d.ts +4 -3
  6. package/build/bridge/nativeBridgeTypes.js.map +1 -1
  7. package/build/d402/client/types.d.ts +6 -3
  8. package/build/d402/server/D402Server.d.ts +25 -0
  9. package/build/d402/server/D402Server.js +63 -2
  10. package/build/d402/server/D402Server.js.map +1 -1
  11. package/build/d402/server/middleware.d.ts +7 -4
  12. package/build/d402/server/middleware.js.map +1 -1
  13. package/build/d402/server/types.d.ts +15 -7
  14. package/build/denomination/conversion.test.js +1 -1
  15. package/build/denomination/conversion.test.js.map +1 -1
  16. package/build/denomination/index.d.ts +3 -0
  17. package/build/denomination/index.js +6 -0
  18. package/build/denomination/index.js.map +1 -1
  19. package/build/denomination/networkInfo.d.ts +69 -0
  20. package/build/denomination/networkInfo.js +38 -0
  21. package/build/denomination/networkInfo.js.map +1 -0
  22. package/build/denomination/networkInfo.test.d.ts +1 -0
  23. package/build/denomination/networkInfo.test.js +28 -0
  24. package/build/denomination/networkInfo.test.js.map +1 -0
  25. package/build/denomination/roundTripHash.test.d.ts +1 -0
  26. package/build/denomination/roundTripHash.test.js +227 -0
  27. package/build/denomination/roundTripHash.test.js.map +1 -0
  28. package/build/denomination/serializerGate.d.ts +46 -0
  29. package/build/denomination/serializerGate.js +283 -0
  30. package/build/denomination/serializerGate.js.map +1 -0
  31. package/build/denomination/serializerGate.test.d.ts +1 -0
  32. package/build/denomination/serializerGate.test.js +245 -0
  33. package/build/denomination/serializerGate.test.js.map +1 -0
  34. package/build/encryption/zK/interactive/index.js +5 -1
  35. package/build/encryption/zK/interactive/index.js.map +1 -1
  36. package/build/escrow/EscrowTransaction.d.ts +36 -5
  37. package/build/escrow/EscrowTransaction.js +91 -10
  38. package/build/escrow/EscrowTransaction.js.map +1 -1
  39. package/build/instant_messaging/L2PSMessagingPeer.js +4 -1
  40. package/build/instant_messaging/L2PSMessagingPeer.js.map +1 -1
  41. package/build/ipfs/IPFSOperations.d.ts +37 -10
  42. package/build/ipfs/IPFSOperations.js +38 -8
  43. package/build/ipfs/IPFSOperations.js.map +1 -1
  44. package/build/storage/StorageProgram.d.ts +16 -8
  45. package/build/storage/StorageProgram.js +16 -8
  46. package/build/storage/StorageProgram.js.map +1 -1
  47. package/build/tlsnotary/TLSNotaryService.d.ts +19 -8
  48. package/build/tlsnotary/TLSNotaryService.js +22 -7
  49. package/build/tlsnotary/TLSNotaryService.js.map +1 -1
  50. package/build/tlsnotary/helpers.d.ts +11 -5
  51. package/build/tlsnotary/helpers.js +17 -5
  52. package/build/tlsnotary/helpers.js.map +1 -1
  53. package/build/types/blockchain/CustomCharges.d.ts +28 -16
  54. package/build/types/blockchain/CustomCharges.js +15 -5
  55. package/build/types/blockchain/CustomCharges.js.map +1 -1
  56. package/build/types/blockchain/GCREdit.d.ts +80 -3
  57. package/build/types/blockchain/NetworkParameters.d.ts +54 -0
  58. package/build/types/blockchain/NetworkParameters.js +9 -0
  59. package/build/types/blockchain/NetworkParameters.js.map +1 -0
  60. package/build/types/blockchain/Transaction.d.ts +21 -3
  61. package/build/types/blockchain/Transaction.js.map +1 -1
  62. package/build/types/blockchain/TransactionSubtypes/D402PaymentTransaction.d.ts +8 -3
  63. package/build/types/blockchain/TransactionSubtypes/NetworkUpgradeTransaction.d.ts +20 -0
  64. package/build/types/blockchain/TransactionSubtypes/NetworkUpgradeTransaction.js +2 -0
  65. package/build/types/blockchain/TransactionSubtypes/NetworkUpgradeTransaction.js.map +1 -0
  66. package/build/types/blockchain/TransactionSubtypes/NetworkUpgradeVoteTransaction.d.ts +13 -0
  67. package/build/types/blockchain/TransactionSubtypes/NetworkUpgradeVoteTransaction.js +2 -0
  68. package/build/types/blockchain/TransactionSubtypes/NetworkUpgradeVoteTransaction.js.map +1 -0
  69. package/build/types/blockchain/TransactionSubtypes/StorageProgramTransaction.d.ts +6 -5
  70. package/build/types/blockchain/TransactionSubtypes/StorageProgramTransaction.js +15 -3
  71. package/build/types/blockchain/TransactionSubtypes/StorageProgramTransaction.js.map +1 -1
  72. package/build/types/blockchain/TransactionSubtypes/ValidatorExitTransaction.d.ts +10 -0
  73. package/build/types/blockchain/TransactionSubtypes/ValidatorExitTransaction.js +2 -0
  74. package/build/types/blockchain/TransactionSubtypes/ValidatorExitTransaction.js.map +1 -0
  75. package/build/types/blockchain/TransactionSubtypes/ValidatorStakeTransaction.d.ts +15 -0
  76. package/build/types/blockchain/TransactionSubtypes/ValidatorStakeTransaction.js +2 -0
  77. package/build/types/blockchain/TransactionSubtypes/ValidatorStakeTransaction.js.map +1 -0
  78. package/build/types/blockchain/TransactionSubtypes/ValidatorUnstakeTransaction.d.ts +10 -0
  79. package/build/types/blockchain/TransactionSubtypes/ValidatorUnstakeTransaction.js +2 -0
  80. package/build/types/blockchain/TransactionSubtypes/ValidatorUnstakeTransaction.js.map +1 -0
  81. package/build/types/blockchain/TransactionSubtypes/index.d.ts +11 -1
  82. package/build/types/blockchain/TransactionSubtypes/index.js +7 -0
  83. package/build/types/blockchain/TransactionSubtypes/index.js.map +1 -1
  84. package/build/types/blockchain/TxFee.d.ts +16 -3
  85. package/build/types/blockchain/address.d.ts +23 -0
  86. package/build/types/blockchain/rawTransaction.d.ts +13 -4
  87. package/build/types/blockchain/statusNative.d.ts +9 -1
  88. package/build/types/bridge/bridgeTradePayload.d.ts +1 -1
  89. package/build/types/gls/StateChange.d.ts +29 -3
  90. package/build/types/index.d.ts +4 -2
  91. package/build/types/index.js.map +1 -1
  92. package/build/types/native/INativePayload.d.ts +6 -1
  93. package/build/types/validator/ValidatorTypes.d.ts +13 -0
  94. package/build/types/validator/ValidatorTypes.js +3 -0
  95. package/build/types/validator/ValidatorTypes.js.map +1 -0
  96. package/build/wallet/Wallet.d.ts +27 -1
  97. package/build/wallet/Wallet.js +30 -17
  98. package/build/wallet/Wallet.js.map +1 -1
  99. package/build/websdk/DemosTransactions.d.ts +78 -4
  100. package/build/websdk/DemosTransactions.js +253 -9
  101. package/build/websdk/DemosTransactions.js.map +1 -1
  102. package/build/websdk/GCRGeneration.d.ts +11 -2
  103. package/build/websdk/GCRGeneration.js +143 -14
  104. package/build/websdk/GCRGeneration.js.map +1 -1
  105. package/build/websdk/demosclass.d.ts +238 -26
  106. package/build/websdk/demosclass.js +434 -54
  107. package/build/websdk/demosclass.js.map +1 -1
  108. package/package.json +1 -1
@@ -7,6 +7,8 @@ import { uint8ArrayToHex } from "../encryption/unifiedCrypto.js";
7
7
  import { Enigma } from "../encryption/PQC/enigma.js";
8
8
  import { BroadcastTimeoutError } from "./BroadcastTimeoutError.js";
9
9
  import { BroadcastFailedError } from "./BroadcastFailedError.js";
10
+ import { serializeTransactionContent } from "../denomination/serializerGate.js";
11
+ import { OS_PER_DEM } from "../denomination/index.js";
10
12
  // Connection-error codes indicating the request never reached the node.
11
13
  // HTTP 5xx is intentionally NOT in this set: a 5xx means the server did
12
14
  // answer, so the broadcast may have landed even if the response was lost.
@@ -35,8 +37,16 @@ export const DemosTransactions = {
35
37
  /**
36
38
  * Create a signed DEMOS transaction to send native tokens to a given address.
37
39
  *
40
+ * P4 dual-input:
41
+ * - `bigint`: OS amount (preferred — 1 DEM = 10^9 OS).
42
+ * - `number`: DEM amount (legacy, deprecated). Auto-converted to OS.
43
+ *
44
+ * Internal carrier in `tx.content.amount` is bigint OS; the
45
+ * serializerGate (run from `demos.sign`) emits the right wire shape
46
+ * per the connected node's fork status.
47
+ *
38
48
  * @param to - The reciever
39
- * @param amount - The amount in DEM
49
+ * @param amount - DEM `number` (legacy) or OS `bigint`.
40
50
  * @param demos - The demos instance (for getting the address nonce)
41
51
  *
42
52
  * @returns The signed transaction.
@@ -47,25 +57,81 @@ export const DemosTransactions = {
47
57
  const { publicKey } = await demos.crypto.getIdentity("ed25519");
48
58
  const publicKeyHex = uint8ArrayToHex(publicKey);
49
59
  const nonce = await demos.getAddressNonce(publicKeyHex);
50
- // tx.content.from_ed25519_address = publicKeyHex
51
- // REVIEW Get the address nonce
52
- // tx.content.from = from
60
+ if (typeof amount === "bigint" && amount < 0n) {
61
+ throw new Error(`[DemosTransactions.pay] amountOs must be non-negative, got ${amount}`);
62
+ }
63
+ const amountOs = typeof amount === "bigint"
64
+ ? amount
65
+ : DemosTransactions._demNumberToOsBigint(amount);
66
+ // Sub-DEM precision guard. Demos.pay already runs this before
67
+ // delegating, but DemosTransactions.pay is also a public entry
68
+ // point (callers can import it directly). Run the same guard so
69
+ // every path that reaches the wire is symmetric — without this,
70
+ // a direct caller could submit a sub-DEM bigint to a pre-fork
71
+ // node and silently truncate via `wireAmount` below.
72
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
73
+ await demos._assertAmountAcceptableOnTargetNode(amountOs);
74
+ // Resolve the fork status now so we can emit the correct wire
75
+ // shape into `tx.content.data` — the node's serializer does not
76
+ // walk `data`, so the construction site is the source of truth
77
+ // for the bytes inside it. `_isPostForkCached` is private; we
78
+ // reach in via `any` because P4 internals haven't been promoted
79
+ // to the public surface.
80
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
81
+ const isPostFork = await demos._isPostForkCached();
82
+ const wireAmount = isPostFork
83
+ ? amountOs.toString()
84
+ : Number(amountOs / OS_PER_DEM);
53
85
  tx.content.to = to;
54
86
  tx.content.nonce = nonce + 1;
55
- tx.content.amount = amount;
87
+ // Internal carrier on `content.amount` is bigint OS — the
88
+ // serializerGate normalises it at hash time.
89
+ tx.content.amount = amountOs;
56
90
  tx.content.type = "native";
57
91
  tx.content.timestamp = Date.now();
58
92
  tx.content.data = [
59
93
  "native",
60
- { nativeOperation: "send", args: [to, amount] },
94
+ {
95
+ nativeOperation: "send",
96
+ // The serializer doesn't walk `data`, so emit the
97
+ // wire shape directly. INativeSend.args[1] was widened
98
+ // in commit 1 to accept OS string alongside DEM number.
99
+ args: [to, wireAmount],
100
+ },
61
101
  ];
62
102
  return await demos.sign(tx);
63
103
  },
104
+ /**
105
+ * Convert a legacy DEM `number` input to an OS `bigint` for internal
106
+ * carrying. Only whole-DEM `number` inputs are accepted on this
107
+ * legacy path — fractional DEM is rejected with a clear error
108
+ * directing callers to the bigint OS path (`denomination.demToOs`).
109
+ *
110
+ * Rationale: silently flooring (the previous behaviour) discarded up
111
+ * to ~10^9 OS per call without warning. The migration period
112
+ * tolerates legacy `number` callers, but only at exact DEM
113
+ * granularity — anything sub-DEM must come in as `bigint` so the
114
+ * caller has explicitly opted into OS arithmetic.
115
+ *
116
+ * @internal
117
+ */
118
+ _demNumberToOsBigint(amountDem) {
119
+ if (!Number.isFinite(amountDem) || amountDem < 0) {
120
+ throw new Error(`[DemosTransactions] amount must be a non-negative finite number or bigint, got ${amountDem}`);
121
+ }
122
+ if (!Number.isInteger(amountDem)) {
123
+ throw new Error(`[DemosTransactions] fractional DEM not supported on the number path (got ${amountDem}); pass a bigint OS amount via denomination.demToOs("${amountDem}") instead`);
124
+ }
125
+ return BigInt(amountDem) * OS_PER_DEM;
126
+ },
64
127
  /**
65
128
  * Create a signed DEMOS transaction to send native tokens to a given address.
66
129
  *
130
+ * Alias of {@link pay}. Same dual-input semantics — `bigint` OS
131
+ * preferred, `number` DEM accepted as the deprecated path.
132
+ *
67
133
  * @param to - The reciever
68
- * @param amount - The amount in DEM
134
+ * @param amount - DEM `number` (legacy) or OS `bigint`.
69
135
  * @param demos - The demos instance (for getting the address nonce)
70
136
  *
71
137
  * @returns The signed transaction.
@@ -99,8 +165,21 @@ export const DemosTransactions = {
99
165
  // REVIEW Generate the GCREdit in the client (will be compared on the node)
100
166
  // NOTE They are created without the tx hash, which is added in the node
101
167
  raw_tx.content.gcr_edits = await GCRGeneration.generate(raw_tx);
102
- // Hash the content of the transaction
103
- raw_tx.hash = await sha256(JSON.stringify(raw_tx.content));
168
+ // Hash the content of the transaction.
169
+ // P4 commit 2: route through the dual-format serializerGate. This
170
+ // deprecated signer has no `Demos` instance available so it
171
+ // cannot consult cached fork status — defaults to pre-fork
172
+ // (legacy wire). Callers that need post-fork compatibility should
173
+ // use `demos.sign(tx)`, which threads the cached fork status from
174
+ // `getNetworkInfo`.
175
+ const serialized = serializeTransactionContent(raw_tx.content, false);
176
+ raw_tx.hash = await sha256(serialized);
177
+ // Normalise content to the wire shape the hash committed to so
178
+ // downstream JSON.stringify (axios body serialisation) does not
179
+ // see internal bigint carriers and so the broadcast bytes match
180
+ // the bytes we just signed. See the equivalent block in
181
+ // `Demos.sign` for the full rationale (myc#13).
182
+ raw_tx.content = JSON.parse(serialized);
104
183
  raw_tx.signature = await DemosTransactions.signWithAlgorithm(raw_tx.hash, keypair, { algorithm: options.algorithm });
105
184
  return raw_tx; // Return the hashed and signed transaction
106
185
  },
@@ -379,5 +458,170 @@ export const DemosTransactions = {
379
458
  return await demos.sign(tx);
380
459
  },
381
460
  // NOTE Subnet transactions methods are imported and exposed in demos.ts from the l2ps.ts file.
461
+ // SECTION Validator staking (Phase 0 — upgradable_network track)
462
+ /**
463
+ * Create a signed `validatorStake` transaction. Used both for initial
464
+ * validator registration and to top up an existing stake.
465
+ *
466
+ * @param amount - Stake amount in base-unit DEMOS, encoded as a bigint string.
467
+ * @param connectionUrl - Validator's public endpoint (required on first stake;
468
+ * subsequent top-ups may overwrite it).
469
+ * @param demos - The demos instance (for nonce + signing).
470
+ */
471
+ async stake(amount, connectionUrl, demos) {
472
+ required(demos.keypair, "Wallet not connected");
473
+ required(amount, "Stake amount is required");
474
+ if (typeof amount !== "string" || !/^\d+$/.test(amount)) {
475
+ throw new Error("Invalid stake amount: expected a non-negative bigint-encoded string");
476
+ }
477
+ if (BigInt(amount) <= 0n) {
478
+ throw new Error("Stake amount must be greater than 0");
479
+ }
480
+ required(connectionUrl, "Connection URL is required");
481
+ try {
482
+ new URL(connectionUrl);
483
+ }
484
+ catch {
485
+ throw new Error("Invalid connectionUrl: expected an absolute URL (e.g. https://node.example)");
486
+ }
487
+ const tx = DemosTransactions.empty();
488
+ const { publicKey } = await demos.crypto.getIdentity("ed25519");
489
+ const publicKeyHex = uint8ArrayToHex(publicKey);
490
+ const nonce = await demos.getAddressNonce(publicKeyHex);
491
+ // Staking txs are reflexive — the sender operates on their own
492
+ // validator record. `to` must still pass sign()'s 0x64-hex check.
493
+ tx.content.to = publicKeyHex;
494
+ tx.content.nonce = nonce + 1;
495
+ tx.content.amount = 0;
496
+ tx.content.type = "validatorStake";
497
+ tx.content.timestamp = Date.now();
498
+ tx.content.data = ["validatorStake", { amount, connectionUrl }];
499
+ return await demos.sign(tx);
500
+ },
501
+ /**
502
+ * Create a signed `validatorUnstake` transaction. Arms the unstake lock
503
+ * period; after `UNSTAKE_LOCK_BLOCKS` have elapsed the validator may call
504
+ * `validatorExit`.
505
+ */
506
+ async unstake(demos) {
507
+ required(demos.keypair, "Wallet not connected");
508
+ const tx = DemosTransactions.empty();
509
+ const { publicKey } = await demos.crypto.getIdentity("ed25519");
510
+ const publicKeyHex = uint8ArrayToHex(publicKey);
511
+ const nonce = await demos.getAddressNonce(publicKeyHex);
512
+ tx.content.to = publicKeyHex;
513
+ tx.content.nonce = nonce + 1;
514
+ tx.content.amount = 0;
515
+ tx.content.type = "validatorUnstake";
516
+ tx.content.timestamp = Date.now();
517
+ tx.content.data = ["validatorUnstake", {}];
518
+ return await demos.sign(tx);
519
+ },
520
+ /**
521
+ * Create a signed `validatorExit` transaction. Only accepted by the
522
+ * network once `unstake_available_at <= currentBlock`.
523
+ */
524
+ async validatorExit(demos) {
525
+ required(demos.keypair, "Wallet not connected");
526
+ const tx = DemosTransactions.empty();
527
+ const { publicKey } = await demos.crypto.getIdentity("ed25519");
528
+ const publicKeyHex = uint8ArrayToHex(publicKey);
529
+ const nonce = await demos.getAddressNonce(publicKeyHex);
530
+ tx.content.to = publicKeyHex;
531
+ tx.content.nonce = nonce + 1;
532
+ tx.content.amount = 0;
533
+ tx.content.type = "validatorExit";
534
+ tx.content.timestamp = Date.now();
535
+ tx.content.data = ["validatorExit", {}];
536
+ return await demos.sign(tx);
537
+ },
538
+ // SECTION Stackable-genesis governance (Phase 1 — upgradable_network track)
539
+ /**
540
+ * Create a signed `networkUpgrade` proposal transaction.
541
+ *
542
+ * Only active validators may propose. The node rejects proposals whose
543
+ * `proposedParameters` violate safety bounds (≤50% change, absolute
544
+ * floor/ceiling) or overlap keys with other pending/activating proposals.
545
+ *
546
+ * @param params.proposalId - UUID. Also used as lexicographic activation-order tiebreaker.
547
+ * @param params.proposedParameters - Subset of NetworkParameters to change.
548
+ * @param params.rationale - Human-readable reason, ≤1024 bytes.
549
+ * @param params.effectiveAtBlock - Activation block. Must be ≥ tallyBlock + grace period.
550
+ */
551
+ async proposeNetworkUpgrade(params, demos) {
552
+ required(demos.keypair, "Wallet not connected");
553
+ const trimmedProposalId = params?.proposalId?.trim();
554
+ required(trimmedProposalId, "proposalId is required");
555
+ required(params?.rationale != null && typeof params.rationale === "string", "rationale is required (use empty string if none)");
556
+ if (typeof params?.effectiveAtBlock !== "number" ||
557
+ !Number.isInteger(params.effectiveAtBlock) ||
558
+ params.effectiveAtBlock < 0) {
559
+ throw new Error("effectiveAtBlock must be a non-negative integer block number");
560
+ }
561
+ if (!params?.proposedParameters ||
562
+ typeof params.proposedParameters !== "object" ||
563
+ Array.isArray(params.proposedParameters)) {
564
+ throw new Error("proposedParameters must be a non-empty plain object");
565
+ }
566
+ // Drop undefined-valued keys before counting + signing — JSON.stringify
567
+ // would silently strip them, so a tx with only-undefined values would
568
+ // sign as `{}` and get rejected at the node.
569
+ // Preserves Partial<NetworkParameters> typing for downstream consumers.
570
+ const cleanedParams = Object.fromEntries(Object.entries(params.proposedParameters)
571
+ .filter(([, v]) => v !== undefined));
572
+ if (Object.keys(cleanedParams).length === 0) {
573
+ throw new Error("proposedParameters must contain at least one defined value");
574
+ }
575
+ const tx = DemosTransactions.empty();
576
+ const { publicKey } = await demos.crypto.getIdentity("ed25519");
577
+ const publicKeyHex = uint8ArrayToHex(publicKey);
578
+ const nonce = await demos.getAddressNonce(publicKeyHex);
579
+ tx.content.to = publicKeyHex;
580
+ tx.content.nonce = nonce + 1;
581
+ tx.content.amount = 0;
582
+ tx.content.type = "networkUpgrade";
583
+ tx.content.timestamp = Date.now();
584
+ // Sign the trimmed/cleaned values — keep the wire format consistent
585
+ // with what the validation guards above accepted.
586
+ tx.content.data = [
587
+ "networkUpgrade",
588
+ {
589
+ proposalId: trimmedProposalId,
590
+ proposedParameters: cleanedParams,
591
+ rationale: params.rationale,
592
+ effectiveAtBlock: params.effectiveAtBlock,
593
+ },
594
+ ];
595
+ return await demos.sign(tx);
596
+ },
597
+ /**
598
+ * Create a signed `networkUpgradeVote` transaction.
599
+ *
600
+ * The voter must be in the validator snapshot taken at the proposal's
601
+ * confirmation block, and may cast exactly one vote per proposal (final,
602
+ * non-revocable).
603
+ */
604
+ async voteOnUpgrade(proposalId, approve, demos) {
605
+ required(demos.keypair, "Wallet not connected");
606
+ const trimmedProposalId = proposalId?.trim();
607
+ required(trimmedProposalId, "proposalId is required");
608
+ if (typeof approve !== "boolean") {
609
+ throw new Error("approve must be a boolean (true=yes, false=no)");
610
+ }
611
+ const tx = DemosTransactions.empty();
612
+ const { publicKey } = await demos.crypto.getIdentity("ed25519");
613
+ const publicKeyHex = uint8ArrayToHex(publicKey);
614
+ const nonce = await demos.getAddressNonce(publicKeyHex);
615
+ tx.content.to = publicKeyHex;
616
+ tx.content.nonce = nonce + 1;
617
+ tx.content.amount = 0;
618
+ tx.content.type = "networkUpgradeVote";
619
+ tx.content.timestamp = Date.now();
620
+ tx.content.data = [
621
+ "networkUpgradeVote",
622
+ { proposalId: trimmedProposalId, approve },
623
+ ];
624
+ return await demos.sign(tx);
625
+ },
382
626
  };
383
627
  //# sourceMappingURL=DemosTransactions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DemosTransactions.js","sourceRoot":"","sources":["../../../src/websdk/DemosTransactions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAA;AAK9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,SAAS,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,wEAAwE;AACxE,wEAAwE;AACxE,0EAA0E;AAC1E,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACpC,cAAc;IACd,WAAW;IACX,YAAY;IACZ,WAAW;CACd,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,uBAAuB;IACvB,oDAAoD;IACpD,KAAK,EAAE;QACH,OAAO,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACjD,CAAC;IACD,4DAA4D;IAC5D,OAAO,EAAE,KAAK,WAAW,OAAY,IAAI;QACrC,sDAAsD;QACtD,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAErD,mDAAmD;QACnD,+CAA+C;QAC/C,IAAI,IAAI;YAAE,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;QACpC,OAAO,MAAM,CAAA;IACjB,CAAC;IACD;;;;;;;;OAQG;IACH,KAAK,CAAC,GAAG,CAAC,EAAU,EAAE,MAAc,EAAE,KAAY;QAC9C,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAA;QAE/C,IAAI,EAAE,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAA;QAElC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QAC/D,MAAM,YAAY,GAAG,eAAe,CAAC,SAAuB,CAAC,CAAA;QAC7D,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;QAEvD,iDAAiD;QACjD,+BAA+B;QAC/B,yBAAyB;QAEzB,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;QAClB,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAA;QAC5B,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;QAC1B,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAA;QAC1B,EAAE,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACjC,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG;YACd,QAAQ;YACR,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;SAClD,CAAA;QAED,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/B,CAAC;IACD;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAU,EAAE,MAAc,EAAE,KAAY;QAC7C,OAAO,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IACnD,CAAC;IACD,8CAA8C;IAC9C;;;;;;;;OAQG;IACH,IAAI,EAAE,KAAK,WACP,MAAmB,EACnB,OAAiB,EACjB,OAEC;QAED,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAA;QAE7C,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACjC,OAAO,GAAG;gBACN,SAAS,EAAE,SAAS;aACvB,CAAA;QACL,CAAC;QAED,uFAAuF;QACvF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACzC,CAAC;QAED,wCAAwC;QACxC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,SAAuB,CAAC,CAAA;QAEtE,2EAA2E;QAC3E,wEAAwE;QACxE,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAE/D,sCAAsC;QACtC,MAAM,CAAC,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QAC1D,MAAM,CAAC,SAAS,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CACxD,MAAM,CAAC,IAAI,EACX,OAAO,EACP,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CACnC,CAAA;QAED,OAAO,MAAM,CAAA,CAAC,2CAA2C;IAC7D,CAAC;IAED;;;;;;;OAOG;IACH,iBAAiB,EAAE,KAAK,WACpB,IAAY,EACZ,OAAiB,EACjB,OAAwC;QAKxC,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAA;QAC7C,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAA;QAEhE,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;YAE7D,OAAO;gBACH,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC;aACnC,CAAA;QACL,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;QAE3B,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,OAAc,CAAC,CAAA;YAEhE,OAAO;gBACH,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC;aACnC,CAAA;QACL,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC3C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAEzD,OAAO;gBACH,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC;aACnC,CAAA;QACL,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAClE,CAAC;IACD,8CAA8C;IAC9C;;;;;OAKG;IACH,OAAO,EAAE,KAAK,WAAW,WAAwB,EAAE,KAAY;QAC3D,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA;QACxE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QAClC,6CAA6C;QAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACX,sCAAsC;gBACtC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CACjC,CAAA;QACL,CAAC;QAED,OAAO,QAAuC,CAAA;IAClD,CAAC;IACD;;;;;;;OAOG;IACH,SAAS,EAAE,KAAK,WACZ,cAA2C,EAC3C,KAAY;QAEZ,gDAAgD;QAChD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CACX,wCAAwC;gBACxC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CACvC,CAAA;QACL,CAAC;QACD,6EAA6E;QAC7E,mDAAmD;QACnD,0DAA0D;QAC1D,wCAAwC;QACxC,+HAA+H;QAC/H,4CAA4C;QAC5C,qDAAqD;QAErD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CACxB,SAAS,EACT,EAAE,EACF,cAAc,EACd,aAAa,CAChB,CAAA;QAED,IAAI,CAAC;YACD,OAAO;gBACH,GAAG,GAAG;gBACN,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;aACrC,CAAA;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,GAAG,CAAA;QACd,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,gBAAgB,EAAE,KAAK,WACnB,cAA2C,EAC3C,KAAY,EACZ,IAIC;QAKD,MAAM,OAAO,GAAG,IAAI,EAAE,SAAS,IAAI,KAAM,CAAA;QACzC,MAAM,YAAY,GAAG,IAAI,EAAE,cAAc,IAAI,GAAG,CAAA;QAChD,MAAM,QAAQ,GAAG,IAAI,EAAE,wBAAwB,IAAI,KAAK,CAAA;QAExD,oEAAoE;QACpE,0CAA0C;QAC1C,MAAM,MAAM,GAAG,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAA;QAChE,QAAQ,CAAC,MAAM,EAAE,mDAAmD,CAAC,CAAA;QAErE,qEAAqE;QACrE,gEAAgE;QAChE,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAClD,cAAc,EACd,KAAK,CACR,CAAA;QAED,qEAAqE;QACrE,sEAAsE;QACtE,oEAAoE;QACpE,iFAAiF;QACjF,uEAAuE;QACvE,2EAA2E;QAC3E,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,0BAA0B,GAC5B,YAAY;gBACZ,OAAO,YAAY,KAAK,QAAQ;gBAC/B,YAAoB,CAAC,MAAM,KAAK,GAAG;gBACpC,eAAe,IAAI,YAAY,CAAA;YACnC,IAAI,0BAA0B,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAI,YAAoB,CAAC,QAAQ,CAAA;gBAC5C,MAAM,IAAI,GAAwB,KAAa,EAAE,IAAI,CAAA;gBACrD,MAAM,SAAS,GACX,OAAQ,KAAa,EAAE,QAAQ,EAAE,MAAM,KAAK,QAAQ,CAAA;gBACxD,MAAM,eAAe,GACjB,CAAC,SAAS;oBACV,OAAO,IAAI,KAAK,QAAQ;oBACxB,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACrC,IAAI,eAAe,EAAE,CAAC;oBAClB,MAAM,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;gBACrD,CAAC;YACL,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,SAAS,GAAW,SAAS,CAAA;QAEjC,qEAAqE;QACrE,oEAAoE;QACpE,mDAAmD;QACnD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;YAClC,OAAO,EAAE,CAAA;YAET,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBACd,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAA;YACvD,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,IAAI,CAC9B,UAAU,EACV,EAAE,EACF,EAAE,IAAI,EAAE,MAAM,EAAE,EAChB,sBAAsB,CACzB,CAAA;YAED,2DAA2D;YAC3D,gEAAgE;YAChE,6DAA6D;YAC7D,+DAA+D;YAC/D,2DAA2D;YAC3D,qCAAqC;YACrC,MAAM,0BAA0B,GAC5B,SAAS;gBACT,OAAO,SAAS,KAAK,QAAQ;gBAC7B,QAAQ,IAAI,SAAS;gBACpB,SAAiB,CAAC,MAAM,KAAK,GAAG;gBACjC,eAAe,IAAI,SAAS,CAAA;YAEhC,IAAI,0BAA0B,EAAE,CAAC;gBAC7B,SAAQ;YACZ,CAAC;YAED,MAAM,KAAK,GACP,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ;gBACtC,CAAC,CAAE,SAAiB,CAAC,KAAK;gBAC1B,CAAC,CAAC,SAAS,CAAA;YAEnB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,SAAS,GAAG,KAAK,CAAA;gBACjB,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC7C,MAAM,WAAW,GACZ,SAAiB,CAAC,WAAW,CAAA;oBAClC,OAAO;wBACH,SAAS,EAAE,YAAY;wBACvB,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;qBACjC,CAAA;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,MAAM,IAAI,qBAAqB,CAAC;YAC5B,MAAM;YACN,aAAa,EAAE,SAAS;YACxB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SAChC,CAAC,CAAA;IACN,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAK,CAAC,KAAiB,EAAE,KAAY;QACvC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAA;QAE/C,IAAI,EAAE,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAA;QAElC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QAC/D,MAAM,YAAY,GAAG,eAAe,CAAC,SAAuB,CAAC,CAAA;QAC7D,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;QAEvD,kDAAkD;QAClD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAEzD,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,YAAY,CAAA,CAAC,4CAA4C;QACzE,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAA;QAC5B,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA,CAAC,oDAAoD;QAC1E,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,SAAS,CAAA;QAC3B,EAAE,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACjC,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG;YACd,SAAS;YACT,EAAE,KAAK,EAAE,WAAW,EAAE;SACzB,CAAA;QAED,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,oBAAoB,CACtB,OAAe,EACf,gBAAwB,EACxB,gBAAwB,EACxB,KAAY;QAEZ,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAA;QAC/C,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAA;QACzC,QAAQ,CAAC,gBAAgB,EAAE,+BAA+B,CAAC,CAAA;QAC3D,QAAQ,CAAC,gBAAgB,IAAI,CAAC,EAAE,wCAAwC,CAAC,CAAA;QAEzE,IAAI,EAAE,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAA;QAElC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QAC/D,MAAM,YAAY,GAAG,eAAe,CAAC,SAAuB,CAAC,CAAA;QAC7D,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;QAEvD,6DAA6D;QAC7D,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,YAAY,CAAA;QAC5B,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAA;QAC5B,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA,CAAC,wCAAwC;QAC9D,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAA;QACpC,EAAE,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACjC,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG;YACd,kBAAkB;YAClB;gBACI,QAAQ,EAAE,OAAO;gBACjB,iBAAiB,EAAE,gBAAgB;gBACnC,iBAAiB,EAAE,gBAAgB;gBACnC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACL;SACvB,CAAA;QAED,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED,+FAA+F;CAClG,CAAA"}
1
+ {"version":3,"file":"DemosTransactions.js","sourceRoot":"","sources":["../../../src/websdk/DemosTransactions.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { Transaction } from "../types/blockchain/Transaction";
6
6
  * Note that the node will be responsible for checking if the gas can be paid.
7
7
  */
8
8
  export declare class GCRGeneration {
9
+ private static requirePayload;
9
10
  static generate(tx: Transaction, isRollback?: boolean): Promise<GCREdit[]>;
10
11
  static createGasEdit(account: string, txHash: string, isRollback?: boolean, gasAmount?: number): Promise<GCREdit>;
11
12
  /**
@@ -63,8 +64,16 @@ export declare class HandleD402Operations {
63
64
  */
64
65
  export declare class HandleStorageProgramOperations {
65
66
  /**
66
- * Calculate the storage fee based on data size
67
- * Pricing: 1 DEM per 10KB (rounded up)
67
+ * Calculate the storage fee based on data size.
68
+ *
69
+ * Pricing: 1 DEM per 10KB chunk (rounded up, minimum 1 DEM).
70
+ *
71
+ * P4: arithmetic in `bigint` OS (the smallest unit). Returned as a
72
+ * pair `{ feeOs, feeDem }` so callers can write the legacy DEM-number
73
+ * shape onto the wire while retaining bigint OS internally for
74
+ * future post-fork serializer use. The DEM number is exact whenever
75
+ * the OS amount is a whole multiple of `OS_PER_DEM`, which it
76
+ * always is for this fee schedule.
68
77
  */
69
78
  private static calculateStorageFee;
70
79
  static handle(tx: Transaction, isRollback?: boolean): Promise<GCREdit[]>;
@@ -1,11 +1,25 @@
1
1
  import { Hashing } from "../encryption/Hashing.js";
2
2
  import { STORAGE_PROGRAM_CONSTANTS, } from "../types/blockchain/TransactionSubtypes/StorageProgramTransaction.js";
3
+ import { OS_PER_DEM } from "../denomination/index.js";
3
4
  /**
4
5
  * This class is responsible for generating the GCREdit for a transaction and is used
5
6
  * both in the client and the node.
6
7
  * Note that the node will be responsible for checking if the gas can be paid.
7
8
  */
8
9
  export class GCRGeneration {
10
+ // Fail-fast payload extractor — throws explicitly instead of silently
11
+ // defaulting missing/wrong-typed fields, which can flip semantics
12
+ // (e.g. a vote without `approve` would become an implicit reject).
13
+ static requirePayload(content, expectedType) {
14
+ const tuple = content.data;
15
+ if (!Array.isArray(tuple) ||
16
+ tuple[0] !== expectedType ||
17
+ tuple[1] == null ||
18
+ typeof tuple[1] !== "object") {
19
+ throw new Error(`[GCRGeneration] Invalid payload for ${expectedType} transaction`);
20
+ }
21
+ return tuple[1];
22
+ }
9
23
  static async generate(tx, isRollback = false) {
10
24
  const gcrEdits = [];
11
25
  const { content } = tx;
@@ -42,6 +56,106 @@ export class GCRGeneration {
42
56
  gcrEdits.push(...storageProgramEdits);
43
57
  break;
44
58
  }
59
+ // Phase 0 staking — synthesize a GCREditValidatorStake from
60
+ // the tx payload. Server-side handleStakingTx still validates
61
+ // policy (sender is validator, lock elapsed, etc.) but does
62
+ // NOT mutate gcr_edits — this generator runs identically on
63
+ // both sides so the hash comparison in handleValidateTransaction
64
+ // matches.
65
+ case "validatorStake": {
66
+ const p = this.requirePayload(content, "validatorStake");
67
+ if (typeof p.amount !== "string" || !/^\d+$/.test(p.amount)) {
68
+ throw new Error("[GCRGeneration] validatorStake.amount must be a non-negative bigint string");
69
+ }
70
+ if (typeof p.connectionUrl !== "string") {
71
+ throw new Error("[GCRGeneration] validatorStake.connectionUrl must be a string");
72
+ }
73
+ gcrEdits.push({
74
+ type: "validatorStake",
75
+ isRollback,
76
+ account: content.from_ed25519_address,
77
+ operation: "stake",
78
+ amount: p.amount,
79
+ connectionUrl: p.connectionUrl,
80
+ txhash: tx.hash,
81
+ });
82
+ break;
83
+ }
84
+ case "validatorUnstake": {
85
+ gcrEdits.push({
86
+ type: "validatorStake",
87
+ isRollback,
88
+ account: content.from_ed25519_address,
89
+ operation: "unstake",
90
+ amount: "0",
91
+ txhash: tx.hash,
92
+ });
93
+ break;
94
+ }
95
+ case "validatorExit": {
96
+ gcrEdits.push({
97
+ type: "validatorStake",
98
+ isRollback,
99
+ account: content.from_ed25519_address,
100
+ operation: "exit",
101
+ amount: "0",
102
+ txhash: tx.hash,
103
+ });
104
+ break;
105
+ }
106
+ // Phase 1 governance — proposal + vote. Server-derived
107
+ // fields (version, snapshotBlock, tallyBlock, weight,
108
+ // blockNumber) are filled at apply time by
109
+ // GCRNetworkUpgradeRoutines so the edit shape stays
110
+ // deterministic from tx content alone.
111
+ case "networkUpgrade": {
112
+ const p = this.requirePayload(content, "networkUpgrade");
113
+ if (typeof p.proposalId !== "string" || !p.proposalId) {
114
+ throw new Error("[GCRGeneration] networkUpgrade.proposalId must be a non-empty string");
115
+ }
116
+ if (typeof p.proposedParameters !== "object" ||
117
+ p.proposedParameters === null ||
118
+ Array.isArray(p.proposedParameters)) {
119
+ throw new Error("[GCRGeneration] networkUpgrade.proposedParameters must be a plain object");
120
+ }
121
+ if (typeof p.rationale !== "string") {
122
+ throw new Error("[GCRGeneration] networkUpgrade.rationale must be a string");
123
+ }
124
+ if (typeof p.effectiveAtBlock !== "number" ||
125
+ !Number.isInteger(p.effectiveAtBlock) ||
126
+ p.effectiveAtBlock < 0) {
127
+ throw new Error("[GCRGeneration] networkUpgrade.effectiveAtBlock must be a non-negative integer");
128
+ }
129
+ gcrEdits.push({
130
+ type: "networkUpgrade",
131
+ isRollback,
132
+ account: content.from_ed25519_address,
133
+ proposalId: p.proposalId,
134
+ proposedParameters: p.proposedParameters,
135
+ rationale: p.rationale,
136
+ effectiveAtBlock: p.effectiveAtBlock,
137
+ txhash: tx.hash,
138
+ });
139
+ break;
140
+ }
141
+ case "networkUpgradeVote": {
142
+ const p = this.requirePayload(content, "networkUpgradeVote");
143
+ if (typeof p.proposalId !== "string" || !p.proposalId) {
144
+ throw new Error("[GCRGeneration] networkUpgradeVote.proposalId must be a non-empty string");
145
+ }
146
+ if (typeof p.approve !== "boolean") {
147
+ throw new Error("[GCRGeneration] networkUpgradeVote.approve must be a boolean");
148
+ }
149
+ gcrEdits.push({
150
+ type: "networkUpgradeVote",
151
+ isRollback,
152
+ account: content.from_ed25519_address,
153
+ proposalId: p.proposalId,
154
+ approve: p.approve,
155
+ txhash: tx.hash,
156
+ });
157
+ break;
158
+ }
45
159
  }
46
160
  // SECTION Operations valid for all tx types
47
161
  // Add gas operation edit with check for availability of gas amount in the sender's balance
@@ -432,12 +546,21 @@ export class HandleD402Operations {
432
546
  */
433
547
  export class HandleStorageProgramOperations {
434
548
  /**
435
- * Calculate the storage fee based on data size
436
- * Pricing: 1 DEM per 10KB (rounded up)
549
+ * Calculate the storage fee based on data size.
550
+ *
551
+ * Pricing: 1 DEM per 10KB chunk (rounded up, minimum 1 DEM).
552
+ *
553
+ * P4: arithmetic in `bigint` OS (the smallest unit). Returned as a
554
+ * pair `{ feeOs, feeDem }` so callers can write the legacy DEM-number
555
+ * shape onto the wire while retaining bigint OS internally for
556
+ * future post-fork serializer use. The DEM number is exact whenever
557
+ * the OS amount is a whole multiple of `OS_PER_DEM`, which it
558
+ * always is for this fee schedule.
437
559
  */
438
560
  static calculateStorageFee(data, encoding = "json") {
439
- if (!data)
440
- return 1; // Minimum 1 DEM
561
+ if (!data) {
562
+ return { feeOs: OS_PER_DEM, feeDem: 1 };
563
+ }
441
564
  let sizeBytes;
442
565
  if (encoding === "binary") {
443
566
  // Binary: base64 string, decode to get actual bytes
@@ -449,10 +572,12 @@ export class HandleStorageProgramOperations {
449
572
  const jsonString = JSON.stringify(data);
450
573
  sizeBytes = new TextEncoder().encode(jsonString).length;
451
574
  }
452
- const chunks = Math.ceil(sizeBytes / STORAGE_PROGRAM_CONSTANTS.PRICING_CHUNK_BYTES);
453
- // FEE_PER_CHUNK is bigint in constants, convert to number for GCREdit compatibility
454
- const feePerChunk = Number(STORAGE_PROGRAM_CONSTANTS.FEE_PER_CHUNK);
455
- return Math.max(1, chunks) * feePerChunk;
575
+ const chunks = Math.max(1, Math.ceil(sizeBytes / STORAGE_PROGRAM_CONSTANTS.PRICING_CHUNK_BYTES));
576
+ const feeOs = BigInt(chunks) * STORAGE_PROGRAM_CONSTANTS.FEE_PER_CHUNK;
577
+ // OS_PER_DEM divides feeOs cleanly because FEE_PER_CHUNK ===
578
+ // OS_PER_DEM (P4) and `chunks` is a finite positive integer.
579
+ const feeDem = Number(feeOs / OS_PER_DEM);
580
+ return { feeOs, feeDem };
456
581
  }
457
582
  static async handle(tx, isRollback = false) {
458
583
  const edits = [];
@@ -462,15 +587,18 @@ export class HandleStorageProgramOperations {
462
587
  const { operation, storageAddress, encoding = "json", data } = payload;
463
588
  switch (operation) {
464
589
  case "CREATE_STORAGE_PROGRAM": {
465
- // Calculate and burn the storage fee
466
- const fee = this.calculateStorageFee(data, encoding);
590
+ // Calculate and burn the storage fee. Emit DEM-number on
591
+ // the wire (legacy shape); P4 commit 2's serializerGate
592
+ // will re-encode to OS-string when the connected node is
593
+ // post-fork.
594
+ const { feeDem } = this.calculateStorageFee(data, encoding);
467
595
  const burnFeeEdit = {
468
596
  type: "balance",
469
597
  operation: "remove",
470
598
  isRollback: isRollback,
471
599
  account: tx.content.from_ed25519_address,
472
600
  txhash: tx.hash,
473
- amount: fee,
601
+ amount: feeDem,
474
602
  };
475
603
  edits.push(burnFeeEdit);
476
604
  // Create the storage program edit
@@ -492,15 +620,16 @@ export class HandleStorageProgramOperations {
492
620
  break;
493
621
  }
494
622
  case "WRITE_STORAGE": {
495
- // Calculate and burn the storage fee for the new data
496
- const fee = this.calculateStorageFee(data, encoding);
623
+ // Calculate and burn the storage fee for the new data.
624
+ // Same legacy-DEM-number wire shape as CREATE_STORAGE_PROGRAM.
625
+ const { feeDem } = this.calculateStorageFee(data, encoding);
497
626
  const burnFeeEdit = {
498
627
  type: "balance",
499
628
  operation: "remove",
500
629
  isRollback: isRollback,
501
630
  account: tx.content.from_ed25519_address,
502
631
  txhash: tx.hash,
503
- amount: fee,
632
+ amount: feeDem,
504
633
  };
505
634
  edits.push(burnFeeEdit);
506
635
  // Create the write storage edit