Skip to content

Feat/babypbk dummy notes v060#10

Merged
nol4lej merged 7 commits into
mainfrom
feat/babypbk-dummy-notes-v060
Apr 23, 2026
Merged

Feat/babypbk dummy notes v060#10
nol4lej merged 7 commits into
mainfrom
feat/babypbk-dummy-notes-v060

Conversation

@nol4lej
Copy link
Copy Markdown
Member

@nol4lej nol4lej commented Apr 22, 2026

No description provided.

nol4lej added 7 commits April 21, 2026 15:21
transfer.circom (33,687 constraints):
- Replace EdDSAPoseidonVerifier with BabyPbk(spending_keys[i])
  Prover now proves discrete log: BabyPbk(sk).Ax == ownerPk
  Removed: input_owner_Ax/Ay, input_sig_R8x/y/S (10 private inputs)
- Add dummy note support (Zcash Sapling technique)
  is_dummy[i] = IsZero(input_values[i]), deterministic in R1CS
  Dummy slots bypass Merkle membership and nullifier derivation
  Constraint 9: nullifiers[i] * is_dummy[i].out === 0
  Constraint 10: distinct-nullifier check conditioned on both_real

unshield.circom (16,033 constraints):
- Replace signal input note_owner with BabyPbk(spending_key)
  key_derivation.Ax used in NoteCommitment instead of note_owner
  Removed: 1 private input (note_owner was unconstrained vs spending_key)

test/transfer.test.ts:
- Migrate from buildEddsa to buildBabyjub; add computeOwnerAx(sk) helper
- Drop sign() helper and EdDSA fields from buildInput
- Add buildDummyInput() helper and 7 new tests (section 10: dummy note constraints)

test/unshield.test.ts:
- Migrate from buildEddsa to buildBabyjub; drop note_owner from buildInput
- Update tampered-owner test to tampered spending_key scenario

docs: update transfer.md, unshield.md, ARCHITECTURE.md, circuits/README.md

BREAKING CHANGE: transfer drops 10 EdDSA private inputs; unshield drops note_owner.
removed:
- scripts/generators/ (generate_input.ts, generate_disclosure_input.ts,
  generate_unshield_and_private_link_input.js, generate_proof.ts,
  generate_disclosure_proof.ts, proof_wrapper.ts, eddsa_signer.ts)
- scripts/e2e/ (e2e-disclosure.ts, e2e-transfer.ts)
- scripts/utils/check-artifacts.ts, scripts/utils/health-check.sh
- scripts/build/generate-metadata.sh
- scripts/README.md
- Makefile (workflows use pnpm scripts directly)
- .husky/pre-commit, .husky/commit-msg
- .github/PRE_COMMIT.md
- benches/ (README.md, disclosure.bench.ts, run-all.bench.ts,
  transfer.bench.ts, types.ts, utils.ts)
- docs/guides/pre-push-check-rapido.md

changed:
- package.json: bump 0.5.1 → 0.6.0; remove husky/lint-staged devDeps
  and gen-input/prove/e2e/check-artifacts/health scripts; re-add
  lint:circom and manifest scripts
- scripts/build-all.sh: npm → pnpm
- .github/workflows/release.yml: remove Makefile from path triggers
- manifest.json: regenerated with updated SHA-256 checksums
- pnpm-lock.yaml: updated after dependency changes
- CHANGELOG.md: add [0.6.0] entry
- README.md, docs/guides/quick-start.md,
  docs/guides/arkworks-integration.md: update references
@nol4lej nol4lej merged commit b150df5 into main Apr 23, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant