@rolly-dev/wasm-signer 1.11.0 → 1.12.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.
@@ -3,12 +3,15 @@
3
3
  export const memory: WebAssembly.Memory;
4
4
  export const amount_split: (a: number, b: bigint) => void;
5
5
  export const compute_address_hash: (a: number, b: number, c: number) => void;
6
+ export const compute_drawn_keno: (a: number, b: number, c: number) => void;
6
7
  export const compute_multi_dice: (a: number) => bigint;
7
8
  export const compute_payout_coinflip: (a: number, b: number, c: number, d: bigint, e: number) => void;
8
9
  export const compute_payout_dice: (a: number, b: number, c: number, d: bigint, e: number, f: number, g: number) => void;
10
+ export const compute_payout_keno: (a: number, b: number, c: number, d: bigint, e: number, f: number, g: number) => void;
9
11
  export const compute_payout_limbo: (a: number, b: number, c: number, d: bigint, e: number, f: number) => void;
10
12
  export const compute_payout_plinko: (a: number, b: number, c: number, d: bigint, e: number, f: number, g: number) => void;
11
13
  export const compute_prediction_hash: (a: number, b: number, c: number, d: number, e: number) => void;
14
+ export const compute_prediction_hash_keno: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
12
15
  export const compute_roll_coinflip: (a: number, b: number) => number;
13
16
  export const compute_roll_dice: (a: number, b: number) => number;
14
17
  export const compute_roll_limbo: (a: number, b: number, c: number) => number;
@@ -18,6 +18,15 @@ export function amount_split(amount: bigint): Uint32Array;
18
18
  */
19
19
  export function compute_address_hash(address_hex: string): BigUint64Array;
20
20
 
21
+ /**
22
+ * Extract the 10 drawn numbers from Poseidon2 random output using
23
+ * the combinatorial number system: `combo_index = random[0] % C(40,10)`.
24
+ *
25
+ * `random` must be exactly 4 elements.
26
+ * Returns `Uint8Array` of length 10 (sorted ascending, each in [0, 39]).
27
+ */
28
+ export function compute_drawn_keno(random: BigUint64Array): Uint8Array;
29
+
21
30
  /**
22
31
  * Compute dice multiplier × 10000 from win_numbers count.
23
32
  *
@@ -49,6 +58,18 @@ export function compute_payout_coinflip(random: BigUint64Array, bet_atomic: bigi
49
58
  */
50
59
  export function compute_payout_dice(random: BigUint64Array, bet_atomic: bigint, game_mode: number, prediction_lo: number, prediction_hi: number): BigUint64Array;
51
60
 
61
+ /**
62
+ * Full keno payout computation — pure integer arithmetic, zero floats.
63
+ *
64
+ * `random`: 4 Goldilocks field elements (Poseidon2 output).
65
+ * `bet_atomic`: bet in atomic units (1 USDT = 1_000_000).
66
+ * `risk`: 0=low, 1=medium, 2=high.
67
+ * `selected`: player-chosen numbers (0-indexed, each in [0, 39]).
68
+ *
69
+ * Returns `BigUint64Array[4]`: `[win_amount, match_count, is_win (0|1), multiplier×10000]`.
70
+ */
71
+ export function compute_payout_keno(random: BigUint64Array, bet_atomic: bigint, risk: number, selected: Uint8Array): BigUint64Array;
72
+
52
73
  /**
53
74
  * Full limbo payout computation — pure integer arithmetic, zero floats.
54
75
  *
@@ -88,6 +109,17 @@ export function compute_payout_plinko(random: BigUint64Array, bet_atomic: bigint
88
109
  */
89
110
  export function compute_prediction_hash(game_id: number, p0: number, p1: number, p2: number): BigUint64Array;
90
111
 
