Require dual Pedersen openings on PlayerCommit (sats → excessFee,
atoms → 0) and a Schnorr signature of sha256(component) on covert
reveal. The coordinator issues per-session BlindSigner nonces, the
client unblinds BlindSigResponses, and dummy points / dummy sigs are
rejected. Chronik, tx signing, and blame proofs stay out of scope.
Details
- Reviewers
Fabien - Group Reviewers
Restricted Project - Commits
- rABC9d49e845cc42: [alp-fusion] Verify Pedersen openings and blind-auth covert sigs
- cd apps/alp-fusion && pnpm test
- Confirm the new commit tests unblind a covert signature and reject dummy Pedersen points / dummy sigs / burned atom totals
- Confirm the two-player wire round still returns an unsigned ALP SEND
Diff Detail
- Repository
- rABC Bitcoin ABC
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Tail of the build log:
Lockfile is up to date, resolution step is skipped
Done in 850ms using pnpm v10.24.0
> chronik-client@4.3.1 build /work/modules/chronik-client
> tsc
Preparing pnpm@10.24.0 for immediate activation...
/work /work/abc-ci-builds/alp-fusion-tests
Scope: 4 of 26 workspace projects
Lockfile is up to date, resolution step is skipped
Progress: resolved 1, reused 0, downloaded 0, added 0
. | +6 +
Progress: resolved 6, reused 1, downloaded 5, added 6, done
Done in 971ms using pnpm v10.24.0
> ecash-lib@4.14.1 build /work/modules/ecash-lib
> tsc && tsc -p ./tsconfig.build.json && rm -rf ./dist/ffi && cp -r ./src/ffi ./dist
/work /work/abc-ci-builds/alp-fusion-tests
Scope: all 26 workspace projects
Lockfile is up to date, resolution step is skipped
Progress: resolved 1, reused 0, downloaded 0, added 0
Packages: +1577
Progress: resolved 1577, reused 99, downloaded 378, added 377
Progress: resolved 1577, reused 99, downloaded 885, added 966
Progress: resolved 1577, reused 99, downloaded 1413, added 1415
Progress: resolved 1577, reused 99, downloaded 1461, added 1577, done
╭ Warning ─────────────────────────────────────────────────────────────────────╮
│ │
│ Ignored build scripts: @firebase/util, core-js, cypress, esbuild, │
│ styled-components. │
│ Run "pnpm approve-builds" to pick which dependencies should be allowed │
│ to run scripts. │
│ │
╰──────────────────────────────────────────────────────────────────────────────╯
Done in 6.1s using pnpm v10.24.0
Scope: 5 of 26 workspace projects
Lockfile is up to date, resolution step is skipped
Done in 1s using pnpm v10.24.0
/work/abc-ci-builds/alp-fusion-tests
/work/apps/alp-fusion /work/abc-ci-builds/alp-fusion-tests
CI configured to test build. Building...
> alp-fusion@0.1.0 build /work/apps/alp-fusion
> tsc
src/coordinator/wire.ts(744,9): error TS2322: Type 'Uint8Array<ArrayBufferLike>' is not assignable to type 'Uint8Array<ArrayBuffer>'.
Type 'ArrayBufferLike' is not assignable to type 'ArrayBuffer'.
Type 'SharedArrayBuffer' is not assignable to type 'ArrayBuffer'.
Types of property '[Symbol.toStringTag]' are incompatible.
Type '"SharedArrayBuffer"' is not assignable to type '"ArrayBuffer"'.
src/coordinator/wire.ts(745,9): error TS2322: Type 'Uint8Array<ArrayBufferLike>' is not assignable to type 'Uint8Array<ArrayBuffer>'.
Type 'ArrayBufferLike' is not assignable to type 'ArrayBuffer'.
Type 'SharedArrayBuffer' is not assignable to type 'ArrayBuffer'.
Types of property '[Symbol.toStringTag]' are incompatible.
Type '"SharedArrayBuffer"' is not assignable to type '"ArrayBuffer"'.
ELIFECYCLE Command failed with exit code 2.
Build alp-fusion-tests failed with exit code 2Build Bitcoin ABC Diffs / Diff Testing (ai-review) passed.
CodeRabbit Review
Diff : committed changes only
Compare : HEAD → master
Directory : work
────────────────────────────────────────
(\(\
(• .•) Oompa Loompa doompadee doo, I've got a code review for you.
────────────────────────────────────────
Review complete
No findings ✔
8 files reviewed:
- apps/alp-fusion/DEPLOY.md
- apps/alp-fusion/README.md
- apps/alp-fusion/src/client/wire.ts
- apps/alp-fusion/src/coordinator/wire.ts
- apps/alp-fusion/src/protocol/commit.ts
- apps/alp-fusion/src/protocol/components.ts
- apps/alp-fusion/test/coordinator/wire.test.ts
- apps/alp-fusion/test/protocol/commit.test.ts
────────────────────────────────────────
Fix tsc Uint8Array ArrayBuffer vs ArrayBufferLike on round keys so alp-fusion-tests build passes.
Build Bitcoin ABC Diffs / Diff Testing (ai-review) passed.
CodeRabbit Review
Diff : committed changes only
Compare : HEAD → master
Directory : work
────────────────────────────────────────
(\(\
(• .•) Debugging like it's 2099.
────────────────────────────────────────────────────────────────────────
minor [Stability & Availability]
→ ]8;;vscode://file//work/apps/alp-fusion/src/client/wire.ts:166apps/alp-fusion/src/client/wire.ts:166-169]8;;
Check the scalar count before you finalize the blind signatures.
This code validates only that scalars is an array. A coordinator that
returns fewer scalars than built.requests reaches finalizeBlindSigs
with mismatched cardinality. The round then fails with a library or
Buffer.from(undefined) error at Line 196 instead of a clear protocol
error.
Compare the lengths first.
🛡️ Proposed fix
const scalarRaw = blinds.payload.scalars;
if (!Array.isArray(scalarRaw)) {
throw new Error('BlindSigResponses.scalars: expected array');
}
+ if (scalarRaw.length !== built.requests.length) {
+ throw new Error(
+ `BlindSigResponses.scalars: expected ${built.requests.length}, got ${scalarRaw.length}`,
+ );
+ }────────────────────────────────────────
Review complete
1 finding ✔
Minor 1
8 files reviewed:
- apps/alp-fusion/DEPLOY.md
- apps/alp-fusion/README.md
- apps/alp-fusion/src/client/wire.ts
- apps/alp-fusion/src/coordinator/wire.ts
- apps/alp-fusion/src/protocol/commit.ts
- apps/alp-fusion/src/protocol/components.ts
- apps/alp-fusion/test/coordinator/wire.test.ts
- apps/alp-fusion/test/protocol/commit.test.ts
────────────────────────────────────────
Print all AI prompts: coderabbit review --show-prompts
Build Bitcoin ABC Diffs / Diff Testing (ai-review) passed.
CodeRabbit Review
Diff : committed changes only
Compare : HEAD → master
Directory : work
────────────────────────────────────────
(\(\
(• .•) This is what it sounds like when bugs cry.
────────────────────────────────────────
Review complete
No findings ✔
8 files reviewed:
- apps/alp-fusion/DEPLOY.md
- apps/alp-fusion/README.md
- apps/alp-fusion/src/client/wire.ts
- apps/alp-fusion/src/coordinator/wire.ts
- apps/alp-fusion/src/protocol/commit.ts
- apps/alp-fusion/src/protocol/components.ts
- apps/alp-fusion/test/coordinator/wire.test.ts
- apps/alp-fusion/test/protocol/commit.test.ts
────────────────────────────────────────