372 Commits

Author SHA1 Message Date
jonesmarvin8
914f14e870
refactor(keycard_wallet): replace keycard-py with keycard-rs (#595)
* refactor(keycard_wallet): replace keycard-py (pyo3) with native keycard-rs

Rewrites the Keycard integration to talk to the LEE-flavored applet
directly from Rust via keycard-rs (pinned git dependency), dropping the
pyo3 shim, python_path.rs, and the vendored keycard-py Python library
entirely. Verified end-to-end against real hardware: pairing, PIN
verification, mnemonic loading, BIP340 Schnorr signing, and transfers
between keycard and public/private accounts.

Also cleans up the pyo3 usage that had leaked into wallet's signing
path (signing.rs, account_manager.rs) beyond the keycard CLI itself,
and trims wallet_with_keycard.sh's Python setup down to just pyscard,
which is only needed by the force_unpower.py test helper now.

* Updated to v2 secure communication

* ci: install libpcsclite-dev for pcsc crate builds

* docs(keycard): clarify personalization is mandatory and document default CA

Reinstalling the applet via `./gradlew install` wipes any existing
personalization regardless of firmware source, which wasn't previously
called out and is a common source of "card not available" confusion.
Also state plainly that personalization is required before any command
works, and document keycard-rs's actual baked-in default CA public key
instead of only describing the override mechanism.

Export KEYCARD_CA_PUBLIC_KEY in all keycard test scripts so they work
against the dev/test-CA personalization flow they rely on.

* fix(keycard): address PR #595 review comments

- Propagate the load_mnemonic error instead of swallowing it behind
  is_ok(), matching every other command handler in this file.
- Add deny.toml allowing the keycard-rs git source, fixing the
  source-not-allowed failure in `cargo deny check`. Licenses and
  advisories checks still have pre-existing, separate failures not
  addressed here.
- Drop the pinned rev for the keycard-rs git dependency so it tracks
  the upstream default branch instead.

* chore(deny): trim deny.toml to essentials and allow all in-use licenses

Replace the full cargo-deny init template with just the two sections
that matter: the keycard-rs git-source allowance, and an explicit
license allow-list covering every license currently in the dependency
tree. cargo deny check now passes on sources, bans, and licenses;
advisories still fails on a pre-existing, unrelated RUSTSEC advisory.

* fix(deny): remove second config and add source to the original one

* chore: pin keycard-rs dependency and fix factory-reset debug-gate doc

* chore: regenerate test fixture and lockfile after rebase onto dev

---------

Co-authored-by: Daniil Polyakov <arjentix@gmail.com>
2026-07-23 15:50:30 -04:00
erhant
caf38ebc0a chore: drop unused sequencer_service_protocol dep from integration_tests 2026-07-23 11:43:57 +03:00
erhant
8d09ffd733 feat(sequencer): two-tier chain state and multi-sequencer support
Decentralized-sequencing foundation: a shared chain_state crate (two-tier
head/final ChainState, apply_block, AcceptOutcome, StallReason, and the
absorbed channel-consistency machinery), turn-gated block production, the
publisher follow path for adopted/orphaned/finalized peer blocks, and
persistence that keeps disk order equal to apply order under the chain lock.

Rebased onto dev after #600/#606: chain_consistency is absorbed into
chain_state, the sequencer bootstrap's verify_and_reconstruct is re-wired
onto the two-tier ChainState (reconstruction applies channel history
through the final tier and persists via the follow-path primitives), and
test fixtures adopt the SequencerSetup builder extended with
with_bedrock_signing_key.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 11:43:57 +03:00
Daniil Polyakov
2d5489c04e feat(sequencer): bootstrap state from Bedrock 2026-07-21 22:46:25 +03:00
Pravdyvy
a1b4585c99 fix(deps): machete, artifacts and deny fix 2026-07-14 13:52:06 +03:00
moudyellaz
eff31df9ce Merge origin/dev 2026-07-11 01:12:00 +02:00
erhant
2e49cdfd9c fix(indexer): harden stall durability and breakpoint guards w.r.t. Copilot review 2026-07-10 18:35:01 +03:00
erhant
587836e47c fix(indexer): stop ingest loop cooperatively on shutdown 2026-07-10 18:35:01 +03:00
erhant
f94a63d8cf fix(indexer)!: address several reviews, use better return types with conversions, some docfixes
BREAKING CHANGE: dropping the serde rename attrs changes the FFI
`query_status` JSON: `state` values are now variant-cased
(`caught_up` -> `CaughtUp`) and fields snake_case
(`indexedBlockId` -> `indexed_block_id`, `lastError` -> `last_error`).
Consumers (lez-indexer-module, lez-explorer-ui) must update their parsing.
2026-07-10 18:35:00 +03:00
erhant
60265ed438 feat(indexer): add BlockIngestError enum, fix linting 2026-07-10 18:35:00 +03:00
Daniil Polyakov
89d2486970 feat(test_fixtures): apply zstd compression 2026-07-09 17:15:29 +03:00
Daniil Polyakov
d0aaddbec1 feat(test_fixtures): use prebuilt sequencer dp to speed up integration tests 2026-07-09 17:15:29 +03:00
Daniil Polyakov
c062fab781 chore(lock): bump crossbeam-epoch to satisfy cargo deny 2026-07-09 16:19:24 +03:00
moudyellaz
9f7db3fa38 Merge origin/dev 2026-07-04 00:48:40 +02:00
moudyellaz
71c9351727 feat(cross-zone): add interactive two-zone chat demo app 2026-07-04 00:47:20 +02:00
moudyellaz
4f75e29a3c Merge origin/main
Integrates origin/main (per-program-crate refactor) and re-homes the cross-zone messaging feature onto it.

BREAKING CHANGE: Genesis state root changes. This registers six builtin programs
(cross_zone_outbox, cross_zone_inbox, ping_sender, ping_receiver, bridge_lock,
wrapped_token) and seeds their genesis accounts (the wrapped_token authorized
minter config, the per-zone inbox config, and optional bridge-lock holdings).
Building the new cores alongside the existing builtins also enables serde/alloc
for the shared programs build, regenerating every builtin program image id. All
nodes must upgrade together.
2026-07-04 00:47:20 +02: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
Daniil Polyakov
e428a6df71 chore(lock): update anyhow to 1.0.103 to satisfy cargo deny 2026-06-30 13:02:17 +03:00
Daniil Polyakov
d11b706756 feat(sequencer): add getChannelId rpc endpoint 2026-06-25 16:47:04 +03:00
agureev
e4d55d8e37 chore: bump sponge fork, remove unstable flag 2026-06-25 15:00:57 +04:00
moudyellaz
36ed949be0 chore: some cleanup 2026-06-25 09:38:30 +02:00
Daniil Polyakov
9977cc5374 fix(ci, programs, privacy_preserving_circuit): properly check programs ci 2026-06-24 20:20:40 +03:00
Daniil Polyakov
96b28827f6 fix(tests): fix tests 2026-06-24 20:20:40 +03:00
Daniil Polyakov
d3e507f25d refactor!(artifacts): keep lee and lez artifacts separated 2026-06-24 18:10:41 +03:00
Pravdyvy
d8c50ceb59 Merge branch 'main' into Pravdyvy/ffi-mnemonic 2026-06-24 13:02:12 +03:00
Sergio Chouhy
47a94ac7e4 feat(wallet-ffi): add vault claim ffi 2026-06-24 10:35:31 +02:00
moudyellaz
5d77359fd8 feat(cross-zone)!: add wrapped_token and bridge_lock programs
BREAKING CHANGE: registers the wrapped_token and bridge_lock builtin programs and seeds the wrapped_token config account at genesis, changing the genesis state.
2026-06-24 10:12:40 +02:00
agureev
0a9874afe5 feat: add a patched keccak dependency via a fork 2026-06-23 20:11:49 +04:00
erhant
735235efa1 fix(indexer)!: address @Arjentix comments on IndexerStatus 2026-06-23 15:57:33 +03:00
erhant
c57bf16d15 feat: added status reporter for indexer (for UI) 2026-06-23 15:57:33 +03:00
erhant
956dc6278a fix!(indexer_ffi): fix 3 existing issues, refactor the runtime handling, rm unused cbindgen.toml 2026-06-23 15:57:33 +03:00
moudyellaz
0ddb7a9291 feat(cross-zone): add Option B indexer verifier and seed inbox config consistently 2026-06-23 14:21:16 +02:00
moudyellaz
b83a3c7556 test(cross-zone): add two-zone ping round-trip integration test 2026-06-23 10:42:30 +02:00
moudyellaz
77cfff5256 feat(cross-zone): add inbox watcher and seed inbox config at genesis 2026-06-23 10:17:46 +02:00
Pravdyvy
c3a78d24ef fix(deny): deny fix 2026-06-23 11:17:11 +03:00
Pravdyvy
5c28acc961 fix(wallet_ffi): suggestion fix 2026-06-23 11:10:53 +03:00
moudyellaz
42078d0305 test(cross-zone): add ping_receiver and a single-zone inbox dispatch test 2026-06-19 17:50:50 +02:00
moudyellaz
30bd869ac2 feat(cross-zone): add inbox and outbox guest programs with genesis registration 2026-06-19 00:48:10 +02:00
Sergio Chouhy
32c6b9e5fc feat: add withdraw ffi 2026-06-18 16:35:44 -03:00
Pravdyvy
97230e823b fix(lock): lock update 2026-06-18 19:10:28 +03:00
moudyellaz
43ce9b5932 feat(cross-zone): add inbox and outbox core crates (envelope, replay key, dispatch builder) 2026-06-18 13:54:01 +02:00
Pravdyvy
0fae6aada2 Merge branch 'main' into Pravdyvy/programs-elfs-deployments 2026-06-17 10:36:19 +03:00
Daniil Polyakov
77f1fb3f21 feat(wallet): add bridge withdraw command 2026-06-16 22:10:11 +03:00
Daniil Polyakov
d6e68a52ca feat(state): forbid private bridge withdrawals 2026-06-16 22:10:11 +03:00
Daniil Polyakov
e9e30ff019 feat(sequencer): implement bridge withdraw flow 2026-06-16 22:10:11 +03:00
Pravdyvy
819604d223 Merge branch 'main' into Pravdyvy/programs-elfs-deployments 2026-06-16 09:13:06 +03:00
Pravdyvy
a8c81f5445
Merge pull request #491 from logos-blockchain/Pravdyvy/wallet-ffi-extension
feat(wallet_ffi): wallet ffi generic transactions
2026-06-16 09:11:38 +03:00
Daniil Polyakov
1c7711c10e feat(wallet): add vault cli commands 2026-06-15 21:53:15 +03:00
Pravdyvy
93feaba5de Merge branch 'main' into Pravdyvy/programs-elfs-deployments 2026-06-15 14:15:33 +03:00