45 Commits

Author SHA1 Message Date
Roman
dec23d373c
chore: sync with LEZ main (bundled public/private actions)
Upstream LEZ merged the parallel Message vectors into action structs
(f16c3bd1e, 75326d031, e13b4cb23):

* `Message` now carries `public_actions: Vec<PublicActionWithID>`
  (account id paired with its post-state) and `private_actions:
  Vec<PrivateAction>` (nullifier + root + commitment + encrypted post
  state bundled per action) instead of six parallel vectors.
* `PrivacyPreservingCircuitOutput` mirrors the same bundling
  (`public_actions: Vec<PublicAction>` with pre/post halves).
* `Message::try_from_circuit_output(ids, nonces, output)` became the
  infallible `Message::from_circuit_output(nonces, output)`.
* `EncryptionScheme::encrypt` keys the note on the nullifier and
  dropped the output-index argument.
* `V03State::default()` seeds the commitment set with the protocol's
  dummy commitment, so `root_history` contains the live root from
  genesis — a nullifier bound to the live root is valid on the first
  transaction (previously the history started empty).

Harness changes:

* `synthesize_passing_proof` reconstructs the journal from bundled
  `PublicAction`s, mirroring the validator byte-for-byte.
* `arb_privacy_preserving_tx` generates 1..=3 deduplicated
  `PrivateAction`s (the length-mismatch and empty-commitments shapes
  are unrepresentable under the paired layout and were dropped) and
  pairs every public account id with its post-state.
* `arb_conflicting_nullifier_pair` builds the shared-nullifier pair as
  two private actions with distinct commitments.
* Encoding/witness targets build messages via the action structs; the
  circuit-output-mapping invariant asserts the pre-id/post pairing.
* Generator-contract and proof-synthesis tests updated accordingly
  (48/48 pass, with and without RISC0_DEV_MODE).

Bump the pinned LEZ SHA to d6e4ae69 and refresh both lockfiles.

Fixes the scheduled lez-compat failure (run 30977103292).
2026-08-05 10:35:29 +02:00
Roman
2c943bf503
test: model-based stateful lockstep 2026-07-03 09:17:33 +02:00
Roman
0f4cf52491
test: transaction ordering independence 2026-07-02 13:55:36 +02:00
Roman
e4c4d1eca7
fix: sync with updated LEZ API 2026-06-25 13:15:33 +08:00
Roman
119c867b89
fix: add negative test 2026-06-18 14:21:54 +08:00
Roman
ee13844b64
fix: update cargo files 2026-06-18 09:56:20 +08:00
Roman
adcfe3a301
test: privacy preserving features 2026-06-16 17:37:36 +08:00
Roman
1e166125dd
fix: sync with latest LEZ 2026-06-15 10:20:20 +08:00
Roman
3c260eeef0
fix: remove input-independent targets
- create unit tests in lez repo instead
2026-06-11 15:43:31 +08:00
Roman
9cb0d43c40
chore: add new fuzz targets to cover 40 missed mutants 2026-06-10 16:29:05 +08:00
Roman
cf24be46d9
test: add genesis invariants target to catch 8 mutants 2026-06-09 14:09:11 +08:00
Roman
2974cd5e30
test: add merkle tree target to catch 33 mutants 2026-06-09 11:51:39 +08:00
Roman
ccd08aed6f
chore: synchronize with latest lee introduction 2026-06-05 11:12:26 +08:00
Roman
839359546d
fix: unlock new cases with arbitrary block_id and timestamp 2026-05-28 12:11:49 +08:00
Roman
3c8844068f
fix: replace saturating_add to prevent overflows 2026-05-28 11:52:10 +08:00
Roman
88e780b865
fix: improve API around tx invariants 2026-05-28 11:40:38 +08:00
Roman
db477a42d0
feat: apply changes from PR1 except corpus 2026-05-27 19:41:34 +08:00
Roman
176f2b410a
chore: remove old corpus 2026-05-27 19:14:07 +08:00
Roman
35c07de259
fix: update corpus 2026-05-19 15:23:27 +08:00
Roman
471077b7df
test: add sequencer vs replayer target 2026-05-19 11:31:48 +08:00
Roman
62656c19e2
test: corpus update 2026-05-18 13:44:21 +08:00
Roman
b4997ba1af
fix: add assert_nonce_increment_correctness helper 2026-05-18 13:22:54 +08:00
Roman
720cce4efc
fix: move reusable invariants into shared module 2026-05-18 11:02:05 +08:00
Roman
5e0cb7ca42
fix: update corpus 2026-05-15 14:57:05 +08:00
Roman
3121162fd8
test: fuzz multi block state sequence 2026-05-15 14:20:55 +08:00
Roman
ee53518606
test: fuzz apply state diff split path 2026-05-15 14:12:02 +08:00
Roman
d4b9da66cc
test: fuzz program deployment lifecycle 2026-05-15 13:17:43 +08:00
Roman
bd3e10de62
test: fuzz witness set verification 2026-05-15 12:40:30 +08:00
Roman
fca7afc7dc
test: fuzz state serialization 2026-05-15 10:39:18 +08:00
Roman
64e8f335a3
fix: extend coverage for fuzz_block_verification 2026-05-14 10:38:59 +08:00
Roman
0aefa289d2
fix: improved replay rejection detection 2026-05-13 13:52:19 +08:00
Roman
1641775dd8
fix: improve detection of malformed input 2026-05-13 10:43:40 +08:00
Roman
3370a39417
fix: add canonical encoding check 2026-05-13 10:34:57 +08:00
Roman
24e912636a
fix: cross key signature validation 2026-05-13 10:25:55 +08:00
Roman
1feb0f27a9
fix: add reverse completeness check 2026-05-12 13:49:03 +08:00
Roman
18265815e4
fix: move to fuzz-driven state generation 2026-05-12 13:18:18 +08:00
Roman
50dab4cfb8
fix: add state consistency checks 2026-05-12 13:00:38 +08:00
Roman
d707c34b61
chore: update corpus 2026-05-07 15:04:53 +08:00
Roman
e512f7a4df
fix: sync with the latest lez changes 2026-05-07 14:27:44 +08:00
Roman
f411509eb2
fix: targets and props 2026-04-24 12:04:20 +08:00
Roman
7b0e3e83cb
fix: update corpus
- formatting
2026-04-15 15:58:12 +08:00
Roman
8bd0a1a612
fix: add new fuzz targets
- template for adding targets
2026-04-15 15:47:01 +08:00
Roman
570edbba90
fix: update corpus 2026-04-15 13:48:38 +08:00
Roman
1befa25333
fix: sync new_with_genesis_accounts params 2026-04-15 13:47:36 +08:00
Roman
c62bacece0
Initial commit 2026-04-13 16:03:20 +08:00