Commit Graph
102 Commits
Author SHA1 Message Date
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
moudyellaz f846e7ac73 feat(sequencer)!: suffix the sequencer db directory with its channel id
BREAKING CHANGE: the sequencer database moves from <home>/rocksdb to <home>/rocksdb-<channel id>; an existing home fresh-starts (with a warning naming the old directory) unless the directory is renamed.
2026-08-12 15:25:01 +02:00
moudyellaz bb54bd0581 docs: simplify comments 2026-08-07 18:30:14 +02:00
moudyellaz 5cbd821261 fix(cross-zone)!: shard the inbox seen-set per peer block, keyed by tx index
Closes #676.

BREAKING CHANGE: the seen-shard PDA address and its data layout both change, so
every message delivered under the old layout becomes deliverable again at the new
address, and the old shards are orphaned. A fresh genesis is required.
2026-08-07 11:48:56 +02:00
moudyellaz af2a025b8f feat(cross-zone)!: bind a delivery to the peer block hash it came from
BREAKING CHANGE: `CrossZoneMessage` gains `src_block_hash`, changing the risc0
encoding of `cross_zone_inbox::Instruction::Dispatch` and the inbox image id,
and with it the inbox config and seen-shard PDA addresses. A pending dispatch
record written by earlier code no longer names a registered program, so it fails
production and is dead-lettered rather than delivered. Drain the pending list
before upgrading, or accept that in-flight deliveries are lost.
2026-08-07 11:01:16 +02:00
moudyellaz e274a4b29d feat(sequencer): count and expose the cross-zone deliveries given up on 2026-08-07 10:13:30 +02:00
moudyellaz c245434f09 feat(sequencer): dead-letter the cross-zone deliveries this node gives up on 2026-08-07 02:57:34 +02:00
Moudy cfc7942c3c Merge branch 'dev' into moudy/cross-zone-content-bound-key 2026-08-06 20:59:46 +02:00
erhant 80a56be5aa fix(sequencer): properly adopt / orphan blocks in false-pos from L1 2026-08-06 20:44:48 +03:00
moudyellaz c7739733db fix(indexer): deliver only from peer blocks inside the verified run 2026-08-06 10:17:12 +02:00
moudyellaz 5c28c4cc0c fix(sequencer): deliver only from a peer block on its verified chain 2026-08-05 20:49:41 +02:00
moudyellaz e4dcc39277 feat(storage): add a durable per-peer cross-zone chain tip 2026-08-05 19:27:06 +02:00
Daniil Polyakov 409ebb48cc feat(sequencer): expose zone_sdk priority_fee in config 2026-08-04 14:07:06 +03:00
Daniil Polyakov cd835bd0c9 feat(sequencer): add possibility to disable metrics 2026-08-03 23:46:35 +03:00
Daniil Polyakov 218955dd19 feat(sequencer): add status label to transaction application time 2026-08-03 23:46:35 +03:00
Daniil Polyakov 037901fe94 fix(sequencer): differentiate between height and blocks produced by this sequencer 2026-08-03 23:46:35 +03:00
Daniil Polyakov f4f78ddc28 fix(sequencer): expose 9000 metrics port from docker 2026-08-03 23:46:35 +03:00
Daniil Polyakov 97152b8df6 chore(sequencer): apply snake_case convention to labels 2026-08-03 23:46:35 +03:00
Daniil Polyakov f2e92a9c1f feat(sequencer): add metrics_address config field 2026-08-03 23:46:35 +03:00
Daniil Polyakov d0ae9c2768 chore(metrics): rename writing feature to record 2026-08-03 23:46:35 +03:00
Daniil Polyakov aa6969386e refactor(metrics): improve metrics setup 2026-08-03 23:46:35 +03:00
Daniil Polyakov 849bb6bbe1 feat(metrics): improve mempool and failed transaction metrics & panels 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 8afd2cea66 feat(docker): introduce monitoring 2026-08-03 23:46:34 +03:00
Daniil Polyakov 97071b575a feat(sequencer): add initial metrics 2026-08-03 23:46:34 +03:00
moudyellaz 09f4bfdd03 feat(cross-zone)!: authorize deliveries by source program and target
BREAKING CHANGE: `CrossZonePeer.allowed_targets` is replaced by `allowed_routes`,
a list of `{src_program_id, target_program_id}` pairs. `InboxConfig.allowed_peers`
is removed.
2026-08-03 04:40:05 +02:00
Daniil Polyakov 3d009acb9c fix(sequencer): resubmit orphaned tx which comes only after final tip 2026-07-31 19:54:58 +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
moudyellaz 3a7ce3f306 feat(sequencer): wait for background tasks on shutdown 2026-07-31 10:55:24 +02:00
erhant 0659774e43 chore(state_machine); rename get_public_account to get_account_by_id_ref [skip ci] 2026-07-30 14:23:49 +03:00
erhant 21af565ee3 fix(sequencer): tend to PR comments & self-review findings 2026-07-30 14:23:49 +03:00
erhant 0b0db1dfa1 chore(sequencer): add TODO about Slot update from logos-blockchain 2026-07-30 14:21:10 +03:00
erhant 849ea66c0f fix(sequencer): harden follow-path finalization and deposit/withdraw batching 2026-07-30 14:21:10 +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
erhant f9ef68dbf8 fix(sequencer): proper deposit and withdraw handling initial fixes for #633 2026-07-30 14:21:10 +03:00
moudyellaz d6a2075a7c fix(sequencer): gate bootstrap republish on channel existence, not finalized-scan emptiness 2026-07-24 14:33:24 +02:00
moudyellaz d9787eb72f style(sequencer): backtick InitConfig in build_initial_state doc comment 2026-07-24 01:07:41 +02:00
moudyellaz 124bbee6c6 Merge origin/dev 2026-07-23 23:59:36 +02:00
moudyellaz dc977db7ab refactor: destructure genesis fingerprint and return an iterator from bridge_lock_holdings 2026-07-23 21:55:55 +02:00
erhant 71b59ac1b8 fix(sequencer): add apply_produced which is like apply_adopted but for our own block, which is not in channel yet 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
agureev 61cad70f9b feat(circuit): supply a view_tag on private-account updates 2026-07-22 22:31:31 +04:00
Daniil Polyakov e440430a50 feat(sequencer): add more reconstruction tests 2026-07-21 22:46:47 +03:00