2841 Commits

Author SHA1 Message Date
erhant
08fa24a169 chore: rm redundant unit test [skip ci] 2026-06-27 23:09:48 +03:00
erhant
ff7504c272 fix(indexer): run the chain-identity check even when the store is parked 2026-06-27 19:30:53 +03:00
erhant
bb75b9857b fix(indexer): run the chain-identity check even when the store is parked 2026-06-27 19:22:54 +03:00
erhant
2be1107d07 fix(indexer): detect chain reset via anchor block, **not** deterministic genesis
test `RISC0_DEV_MODE=1 RISC0_SKIP_BUILD=1 cargo test -p indexer_core`
2026-06-27 17:50:08 +03:00
erhant
50f5bbd54c chore: greatly increase timeout 2026-06-26 21:55:54 +03:00
erhant
5c48dab887 feat(indexer): run genesis-consistency check at service and FFI startup 2026-06-26 21:08:06 +03:00
erhant
e04626063f feat(indexer): add startup genesis-consistency check
test `RISC0_DEV_MODE=1 RISC0_SKIP_BUILD=1 cargo test -p indexer_core`
2026-06-26 20:37:35 +03:00
erhant
3a544aab32 test(indexer): cover stall recovery and full StallReason roundtrip
test `RISC0_DEV_MODE=1 RISC0_SKIP_BUILD=1 cargo test -p indexer_core`
2026-06-26 18:00:49 +03:00
erhant
774af23521 feat(indexer): expose status over RPC and add integration coverage
test `RUST_LOG=info RISC0_DEV_MODE=1 cargo test -p integration_tests --test bridge --indexer_status_rpc_reports_caught_up_with_no_stall --exact --nocapture --include-ignored`
2026-06-26 17:44:00 +03:00
erhant
251919c4e7 chore: fix linter 2026-06-26 16:41:39 +03:00
erhant
8a719c289d feat(indexer): park ingest loop on bad blocks instead of skipping
`RISC0_DEV_MODE=1 RISC0_SKIP_BUILD=1 cargo test -p indexer_core`
2026-06-26 16:39:37 +03:00
erhant
00939ae6d6 refactor(indexer): use "stall reason" instead of "chain breaker" 2026-06-26 15:34:17 +03:00
erhant
4cc0d17d95 feat(indexer): add Stalled status and chain breaker snapshot
test `RISC0_DEV_MODE=1 RISC0_SKIP_BUILD=1 cargo test -p indexer_core --lib status`
2026-06-26 15:07:45 +03:00
erhant
fc3692813a feat(indexer): add accept_block with chain-linkage check and atomic apply
test `RISC0_DEV_MODE=1 RISC0_SKIP_BUILD=1 cargo test -p indexer_core --lib accept_tests`
2026-06-26 14:50:26 +03:00
erhant
48a41fe1cf feat(indexer): persist ChainBreaker in RocksDB meta
test `RISC0_DEV_MODE=1 RISC0_SKIP_BUILD=1 cargo test -p storage -p indexer_core --lib chain_breaker`
2026-06-26 14:25:02 +03:00
erhant
16b0011abd feat(indexer): add BlockIngestError enum, fix linting 2026-06-26 14:00:44 +03:00
erhant
f0dec9dd72 feat(common): add block hash recomputation helper
test:  `RISC0_DEV_MODE=1 RISC0_SKIP_BUILD=1 cargo test -p common --lib block::tests`
2026-06-26 13:49:56 +03:00
erhant
b728074225 refactor(indexer): rename execute_on_state and drop indexer-side tx checks
test with:
RISC0_DEV_MODE=1 RISC0_SKIP_BUILD=1 cargo test -p common -p storage -p indexer_core
2026-06-26 13:36:10 +03:00
Moudy
92e5b29923
Merge pull request #578 from logos-blockchain/schouhy/use-test-program-in-test
fix(lee): use test program in empty tx instead of authenticated tranfer
2026-06-25 21:37:08 +02:00
Sergio Chouhy
3c54bbf0b9 fix(lee): use test program in empty tx instead of authenticated tranfer 2026-06-25 14:47:22 -03:00
Daniil Polyakov
64f8444a67
Merge pull request #524 from logos-blockchain/arjentix/refactor-lee-lez
Decouple last parts of LEZ from LEE
2026-06-24 23:46:43 +03:00
jonesmarvin8
77af662ac6
fix: reject public transactions with empty account_ids (#552)
Closes #513
2026-06-24 13:33:51 -04: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
c74b03582b refactor!(wallet): pass program_id instead of program in send_pub_tx() 2026-06-24 20:19:12 +03:00
Daniil Polyakov
d3e507f25d refactor!(artifacts): keep lee and lez artifacts separated 2026-06-24 18:10:41 +03:00
Daniil Polyakov
066ffdd51a
Merge pull request #567 from logos-blockchain/arjentix/fix-ci-docker-build
fix(ci): fix publish images workflow
2026-06-24 18:10:09 +03:00
Pravdyvy
fb8cbac40e
Merge pull request #518 from logos-blockchain/Pravdyvy/ffi-mnemonic
feat(wallet-ffi)!: mnemonic-based updates
lez-core-v0.2.0
2026-06-24 17:11:08 +03:00
Pravdyvy
552503a42f fix(deny): deny fix 2026-06-24 13:14:50 +03:00
Pravdyvy
d8c50ceb59 Merge branch 'main' into Pravdyvy/ffi-mnemonic 2026-06-24 13:02:12 +03:00
Pravdyvy
078e579edd
Merge pull request #571 from logos-blockchain/fix/macos-metal-toolchain-xcrun
fix(nix): build risc0 Metal kernels on macOS by fixing xcrun env
2026-06-24 12:57:32 +03:00
Moudy
54497642f9
Merge pull request #553 from logos-blockchain/schouhy/add-vault-claim-ffi
add vault claim ffi
2026-06-24 11:57:16 +02:00
Pravdyvy
715dccf62a Merge branch 'main' into fix/macos-metal-toolchain-xcrun 2026-06-24 11:36:40 +03:00
Sergio Chouhy
47a94ac7e4 feat(wallet-ffi): add vault claim ffi 2026-06-24 10:35:31 +02:00
Moudy
ec11c2ab0b
Merge pull request #570 from logos-blockchain/fix/deny-rustsec-2026-0185
fix(deny): ignore RUSTSEC-2026-0185 (quinn-proto, transitive via libp2p)
2026-06-24 10:28:49 +02:00
moudyellaz
136acf5368 fix(deny): ignore RUSTSEC-2026-0185 (quinn-proto, transitive via libp2p) 2026-06-24 08:16:03 +00:00
r4bbit
4fc1a97db6
fix(nix): build risc0 Metal kernels on macOS by fixing xcrun env
risc0 compiles its Metal (GPU) prover kernels by invoking `xcrun metal` /
`xcrun metallib`. Under nix, the darwin stdenv exports DEVELOPER_DIR and
SDKROOT pointing at its own SDK, which makes xcrun look for the `metal`
tool in the wrong place and fail with:

    error: cannot execute tool 'metal' due to missing Metal Toolchain;
           use: xcodebuild -downloadComponent MetalToolchain

...even when a working Metal Toolchain is installed (the same call succeeds
in a clean environment where those vars are unset).

Wrap xcrun with a small shim, placed first in PATH, that clears
DEVELOPER_DIR/SDKROOT for `metal`/`metallib` invocations only — so they
resolve the system Xcode Metal Toolchain — while every other xcrun call
passes through with the nix environment intact. This makes wallet-ffi
build with real GPU prover kernels on macOS, with no --override-input
workaround needed downstream.

Note: on recent macOS the Metal Toolchain is a per-user component, so
`xcodebuild -downloadComponent MetalToolchain` must have been run by the
building user (and builds still require `--option sandbox false`).
2026-06-24 10:09:47 +02:00
erhant
fce8722d05
Merge pull request #568 from logos-blockchain/erhant/fix-indexer-configs
fix(indexer): update config files
2026-06-23 18:58:48 +03:00
Daniil Polyakov
27360cb7d6 fix(ci): fix publish images workflow v0.2.0-rc5 2026-06-23 18:28:36 +03:00
erhant
7f0714a79e fix(indexer): the latest docker fix updated bedrock ports, this small commit fixes those 2026-06-23 17:02:47 +03:00
erhant
a9df90c5b6
Merge pull request #547 from logos-blockchain/erhant/fix-indexer-ffi
refactor(indexer)!: query IndexerCore directly in the FFI; fix #538 / #540 / #544, drop `port`
2026-06-23 16:00:27 +03:00
erhant
c7336c3216 fix(indexer): tiny comment link fix [skip ci] 2026-06-23 15:57:33 +03:00
erhant
735235efa1 fix(indexer)!: address @Arjentix comments on IndexerStatus 2026-06-23 15:57:33 +03:00
erhant
2195937400 fix(indexer_ffi): use already FFI-safe Runtime 2026-06-23 15:57:33 +03:00
erhant
5d51e0b59c fix(indexer): use /var/lib/indexer_service volume path in Dockerfile
+ add `*` wildcard for rocksdb ignore
2026-06-23 15:57:33 +03:00
erhant
0bb7b30d63 fix: rm comments, add cpp_compat to cbindgen 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
c0fbaaf08e refactor: use channel id for rocksdb filename [skip ci] 2026-06-23 15:57:33 +03:00
erhant
1c1e80f646 feat(indexer)!: make storage location caller-driven, not config-driven
The indexer's storage location was the `home` field of IndexerConfig, used only to derive the RocksDB dir. Defaulting to "." meant it landed in the process CWD — fine for the standalone service, but wrong when the indexer runs embedded in a logos_host subprocess (RocksDB ended up in an arbitrary/unwritable dir). Storage location is an operational concern the host should own, not something baked into a user-editable config.

Remove `home` from IndexerConfig and pass the storage directory explicitly:

  - core: `IndexerCore::new(config, storage_dir)` derives `<storage_dir>/rocksdb`.
  - ffi: `start_indexer(runtime, config_path, storage_dir)`; null/empty storage_dir falls back to ".". Lets a host (e.g. a Logos module's instance persistence path) own where state lives.
  - service: `run_server(config, storage_dir, port)` + a `--data-dir` flag (default ".") on the binary, preserving current behaviour.
  - drop `home` from the committed indexer config JSONs and the test fixtures.

BREAKING CHANGE: `start_indexer` gains a `storage_dir` parameter and IndexerConfig no longer has a `home` field.
2026-06-23 15:57:33 +03:00
erhant
0c52ec9695 fix(indexer): stop FFI integration tests segfaulting on query_account
The indexer FFI test helper borrowed `ctx.runtime()` via `Runtime::from_borrowed` and then moved `ctx` (and its by-value `tokio::runtime::Runtime` field) into the tuple returned from `setup()`. That move relocates the runtime, leaving the raw pointer the indexer stored dangling. Sync queries never touch the runtime, so they passed; `query_account` is the only path that `block_on`s it, so it dereferenced freed stack memory → SIGSEGV (hence only the two `indexer_ffi_state_consistency*` tests crashed).

Pass a null runtime so the FFI creates and owns its own — the same lifetime path the production module uses (`start_indexer(nullptr, …)`) — instead of borrowing a runtime whose address isn't stable across the move.
2026-06-23 15:57:33 +03:00