112
+ /**
113
+ * Compute Keno prediction hash with extended 13-input format:
114
+ * `Poseidon2(game_id, risk, pick_count, selected[0], …, selected[9])`.
115
+ *
116
+ * Selected numbers are sorted internally for deterministic output.
117
+ * Unused slots (when pick_count < 10) are filled with 0.
118
+ *
119
+ * Returns `BigUint64Array` of length 4 (one `HashOut`).
120
+ */
121
+ export function compute_prediction_hash_keno(game_id: number, risk: number, pick_count: number, selected: Uint8Array): BigUint64Array;
122
+
91
123
  /**
92
124
  * Extract coinflip roll (0 or 1) from Poseidon2 random output.
93
125
  *
@@ -334,12 +366,15 @@ export interface InitOutput {
334
366
  readonly memory: WebAssembly.Memory;
335
367
  readonly amount_split: (a: number, b: bigint) => void;
336
368
  readonly compute_address_hash: (a: number, b: number, c: number) => void;
369
+ readonly compute_drawn_keno: (a: number, b: number, c: number) => void;
337
370
  readonly compute_multi_dice: (a: number) => bigint;
338
371
  readonly compute_payout_coinflip: (a: number, b: number, c: number, d: bigint, e: number) => void;
339
372
  readonly compute_payout_dice: (a: number, b: number, c: number, d: bigint, e: number, f: number, g: number) => void;
373
+ readonly compute_payout_keno: (a: number, b: number, c: number, d: bigint, e: number, f: number, g: number) => void;
340
374
  readonly compute_payout_limbo: (a: number, b: number, c: number, d: bigint, e: number, f: number) => void;
341
375
  readonly compute_payout_plinko: (a: number, b: number, c: number, d: bigint, e: number, f: number, g: number) => void;
342
376
  readonly compute_prediction_hash: (a: number, b: number, c: number, d: number, e: number) => void;
377
+ readonly compute_prediction_hash_keno: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
343
378
  readonly compute_roll_coinflip: (a: number, b: number) => number;
344
379
  readonly compute_roll_dice: (a: number, b: number) => number;
345
380
  readonly compute_roll_limbo: (a: number, b: number, c: number) => number;
@@ -47,6 +47,31 @@ export function compute_address_hash(address_hex) {
47
47
  }
48
48
  }
49
49
 
50
+ /**
51
+ * Extract the 10 drawn numbers from Poseidon2 random output using
52
+ * the combinatorial number system: `combo_index = random[0] % C(40,10)`.
53
+ *
54
+ * `random` must be exactly 4 elements.
55
+ * Returns `Uint8Array` of length 10 (sorted ascending, each in [0, 39]).
56
+ * @param {BigUint64Array} random
57
+ * @returns {Uint8Array}
58
+ */
59
+ export function compute_drawn_keno(random) {
60
+ try {
61
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
62
+ const ptr0 = passArray64ToWasm0(random, wasm.__wbindgen_export3);
63
+ const len0 = WASM_VECTOR_LEN;
64
+ wasm.compute_drawn_keno(retptr, ptr0, len0);
65
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
66
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
67
+ var v2 = getArrayU8FromWasm0(r0, r1).slice();
68
+ wasm.__wbindgen_export2(r0, r1 * 1, 1);
69
+ return v2;
70
+ } finally {
71
+ wasm.__wbindgen_add_to_stack_pointer(16);
72
+ }
73
+ }
74
+
50
75
  /**
51
76
  * Compute dice multiplier × 10000 from win_numbers count.
52
77
  *
@@ -121,6 +146,39 @@ export function compute_payout_dice(random, bet_atomic, game_mode, prediction_lo
121
146
  }
122
147
  }
123
148
 
149
+ /**
150
+ * Full keno payout computation — pure integer arithmetic, zero floats.
151
+ *
152
+ * `random`: 4 Goldilocks field elements (Poseidon2 output).
153
+ * `bet_atomic`: bet in atomic units (1 USDT = 1_000_000).
154
+ * `risk`: 0=low, 1=medium, 2=high.
155
+ * `selected`: player-chosen numbers (0-indexed, each in [0, 39]).
156
+ *
157
+ * Returns `BigUint64Array[4]`: `[win_amount, match_count, is_win (0|1), multiplier×10000]`.
158
+ * @param {BigUint64Array} random
159
+ * @param {bigint} bet_atomic
160
+ * @param {number} risk
161
+ * @param {Uint8Array} selected
162
+ * @returns {BigUint64Array}
163
+ */
164
+ export function compute_payout_keno(random, bet_atomic, risk, selected) {
165
+ try {
166
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
167
+ const ptr0 = passArray64ToWasm0(random, wasm.__wbindgen_export3);
168
+ const len0 = WASM_VECTOR_LEN;
169
+ const ptr1 = passArray8ToWasm0(selected, wasm.__wbindgen_export3);
170
+ const len1 = WASM_VECTOR_LEN;
171
+ wasm.compute_payout_keno(retptr, ptr0, len0, bet_atomic, risk, ptr1, len1);
172
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
173
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
174
+ var v3 = getArrayU64FromWasm0(r0, r1).slice();
175
+ wasm.__wbindgen_export2(r0, r1 * 8, 8);
176
+ return v3;
177
+ } finally {
178
+ wasm.__wbindgen_add_to_stack_pointer(16);
179
+ }
180
+ }
181
+
124
182
  /**
125
183
  * Full limbo payout computation — pure integer arithmetic, zero floats.
126
184
  *
@@ -216,6 +274,36 @@ export function compute_prediction_hash(game_id, p0, p1, p2) {
216
274
  }
217
275
  }
218
276
 
277
+ /**
278
+ * Compute Keno prediction hash with extended 13-input format:
279
+ * `Poseidon2(game_id, risk, pick_count, selected[0], …, selected[9])`.
280
+ *
281
+ * Selected numbers are sorted internally for deterministic output.
282
+ * Unused slots (when pick_count < 10) are filled with 0.
283
+ *
284
+ * Returns `BigUint64Array` of length 4 (one `HashOut`).
285
+ * @param {number} game_id
286
+ * @param {number} risk
287
+ * @param {number} pick_count
288
+ * @param {Uint8Array} selected
289
+ * @returns {BigUint64Array}
290
+ */
291
+ export function compute_prediction_hash_keno(game_id, risk, pick_count, selected) {
292
+ try {
293
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
294
+ const ptr0 = passArray8ToWasm0(selected, wasm.__wbindgen_export3);
295
+ const len0 = WASM_VECTOR_LEN;
296
+ wasm.compute_prediction_hash_keno(retptr, game_id, risk, pick_count, ptr0, len0);
297
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
298
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
299
+ var v2 = getArrayU64FromWasm0(r0, r1).slice();
300
+ wasm.__wbindgen_export2(r0, r1 * 8, 8);
301
+ return v2;
302
+ } finally {
303
+ wasm.__wbindgen_add_to_stack_pointer(16);
304
+ }
305
+ }
306
+
219
307
  /**
220
308
  * Extract coinflip roll (0 or 1) from Poseidon2 random output.
221
309
  *
Binary file
@@ -3,12 +3,15 @@
3
3
  export const memory: WebAssembly.Memory;
4
4
  export const amount_split: (a: number, b: bigint) => void;
5
5
  export const compute_address_hash: (a: number, b: number, c: number) => void;
6
+ export const compute_drawn_keno: (a: number, b: number, c: number) => void;
6
7
  export const compute_multi_dice: (a: number) => bigint;
7
8
  export const compute_payout_coinflip: (a: number, b: number, c: number, d: bigint, e: number) => void;
8
9
  export const compute_payout_dice: (a: number, b: number, c: number, d: bigint, e: number, f: number, g: number) => void;
10
+ export const compute_payout_keno: (a: number, b: number, c: number, d: bigint, e: number, f: number, g: number) => void;
9
11
  export const compute_payout_limbo: (a: number, b: number, c: number, d: bigint, e: number, f: number) => void;
10
12
  export const compute_payout_plinko: (a: number, b: number, c: number, d: bigint, e: number, f: number, g: number) => void;
11
13
  export const compute_prediction_hash: (a: number, b: number, c: number, d: number, e: number) => void;
14
+ export const compute_prediction_hash_keno: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
12
15
  export const compute_roll_coinflip: (a: number, b: number) => number;
13
16
  export const compute_roll_dice: (a: number, b: number) => number;
14
17
  export const compute_roll_limbo: (a: number, b: number, c: number) => number;
package/js/browser.mjs CHANGED
@@ -3,12 +3,15 @@ export { default as init } from '../dist/web/rolly_wasm_signer.js';
3
3
  export {
4
4
  amount_split,
5
5
  compute_address_hash,
6
+ compute_drawn_keno,
6
7
  compute_multi_dice,
7
8
  compute_payout_coinflip,
8
9
  compute_payout_dice,
10
+ compute_payout_keno,
9
11
  compute_payout_limbo,
10
12
  compute_payout_plinko,
11
13
  compute_prediction_hash,
14
+ compute_prediction_hash_keno,
12
15
  compute_roll_coinflip,
13
16
  compute_roll_dice,
14
17
  compute_roll_limbo,
package/js/index.d.ts CHANGED
@@ -1,12 +1,15 @@
1
1
  export {
2
2
  amount_split,
3
3
  compute_address_hash,
4
+ compute_drawn_keno,
4
5
  compute_multi_dice,
5
6
  compute_payout_coinflip,
6
7
  compute_payout_dice,
8
+ compute_payout_keno,
7
9
  compute_payout_limbo,
8
10
  compute_payout_plinko,
9
11
  compute_prediction_hash,
12
+ compute_prediction_hash_keno,
10
13
  compute_roll_coinflip,
11
14
  compute_roll_dice,
12
15
  compute_roll_limbo,
@@ -5,12 +5,15 @@ const wasm = require('../dist/node-inline/rolly_wasm_signer.js');
5
5
  module.exports = {
6
6
  amount_split: wasm.amount_split,
7
7
  compute_address_hash: wasm.compute_address_hash,
8
+ compute_drawn_keno: wasm.compute_drawn_keno,
8
9
  compute_multi_dice: wasm.compute_multi_dice,
9
10
  compute_payout_coinflip: wasm.compute_payout_coinflip,
10
11
  compute_payout_dice: wasm.compute_payout_dice,
12
+ compute_payout_keno: wasm.compute_payout_keno,
11
13
  compute_payout_limbo: wasm.compute_payout_limbo,
12
14
  compute_payout_plinko: wasm.compute_payout_plinko,
13
15
  compute_prediction_hash: wasm.compute_prediction_hash,
16
+ compute_prediction_hash_keno:wasm.compute_prediction_hash_keno,
14
17
  compute_roll_coinflip: wasm.compute_roll_coinflip,
15
18
  compute_roll_dice: wasm.compute_roll_dice,
16
19
  compute_roll_limbo: wasm.compute_roll_limbo,
@@ -1,12 +1,15 @@
1
1
  export {
2
2
  amount_split,
3
3
  compute_address_hash,
4
+ compute_drawn_keno,
4
5
  compute_multi_dice,
5
6
  compute_payout_coinflip,
6
7
  compute_payout_dice,
8
+ compute_payout_keno,
7
9
  compute_payout_limbo,
8
10
  compute_payout_plinko,
9
11
  compute_prediction_hash,
12
+ compute_prediction_hash_keno,
10
13
  compute_roll_coinflip,
11
14
  compute_roll_dice,
12
15
  compute_roll_limbo,
package/js/node.cjs CHANGED
@@ -5,12 +5,15 @@ const wasm = require('../dist/node/rolly_wasm_signer.js');
5
5
  module.exports = {
6
6
  amount_split: wasm.amount_split,
7
7
  compute_address_hash: wasm.compute_address_hash,
8
+ compute_drawn_keno: wasm.compute_drawn_keno,
8
9
  compute_multi_dice: wasm.compute_multi_dice,
9
10
  compute_payout_coinflip: wasm.compute_payout_coinflip,
10
11
  compute_payout_dice: wasm.compute_payout_dice,
12
+ compute_payout_keno: wasm.compute_payout_keno,
11
13
  compute_payout_limbo: wasm.compute_payout_limbo,
12
14
  compute_payout_plinko: wasm.compute_payout_plinko,
13
15
  compute_prediction_hash: wasm.compute_prediction_hash,
16
+ compute_prediction_hash_keno:wasm.compute_prediction_hash_keno,
14
17
  compute_roll_coinflip: wasm.compute_roll_coinflip,
15
18
  compute_roll_dice: wasm.compute_roll_dice,
16
19
  compute_roll_limbo: wasm.compute_roll_limbo,
package/js/node.mjs CHANGED
@@ -6,12 +6,15 @@ const wasm = require('../dist/node/rolly_wasm_signer.js');
6
6
  export const {
7
7
  amount_split,
8
8
  compute_address_hash,
9
+ compute_drawn_keno,
9
10
  compute_multi_dice,
10
11
  compute_payout_coinflip,
11
12
  compute_payout_dice,
13
+ compute_payout_keno,
12
14
  compute_payout_limbo,
13
15
  compute_payout_plinko,
14
16
  compute_prediction_hash,
17
+ compute_prediction_hash_keno,
15
18
  compute_roll_coinflip,
16
19
  compute_roll_dice,
17
20
  compute_roll_limbo,
package/js/react.mjs CHANGED
@@ -2,12 +2,15 @@ import { useState, useEffect } from 'react';
2
2
  import init, {
3
3
  amount_split,
4
4
  compute_address_hash,
5
+ compute_drawn_keno,
5
6
  compute_multi_dice,
6
7
  compute_payout_coinflip,
7
8
  compute_payout_dice,
9
+ compute_payout_keno,
8
10
  compute_payout_limbo,
9
11
  compute_payout_plinko,
10
12
  compute_prediction_hash,
13
+ compute_prediction_hash_keno,
11
14
  compute_roll_coinflip,
12
15
  compute_roll_dice,
13
16
  compute_roll_limbo,
@@ -43,12 +46,15 @@ function guard(fn) {
43
46
  const fns = {
44
47
  amount_split: guard(amount_split),
45
48
  compute_address_hash: guard(compute_address_hash),
49
+ compute_drawn_keno: guard(compute_drawn_keno),
46
50
  compute_multi_dice: guard(compute_multi_dice),
47
51
  compute_payout_coinflip: guard(compute_payout_coinflip),
48
52
  compute_payout_dice: guard(compute_payout_dice),
53
+ compute_payout_keno: guard(compute_payout_keno),
49
54
  compute_payout_limbo: guard(compute_payout_limbo),
50
55
  compute_payout_plinko: guard(compute_payout_plinko),
51
56
  compute_prediction_hash: guard(compute_prediction_hash),
57
+ compute_prediction_hash_keno:guard(compute_prediction_hash_keno),
52
58
  compute_roll_coinflip: guard(compute_roll_coinflip),
53
59
  compute_roll_dice: guard(compute_roll_dice),
54
60
  compute_roll_limbo: guard(compute_roll_limbo),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolly-dev/wasm-signer",
3
- "version": "1.11.0",
3
+ "version": "1.12.0",
4
4
  "description": "Poseidon2 hashing & bet signing for Rolly ZK-Rollup (WASM, Goldilocks field)",
5
5
  "type": "module",
6
6
  "exports": {