2902 Commits

Author SHA1 Message Date
Artem Gureev
7333c8d304 refactor(lee_core): expose ciphertext bytes and nullifier byte-array 2026-07-07 22:09:11 +04:00
Artem Gureev
301273dd44 feat(wallet): pad private transactions to a fixed maximum 2026-07-07 16:35:25 +04:00
Artem Gureev
a7511eecfc Merge branch 'batched-merkle-proofs' into dummy-note-padding
Bring one-snapshot proof fetching (getProofsAndRoot) into the dummy-note
padding branch: updates, inits, and dummy padding notes now share a single
commitment-set root from one sequencer snapshot, so a padding note's
published root no longer distinguishes it from a real input.
2026-07-07 10:15:03 +00:00
Artem Gureev
84b5d66346 fix(wallet): encapsulate dummy note epk in wallet 2026-07-06 23:59:17 +04:00
Artem Gureev
3f8cd84a88 feat(sequencer): serve proofs and root in one rpc call 2026-07-06 23:18:51 +04:00
agureev
173956579b chore: update artifacts 2026-07-03 21:06:16 +04:00
Artem Gureev
d0fda9b3dd refactor(wallet): dedup randomness helpers, fill dummy note directly 2026-07-03 20:55:12 +04:00
Artem Gureev
3d95594b4f feat(wallet): construct and submit dummy inputs
Ciphers submitted currently have no data
2026-07-03 20:17:36 +04:00
Artem Gureev
8c7f3764a5 feat(circuit): use dummy_inputs in ppc 2026-07-03 20:17:36 +04:00
Artem Gureev
35df009837 feat(lee): add for_dummy nullifier and commitment derivations 2026-07-03 20:17:36 +04:00
Artem Gureev
3ec074095d feat(lee): add dummy account type for function-privacy padding 2026-07-03 20:17:34 +04:00
Artem Gureev
640d4f6502 feat(circuit): supply a view_tag on private-account updates 2026-07-03 10:17:30 +04:00
Artem Gureev
859ffd3900 Merge origin/artem/change-wallet-balance-fetch into artem/user-view-tag
Brings the nullifier-based wallet balance fetch (NullifierIndex,
sync_updates_via_nullifiers) onto the vpk-binding base, so account
updates are found by nullifier rather than only by view tag.

Conflict resolutions (semantic):
- wallet/lib.rs: keep vpk-binding's for_private_account(npk, vpk, kind);
  add theirs' nsk into the 4-tuple consumed by index.track().
- wallet/storage/key_chain.rs: keep theirs' private_account/private_accounts
  split (the iterator is reused by the nullifier index) and restore the vpk
  in the derivation; adapt 4 pre-vpk call sites (for_private_account 2->3 arg,
  AccountId::from((npk,id)) -> (npk,vpk,id)).
