Commit Graph
3259 Commits
Author SHA1 Message Date
moudyellaz dc2d8ac93f fix(storage): store pending cross-zone dispatches as per-message entries 2026-08-13 09:06:52 +02: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
Moudy b08e80519e Merge pull request #699 from logos-blockchain/moudy/cross-zone-emitter-pins
feat(cross-zone)!: pin the outbox in both emitters and bridge_lock's mint destination
2026-08-12 18:13:10 +02:00
Moudy 6303adef11 Merge pull request #700 from logos-blockchain/moudy/cross-zone-target-auth 2026-08-12 17:26:56 +02:00
Moudy 39fb98198a Merge pull request #693 from logos-blockchain/moudy/cross-zone-per-block-seen-shard 2026-08-12 17:25:59 +02:00
moudyellaz 37bbe34579 chore(integration_tests): drop the unused logos-blockchain-core dependency 2026-08-12 15:59:41 +02:00
moudyellaz e7d3ec568b fix(build): resolve the artifacts dir at build-script runtime 2026-08-12 15:25:01 +02: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 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 d6372fec0d Merge pull request #701 from logos-blockchain/Pravdyvy/fix-new-fixtures
fix(ci): fixtures rebuild
2026-08-11 06:17:57 +03:00
Pravdyvy 127d081047 fix(ci): revert 2026-08-10 20:44:43 +03:00
Pravdyvy 285f9addc6 fix(ci): proper ci test 2026-08-10 18:00:11 +03:00
Pravdyvy 20255cf7e2 fix(ci): fixtures rebuild 2026-08-10 16:18:53 +03:00
moudyellaz 869a130eec chore: regenerate artifacts and the prebuilt sequencer fixture
Every guest moved, not only the ones whose source changed: adding real
dependencies (borsh to two cores, cross_zone_inbox_core to two targets) changes
the build graph, and with it the metadata hash of every crate in the guest build.
Piece A moved only three because it added a dev-dependency, which the guest build
never sees.
2026-08-10 15:01:26 +02:00
moudyellaz f26193eedc fix(cross-zone)!: drop the inbox route allowlist now targets authorize themselves
BREAKING CHANGE: InboxConfig is just self_zone; allowed_routes, InboxConfig::permits
and routes_permit are gone, and build_inbox_init_config_tx no longer takes the
cross-zone config. The operator's per-peer routes still configure the same thing,
fanned out at genesis into each target's own config instead. The watcher keeps
only a hygiene filter refusing a peer that names a sequencer-only program, kept
host-side so it cannot make the verifier disagree.
2026-08-10 14:15:57 +02:00
Pravdyvy 87fca2a176 Merge pull request #696 from logos-blockchain/Pravdyvy/ffi-tx-status-poll
feat(wallet_ffi): Tx status polling
2026-08-10 14:35:07 +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
Pravdyvy 94beb74007 Merge branch 'dev' into Pravdyvy/ffi-tx-status-poll 2026-08-10 13:29:32 +03: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
Artem Gureev 0457b9bb60 Merge pull request #669 from logos-blockchain/artem/private-authorization-key
feat!: private authorization key
2026-08-10 13:28:42 +04:00
moudyellaz cc7192a2d9 feat(cross-zone)!: carry the peer source to the target as a marker account
BREAKING CHANGE: an inbox dispatch now declares [config, seen shard, source
marker, ...target accounts], and a target's chained call receives the marker at
position 0, so wrapped_token::Mint and ping_receiver::Record each take one more
leading account. The inbox, wrapped_token and ping_receiver image ids move,
relocating their PDAs and requiring a fresh genesis.
2026-08-10 11:11:05 +02:00
agureev 1f7a4c4162 doc: fix typo 2026-08-10 12:32:57 +04:00
moudyellaz cd4027593c chore: regenerate artifacts and the prebuilt sequencer fixture 2026-08-09 19:47:47 +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 7a324f2825 chore: regenerate artifacts and the prebuilt sequencer fixture 2026-08-09 02:21:14 +02:00
moudyellaz 09c68eca86 fix(cross-zone-chat): start outbox ordinals from a free slot 2026-08-09 01:21:07 +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 e0d5747b19 Merge branch 'dev' 2026-08-07 22:48:27 +02:00
moudyellaz abc1a57e14 chore: regenerate artifacts and the prebuilt sequencer fixture 2026-08-07 22:23:59 +02:00
moudyellaz bb54bd0581 docs: simplify comments 2026-08-07 18:30:14 +02:00
Pravdyvy 62de1b3e8d fix(integration_tests): fix double free 2026-08-07 16:21:46 +03:00
Artem Gureev 64ddd7440f fix(wallet-ffi): revert zero-ing of derived keys 2026-08-07 17:14:02 +04:00
Artem Gureev 5a1524dcb9 refactor(lee): update stale domain for keytree parent 2026-08-07 17:13:41 +04: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
Pravdyvy aa9f59648e fix(integration tests): added poll call into integration tests 2026-08-07 15:33:27 +03:00
Pravdyvy 45452c80ac feat(wallet_ffi): tx status 2026-08-07 15:19:12 +03:00
agureev 736102329f chore: regenerate artifacts 2026-08-07 15:51:00 +04:00
Artem Gureev 3878251ce3 refactor(wallet): derive the shared PDA npk from its nsk 2026-08-07 10:41:56 +00:00
Artem Gureev 279a9b8313 feat!(lee): derive private authorization from an authorization secret key
BREAKING!

Before: Providing `nsk` was the same as authorizing a regular private
account.

After: A separate `ask` is required, making unauthorized private
updates possible.
2026-08-07 10:41:56 +00:00
Artem Gureev fc8f7f2d42 refactor(lee): verbose key domains and the ask key chain 2026-08-07 10:40:04 +00: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
Artem Gureev cbd10c5bba Merge pull request #660 from logos-blockchain/artem/private-kinds-refactor
refactor(lee): refactor private kinds
2026-08-07 11:46:56 +04:00
moudyellaz c245434f09 feat(sequencer): dead-letter the cross-zone deliveries this node gives up on 2026-08-07 02:57:34 +02:00
Sergio Chouhy cdabad7760 Merge pull request #689 from logos-blockchain/schouhy/bump-zone-sdk-version
chore(workspace): bump zone sdk version
2026-08-06 19:23:54 -03:00
Sergio Chouhy 245c63d190 chore(workspace): bump bedrock rev 2026-08-06 16:41:06 -03:00
Sergio Chouhy 3d5f083e78 fix(lez): duplicated lines 2026-08-06 16:40:39 -03:00
Moudy 751c6bf8ec Merge pull request #686 from logos-blockchain/moudy/cross-zone-content-bound-key
fix(lez): deliver only from peer blocks on the peer's verified chain
2026-08-06 21:00:07 +02:00