@xmbl/simulator 0.1.12 → 0.1.14

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,61 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.14
4
+
5
+ ### Patch Changes
6
+
7
+ - **Every prebuilt binary was broken; all four causes are fixed.** `gh release list` returned
8
+ nothing for any version of this repo. The release workflow gated its artifacts job on the
9
+ crates.io job, which had no token from the first tag onward, so packaging was SKIPPED on every
10
+ release ever cut — and underneath that, all three packaging jobs would have failed anyway:
11
+
12
+ - **desktop** — `packages/desktop-app` is `"type": "module"`, so the CommonJS
13
+ `electron-builder.config.js` threw on load and electron-builder fell back to a `build` key that
14
+ does not exist: appId, targets, output directory and file globs were all dead. Renamed `.cjs`
15
+ and passed explicitly. `electron` was also a runtime dependency (electron-builder refuses to
16
+ package at all) and npm workspaces hoist it out of the project, so the version could not be
17
+ computed. Both fixed, with the author/maintainer fields `deb` and `AppImage` require, both
18
+ target architectures for mac/win/linux, and the `deb` target the workflow always globbed for.
19
+ - **web** — `apps/app-builder/vite.config.js` aliased `buffer` into the app's own
20
+ `node_modules`, which npm workspaces hoist to the root, so `vite build` died with ENOENT. Two
21
+ Vue templates also carried `:id="@xmbl/identity"`, which is not a JavaScript expression.
22
+ - **extension** — `@xmbl/lng`'s exports map had no `browser` condition, so bundlers resolved the
23
+ node entry, which reads its own `package.json` through `node:fs` at module scope. **`@xmbl/lng`
24
+ now declares `browser` -> `dist/lng.browser.js` in `exports`**, which is the one change in this
25
+ release that affects consumers: a bundler targeting the browser now gets the prebuilt bundle
26
+ (same export surface, including `VERSION`) instead of failing on `node:fs`.
27
+
28
+ ## 0.1.13
29
+
30
+ ### Patch Changes
31
+
32
+ - **SECURITY — the AIR zero-knowledge path leaked the entire secret trace.** Reported against
33
+ 0.1.12 and reproduced: the batching challenges `alpha` and `beta` are public and the composition
34
+ `C(x) = alpha*u + beta*v` is an `F_p^4` element over two base-field unknowns, so every FRI opening
35
+ was four equations in two unknowns. Solving two limbs for `v` gives `col'(x)` directly, and the
36
+ `2*nq` layer-0 openings interpolate the blinded trace column — row 0 IS the witness. It returned
37
+ the secret exactly, in about a second. The `(x^T - 1)` blind could not help: it is sized for the
38
+ `2*nc` direct openings and vanishes on the trace domain by construction.
39
+
40
+ The composition is now MASKED before FRI sees it: a uniformly random extension-valued polynomial
41
+ `M` of degree `< K` is committed first, `gamma` is drawn from a transcript that includes its root,
42
+ and FRI runs on `C + gamma*M`. Each opening is four equations in six unknowns. The verifier opens
43
+ `M` against its own root at the consistency points. A mask that is not of degree `< K` would pin
44
+ `gamma` to one value out of ~2^124, so masking cannot hide a false statement.
45
+
46
+ `setup` now doubles `K` until it exceeds everything the transcript reveals
47
+ (`nq*(log2 K + 1) + nc`, plus margin): `K = 2048`, `N = 16384`. `nc` is raised 16 -> 40, because
48
+ each consistency point is `-log2(K/N) = 3` bits and `nc = 16` was a ~48-bit check behind a
49
+ ~100-bit FRI. Coset evaluation is now an NTT, so proving is faster than 0.1.12 despite the larger
50
+ domain. **PROOFS FROM 0.1.12 DO NOT VERIFY ON 0.1.13** — the proof carries new commitments
51
+ (`rootM`, `rootD`) and the derived parameters moved.
52
+
53
+ `xzk` (the cube-curve statement) was attacked the same way and survives: the committed curve is
54
+ fully recoverable from its FRI openings, but `Pt = P + Z_R*B` with `B` uniform of degree 18 over a
55
+ witness quotient of degree 1, so the same proof is carried by a 2-parameter family of witnesses.
56
+
57
+ The attack is now a permanent check in `air.test.mjs` and `xzk.test.mjs`.
58
+
3
59
  ## 0.1.12
4
60
 
5
61
  ## 0.1.11
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xmbl/simulator",
3
- "version": "0.1.12",
3
+ "version": "0.1.14",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "description": "XMBL Simulator",
package/src/devnet-rpc.js CHANGED
@@ -69,7 +69,7 @@ export class DevnetRpc {
69
69
  }
70
70
  default: {
71
71
  // Node-side capability surface (zk / HE / signature / seal): a real primitive run to a
72
- // verdict in this process. Unknown types still fall through to an genuine error.
72
+ // verdict in this process. Unknown types still fall through to a genuine error.
73
73
  const cap = CAPABILITIES[message && message.type];
74
74
  if (cap) return cap(message || {});
75
75
  return { error: `Unknown message type: ${message && message.type}` };