- artifacts/*: took ours; regenerate with `just build-artifacts`.
2026-07-02 18:40:13 +00:00
Artem Gureev
808cea737e fix(ci): drop reference to removed install-logos-blockchain-circuits
The action was deleted in 4d7e994e but bench-regression.yml still
referenced it, failing the crypto-primitives job with "Can't find
action.yml". The ML-KEM/hashing bench needs none of the circuits that
action installed.
2026-07-02 21:05:24 +04:00
agureev
49d3823a75 chore: remove unused deps 2026-07-02 20:43:34 +04:00
agureev
8e084e22d1 Merge remote-tracking branch 'origin/dev' into artem/viewing-key-binding 2026-07-02 20:04:30 +04:00
Artem Gureev
6c1dd53aa5 refactor(wallet): thread &Message through the view-tag sync passes 2026-07-02 14:13:30 +04:00
Artem Gureev
b6e148249e refactor(wallet): inline the hit loop in sync_updates_via_nullifiers 2026-07-02 14:13:29 +04:00
Artem Gureev
d2633af413 refactor(wallet): introduce a NullifierIndex struct 2026-07-01 22:24:41 +04:00
Artem Gureev
15f6306362 refactor(wallet): place private_accounts next to private_account 2026-07-01 21:57:08 +04:00
agureev
37b0108c43 chore: update artifacts 2026-07-01 21:57:07 +04:00
Artem Gureev
2a9c8574cd refactor(wallet): compute update nullifiers inlined 2026-07-01 21:57:06 +04:00
agureev
296afdc4a3 Merge remote-tracking branch 'origin/dev' into artem/change-wallet-balance-fetch 2026-07-01 21:12:14 +04:00
agureev
cb6d21a937 refactor: docs, renaming 2026-07-01 20:58:03 +04:00
jonesmarvin8
571f35b384
refactor(integration_tests): cleaning up long functions (#533)
* refactoring integration_tests::keys

* refactor integration_tests: extract new_account/send/restored_private_account helpers

Move repeated account-creation and transfer boilerplate into four public
helpers in integration_tests/src/lib.rs (new_account, send,
restored_private_account, assert_public_account_restored), then apply them
across keys.rs, ata.rs, auth_transfer/public.rs, auth_transfer/private.rs,
token.rs, and amm.rs.  Net result: -816 lines of boilerplate.

* Additional refactors

* refactor(integration_tests): apply shared helpers to remaining test files

Use account_balance, get_account, new_account, send, and sync_private
helpers in public.rs, pinata.rs, private_pda.rs, program_deployment.rs,
and token.rs to reduce boilerplate and improve consistency.
2026-07-01 12:13:51 -04:00
Artem Gureev
ca8acb1c38 test(wallet): cover shared-account update sync 2026-07-01 19:36:17 +04:00
Artem Gureev
51cc82b50b docs: document new methods 2026-07-01 19:34:15 +04:00
Artem Gureev
f32e6bb178 refactor(key_protocol): use SharedAccountTag seed in GroupKeyHolder 2026-07-01 19:34:15 +04:00
Artem Gureev
d8e990a68f test(wallet): cover nullifier-based update sync 2026-07-01 19:34:04 +04:00
Artem Gureev
6283f5e3ee refactor(state_machine): derive Default for ValidityWindow 2026-07-01 19:16:44 +04:00
Artem Gureev
6bb2d7ffc3 refactor(wallet): move nullifier-watch sync onto UserKeyChain 2026-07-01 19:16:43 +04:00
Artem Gureev
5fda1608a3 feat(wallet): skip nullifier-handled slots in the view-tag pass 2026-07-01 19:16:42 +04:00
Artem Gureev
a24d2ca4ec fix(wallet): make nullifier watch updatable during sync 2026-07-01 19:16:42 +04:00
Artem Gureev
6025cb53ad feat(wallet): detect private-account updates via nullifier scanning 2026-07-01 19:16:41 +04:00
Artem Gureev
d09a4215d8 refactor(wallet): use shared-key derivation helper 2026-07-01 19:16:40 +04:00
Artem Gureev
eea069c663 feat(wallet): nullifier-watch for updated private accounts 2026-07-01 19:16:39 +04:00
jonesmarvin8
072ea3b066
refactor(lee::state_machine): clean up long functions and files (#535)
* refactor(lee): split large modules into directories and extract tests

Split state.rs, program.rs, circuit.rs, validated_state_diff.rs,
merkle_tree, and core/program.rs into module directories with separate
test files. State tests are further split into themed files (genesis,
authenticated_transfer, circuit, claiming, etc.). Extract
authenticate_public_transaction_signers helper in validated_state_diff
to remove duplicated authentication logic.

* chore: rebuild artifacts
2026-07-01 11:11:08 -04:00
jonesmarvin8
f786aca73e
refactor(lez): clean up long functions (#541)
* add helper functions

* CI fixes

* additional refactors

* fix: clarify doc comment on apply_mempool_transaction

* chore: apply nightly fmt

* fix: import missing ML_KEM_768_CIPHERTEXT_LEN in auth_transfer private test
2026-07-01 10:23:21 -04:00
jonesmarvin8
f8d859394b
refactor(privacy_preserving_circuit): introduce helper functions to shorten long functions (#545)
* refactor(privacy_preserving_circuit): extract functions for readability

* refactor(privacy_preserving_circuit): address PR review comments

Bundle shared handle_* arguments into PrivateOutputHandler struct in
output.rs and fix misplaced docstring on resolve_external_seed in
execution_state.rs.

* feat: update commitment mechanism for new private account (#546)

* refactor(privacy_preserving_circuit): extract functions for readability

* feat: update commitment mechanism for new private accounts

Allow init accounts to optionally use a real membership proof for
DUMMY_COMMITMENT instead of hardcoding DUMMY_COMMITMENT_HASH as the
CommitmentSetDigest. The wallet fetches the proof from the sequencer
and passes it through the circuit.

* fix: address clippy lints and fix integration test visibility

* add tests

* refactor: removed duplicated code

* refactor: simplify init nullifier mechanism

Replace Option<MembershipProof> with Option<CommitmentSetDigest> on init
variants (PrivateAuthorizedInit, PrivateUnauthorized, PrivatePdaInit).
The circuit now receives the commitment tree root directly instead of
recomputing it from a Merkle proof.

* refactor: use CommitmentSetDigest directly instead of Option for init commitment root

Address PR #546 review feedback: the circuit now accepts CommitmentSetDigest
directly on init variants (PrivateAuthorizedInit, PrivateUnauthorized,
PrivatePdaInit), with callers providing DUMMY_COMMITMENT_HASH as the default.
Also fixes duplicate resolve_external_seed from rebase and rebuilds artifacts.

* style: run cargo +nightly fmt
2026-07-01 10:14:32 -04:00
jonesmarvin8
3b3857594f
refactor(lee::key_protocol) - cleaned up duplicated logic (#532)
* Clean up key protocol

* added test for helper function

* address comment

* chore: apply nightly fmt
2026-07-01 10:11:08 -04:00
Pravdyvy
97aa85d123
Merge pull request #577 from logos-blockchain/Pravdyvy/wallet-ffi-labels
Wallet ffi labels
2026-07-01 15:32:16 +03:00
Pravdyvy
1582fc9745 fix(ci): CI and contributing update 2026-07-01 14:15:39 +03:00
Daniil Polyakov
a58fbce2ff
Merge pull request #583 from logos-blockchain/arjentix/fix-zero-deposits
fix(sequencer): don't accept zero deposits & remove unreachable
v0.2.0
2026-06-30 14:58:58 +03:00
Pravdyvy
1a94c8612f fix(artifacts): artifacts update 2026-06-30 13:52:19 +03:00
Daniil Polyakov
e428a6df71 chore(lock): update anyhow to 1.0.103 to satisfy cargo deny 2026-06-30 13:02:17 +03:00
Pravdyvy
082413eeee fix(demy): anyhow deny fix 2026-06-30 12:52:31 +03:00
Pravdyvy
53ae6dcfdd fix(wallet_ffi): asref suggestion 2026-06-30 12:46:52 +03:00
Daniil Polyakov
fc800a7151 fix(sequencer): don't accept zero deposits & remove unreachable 2026-06-30 12:38:22 +03:00
Artem Gureev
5a23b54a6f
Merge pull request #569 from logos-blockchain/marvin/chacha-aead
fix(encryption): strengthen esk generation logic
2026-06-29 17:25:41 +04:00
Marvin Jones
8bf53af58a chore: rebuild artifacts after rebase onto viewing-key-binding 2026-06-29 09:23:26 -04:00