@rolly-dev/wasm-signer 1.2.1 → 1.5.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.
@@ -92,6 +92,39 @@ export function compute_payout_dice(random, bet_atomic, game_mode, prediction_lo
92
92
  }
93
93
  }
94
94
 
95
+ /**
96
+ * Full plinko payout computation — pure integer arithmetic, zero floats.
97
+ *
98
+ * `random`: 4 Goldilocks field elements (Poseidon2 output).
99
+ * `bet_atomic`: bet in atomic units (1 USDT = 1_000_000).
100
+ * `sector`: risk profile (0=low, 1=medium, 2=high).
101
+ * `rows`: number of pin rows (8..16).
102
+ * `is_extreme`: whether extreme mode is active.
103
+ *
104
+ * Returns `BigUint64Array[4]`: `[win_amount, bucket_index, is_win (0|1), multiplier×10000]`.
105
+ * @param {BigUint64Array} random
106
+ * @param {bigint} bet_atomic
107
+ * @param {number} sector
108
+ * @param {number} rows
109
+ * @param {boolean} is_extreme
110
+ * @returns {BigUint64Array}
111
+ */
112
+ export function compute_payout_plinko(random, bet_atomic, sector, rows, is_extreme) {
113
+ try {
114
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
115
+ const ptr0 = passArray64ToWasm0(random, wasm.__wbindgen_export3);
116
+ const len0 = WASM_VECTOR_LEN;
117
+ wasm.compute_payout_plinko(retptr, ptr0, len0, bet_atomic, sector, rows, is_extreme);
118
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
119
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
120
+ var v2 = getArrayU64FromWasm0(r0, r1).slice();
121
+ wasm.__wbindgen_export2(r0, r1 * 8, 8);
122
+ return v2;
123
+ } finally {
124
+ wasm.__wbindgen_add_to_stack_pointer(16);
125
+ }
126
+ }
127
+
95
128
  /**
96
129
  * Extract dice roll number [0, 1000) from Poseidon2 random output.
97
130
  *
@@ -106,6 +139,23 @@ export function compute_roll_dice(random) {
106
139
  return ret >>> 0;
107
140
  }
108
141
 
142
+ /**
143
+ * Extract plinko bucket index from Poseidon2 random output.
144
+ *
145
+ * `random` must be exactly 4 elements.
146
+ * `rows` must be in [8, 16].
147
+ * Returns the bucket index (0..=rows) = popcount of first `rows` bits of random[0].
148
+ * @param {BigUint64Array} random
149
+ * @param {number} rows
150
+ * @returns {number}
151
+ */
152
+ export function compute_roll_plinko(random, rows) {
153
+ const ptr0 = passArray64ToWasm0(random, wasm.__wbindgen_export3);
154
+ const len0 = WASM_VECTOR_LEN;
155
+ const ret = wasm.compute_roll_plinko(ptr0, len0, rows);
156
+ return ret >>> 0;
157
+ }
158
+
109
159
  /**
110
160
  * Full Poseidon2 hash of an 8-element server seed.
111
161
  *
Binary file
@@ -5,7 +5,9 @@ export const amount_split: (a: number, b: bigint) => void;
5
5
  export const compute_address_hash: (a: number, b: number, c: number) => void;
6
6
  export const compute_multi_dice: (a: number) => bigint;
7
7
  export const compute_payout_dice: (a: number, b: number, c: number, d: bigint, e: number, f: number, g: number) => void;
8
+ export const compute_payout_plinko: (a: number, b: number, c: number, d: bigint, e: number, f: number, g: number) => void;
8
9
  export const compute_roll_dice: (a: number, b: number) => number;
10
+ export const compute_roll_plinko: (a: number, b: number, c: number) => number;
9
11
  export const compute_server_seed_hash: (a: number, b: number, c: number) => void;
10
12
  export const derive_session_key: (a: number, b: number, c: number) => void;
11
13
  export const generate_user_seed: (a: number) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolly-dev/wasm-signer",
3
- "version": "1.2.1",
3
+ "version": "1.5.0",
4
4
  "description": "Poseidon2 hashing & bet signing for Rolly ZK-Rollup (WASM, Goldilocks field)",
5
5
  "type": "module",
6
6
  "exports": {