Commit Graph
419 Commits
Author SHA1 Message Date
Marvin Jones 440e4a6d73 chore(lee): rebuild artifacts after rebase, drop unused base58 dep
Rebases marvin/program-as-account-2 onto the updated
marvin/program-as-account (SeenShard cap fix), regenerating program
and circuit artifacts plus the sequencer test fixture to match.
Also removes lez/wallet's now-unused base58 dependency, dead since
AccountId gained its own Display/FromStr base58 encoding.
2026-08-13 17:10:05 -04:00
moudyellaz b9173e675f Merge remote-tracking branch 'origin/dev' into moudy/cross-zone-outbox-log
# Conflicts:
#	test_fixtures/fixtures/prebuilt_sequencer_db.dump
#	tools/cross_zone_chat/src/main.rs
2026-08-13 09:35:37 +02:00
Pravdyvy f0861d2497 Merge branch 'dev' into Pravdyvy/multi-sequencer-integration-tests 2026-08-13 04:10:13 +03:00
moudyellaz ae3fd849e3 Merge remote-tracking branch 'origin/dev' into moudy/cross-zone-outbox-log
# Conflicts:
#	artifacts/lez/programs/amm.bin
#	artifacts/lez/programs/associated_token_account.bin
#	artifacts/lez/programs/authenticated_transfer.bin
#	artifacts/lez/programs/bridge.bin
#	artifacts/lez/programs/bridge_lock.bin
#	artifacts/lez/programs/clock.bin
#	artifacts/lez/programs/cross_zone_inbox.bin
#	artifacts/lez/programs/cross_zone_outbox.bin
#	artifacts/lez/programs/faucet.bin
#	artifacts/lez/programs/pinata.bin
#	artifacts/lez/programs/pinata_token.bin
#	artifacts/lez/programs/ping_receiver.bin
#	artifacts/lez/programs/ping_sender.bin
#	artifacts/lez/programs/token.bin
#	artifacts/lez/programs/vault.bin
#	artifacts/lez/programs/wrapped_token.bin
#	test_fixtures/fixtures/prebuilt_sequencer_db.dump
2026-08-12 22:37:45 +02:00
Daniil Polyakov 3e448bb5e8 refactor(rpc_server): use strongly-typed error 2026-08-12 22:50:50 +03:00
Daniil Polyakov f91d0da8e1 refactor(sequencer): add test for mempool and bring back standalone feature 2026-08-12 22:50:50 +03:00
Daniil Polyakov ea1b454672 refactor(executor): add strongly typed error 2026-08-12 22:50:50 +03:00
Daniil Polyakov 7541d7658b feat(sequencer): use actors in SequencerHandle 2026-08-12 22:34:14 +03:00
Daniil Polyakov 4ae9b30736 feat(sequencer): add RPC Server Actor 2026-08-12 22:34:14 +03:00
Daniil Polyakov 436908e08f feat(sequencer): add Executor actor 2026-08-12 22:34:14 +03:00
Pravdyvy e146f9ff5a Merge branch 'dev' into Pravdyvy/multi-sequencer-integration-tests 2026-08-12 18:43:09 +03:00
moudyellaz 37bbe34579 chore(integration_tests): drop the unused logos-blockchain-core dependency 2026-08-12 15:59:41 +02:00
moudyellaz f8da8f40b3 Merge remote-tracking branch 'origin/dev' into moudy/cross-zone-per-block-seen-shard
# Conflicts:
#	artifacts/lez/programs/bridge_lock.bin
#	artifacts/lez/programs/cross_zone_inbox.bin
#	artifacts/lez/programs/wrapped_token.bin
#	test_fixtures/fixtures/prebuilt_sequencer_db.dump
2026-08-12 15:13:30 +02:00
Pravdyvy 59769f5a35 Merge branch 'dev' into Pravdyvy/multi-sequencer-integration-tests 2026-08-11 16:28:02 +03:00
moudyellaz 6a15eaec93 feat(cross-zone)!: have ping_receiver authorize its own peer sources
BREAKING CHANGE: ping_receiver gains a config PDA holding the deliverer and the
peer sources it accepts, ReceiverInstruction gains InitConfig, and Record takes
[source marker, config, record] instead of the record alone. Every emitter aimed
at ping_receiver must name its config account in target_accounts. The
ping_receiver and ping_sender image ids move, and a fresh genesis is required.
2026-08-10 13:30:28 +02:00
moudyellaz 03033f0f41 feat(cross-zone)!: have wrapped_token authorize its own peer sources
BREAKING CHANGE: the wrapped-token config PDA holds a borsh WrappedTokenConfig
(minter plus authorized source pairs) rather than a bare minter id, and
Instruction::InitConfig takes it as a single field. Mint now refuses a source the
token has not authorized, checked against the inbox's source marker. The
wrapped_token image id moves, and bridge_lock's with it, since it links
wrapped_token_core.
2026-08-10 11:59:00 +02:00
moudyellaz 421e76b946 feat(cross-zone)!: pin bridge_lock's outbox, mint target, and mint accounts
BREAKING CHANGE: Instruction::Lock drops outbox_program_id and takes the
bridge-lock config PDA as its first account, changing both the instruction
encoding and the account list. bridge_lock's image id moves, relocating its
escrow and config PDAs and requiring a fresh genesis. Sequencer, indexer and
every peer zone must upgrade together: a stale decoder re-derives a different
dispatch and reports Forged.
2026-08-09 19:02:28 +02:00
moudyellaz a04b3eeaa9 feat(cross-zone)!: pin ping_sender's outbox to a genesis-seeded config
BREAKING CHANGE: SenderInstruction::Send drops outbox_program_id and takes the
sender config PDA as its first account, changing both the instruction encoding
and the account list. ping_sender's image id moves, relocating its PDAs and
requiring a fresh genesis. Sequencer, indexer and every peer zone must upgrade
together: a stale decoder re-derives a different dispatch and reports Forged.
2026-08-09 18:01:38 +02:00
moudyellaz 09c68eca86 fix(cross-zone-chat): start outbox ordinals from a free slot 2026-08-09 01:21:07 +02:00
Pravdyvy 45452c80ac feat(wallet_ffi): tx status 2026-08-07 15:19:12 +03:00
Pravdyvy f7b9abdc1e Merge branch 'dev' into Pravdyvy/multi-sequencer-integration-tests 2026-08-07 14:43:13 +03:00
moudyellaz e274a4b29d feat(sequencer): count and expose the cross-zone deliveries given up on 2026-08-07 10:13:30 +02:00
Sergio Chouhy 245c63d190 chore(workspace): bump bedrock rev 2026-08-06 16:41:06 -03:00
Pravdyvy afe29c1f32 fix(machete): machete fix 2026-08-06 15:42:10 +03:00
Pravdyvy 8f0a3032cb fix(ci): machete fix 2026-08-04 07:54:29 +03:00
Pravdyvy 9e4b489512 Merge branch 'dev' into Pravdyvy/multi-sequencer-integration-tests 2026-08-04 07:23:35 +03:00
Daniil Polyakov 69ecc116a8 fix(common): drop strum 2026-08-03 23:46:35 +03:00
Daniil Polyakov 343ba0b97c feat(dashboard_gen): remove panel json to rust generator 2026-08-03 23:46:35 +03:00
Daniil Polyakov ea36fa2e93 refactor(metrics): move metrics into a separate crates and reuse names in dashboard generation 2026-08-03 23:46:35 +03:00
Daniil Polyakov 008eb247e9 feat(tools): add dashboard generator 2026-08-03 23:46:34 +03:00
Daniil Polyakov 97071b575a feat(sequencer): add initial metrics 2026-08-03 23:46:34 +03:00
Pravdyvy ba4247a066 fix(wallet): fmt 2026-08-03 12:47:33 +03:00
Pravdyvy ef0d4e19b1 Merge branch 'dev' into Pravdyvy/multi-sequencer-integration-tests 2026-08-03 12:44:36 +03:00
erhant 9d9b75d42f fix(sequencer): fund channel config transaction via node wallet" 2026-07-31 18:26:34 +03:00
Daniil Polyakov 93a93c6b96 feat(sequencer): disable withdraws 2026-07-31 18:26:33 +03:00
Daniil Polyakov 50ac64c37d fix(bedrock): fix new bedrock image setup 2026-07-31 18:26:33 +03:00
Daniil Polyakov 7e283f5fed fix(sequencer): rework WithdrawalReconciliationKey by using released note id 2026-07-31 18:26:33 +03:00
Daniil Polyakov b9a0ebef6c feat(zone_sdk): update to a new bedrock & zone sdk 2026-07-31 18:25:56 +03:00
moudyellaz c14bfe3f9f feat(cross-zone): record peer deliveries instead of injecting them 2026-07-31 16:01:41 +02:00
Pravdyvy fa7c7c362c feat(integration_tests): proof of concept tests 2026-07-31 15:03:33 +03:00
Sergio Chouhy 2f42a7b119 fix(nix): update flake nix to add pcsclite 2026-07-30 22:24:18 -03:00
erhant 57759d8953 fix(bridge): enforce deposit exactly-once via a per-op-id receipt PDA 2026-07-30 14:21:10 +03:00
moudyellaz c684859fb0 fix(cross-zone): gate the forgery test on a verified peer-chain prefix 2026-07-28 12:58:00 +02:00
moudyellaz 124bbee6c6 Merge origin/dev 2026-07-23 23:59:36 +02:00
jonesmarvin8andDaniil Polyakov 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
erhantandClaude Fable 5 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
moudyellaz 72195ce09e Merge origin/dev 2026-07-23 02:43:53 +02:00
Daniil Polyakov 2d5489c04e feat(sequencer): bootstrap state from Bedrock 2026-07-21 22:46:25 +03:00
moudyellaz b0c90fcc58 Merge origin/dev 2026-07-14 23:33:10 +02:00