@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 +56 -0
- package/package.json +1 -1
- package/src/devnet-rpc.js +1 -1
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
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
|
|
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}` };
|