Commit Graph
18 Commits
Author SHA1 Message Date
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 41936b658b feat(cross-zone)!: make an outbox slot a write-once log entry keyed by its emitter
Closes #675.

BREAKING CHANGE: an outbox message PDA is now derived from the emitting program
as well as the destination zone and ordinal, and the seed domain moves to
/00001/, so every outbox record address changes. `OutboxRecord` gains `emitter`
and `ordinal`, changing its borsh layout, so records written by earlier code are
orphaned at their old addresses and no longer decode. A second `Emit` at the same
(emitter, target_zone, ordinal) now fails the transaction instead of silently
overwriting the record, so a caller must choose an ordinal the chain does not
already hold rather than counting from zero. A fresh genesis is required.
2026-08-09 00:18:14 +02:00
moudyellaz bb54bd0581 docs: simplify comments 2026-08-07 18:30:14 +02:00
moudyellaz 69a5aa7899 fix(cross-zone)!: cap a single wrapped-token mint
Closes #678.

BREAKING CHANGE: `wrapped_token` and `bridge_lock` image ids move, relocating the
wrapped-token config and every holding PDA. A lock above the cap is now refused
at the source rather than escrowing balance the destination will not mint.
2026-08-07 14:56:55 +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 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 93a93c6b96 feat(sequencer): disable withdraws 2026-07-31 18:26:33 +03:00
erhant 931b0e9956 chore(bridge): add a comment on observability [skip ci] 2026-07-30 14:23:49 +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 113d5db6f5 fix(cross-zone): make InitConfig idempotent under genesis replay 2026-07-24 08:32:45 +02:00
moudyellaz e278437266 refactor(cross-zone): fund bridge-lock holdings with a real native balance 2026-07-21 18:28:04 +02:00
moudyellaz f4a5d85c65 refactor(cross-zone): seed cross-zone config via genesis transactions 2026-07-21 15:19:16 +02:00
moudyellaz eff31df9ce Merge origin/dev 2026-07-11 01:12:00 +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
Daniil Polyakov 9977cc5374 fix(ci, programs, privacy_preserving_circuit): properly check programs ci 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