diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 26d826b5..02381dfc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -160,35 +160,33 @@ jobs: RUST_LOG: "info" run: cargo nextest run -p integration_tests -- --skip tps_test --skip indexer - # # TODO: Bring this back once we find the source of the errors. - # # - # integration-tests-indexer: - # runs-on: ubuntu-latest - # timeout-minutes: 60 - # steps: - # - uses: actions/checkout@v5 - # with: - # ref: ${{ github.event.pull_request.head.sha || github.head_ref }} + integration-tests-indexer: + runs-on: ubuntu-latest + timeout-minutes: 60 + steps: + - uses: actions/checkout@v5 + with: + ref: ${{ github.event.pull_request.head.sha || github.head_ref }} - # - uses: ./.github/actions/install-system-deps + - uses: ./.github/actions/install-system-deps - # - uses: ./.github/actions/install-risc0 + - uses: ./.github/actions/install-risc0 - # - uses: ./.github/actions/install-logos-blockchain-circuits - # with: - # github-token: ${{ secrets.GITHUB_TOKEN }} + - uses: ./.github/actions/install-logos-blockchain-circuits + with: + github-token: ${{ secrets.GITHUB_TOKEN }} - # - name: Install active toolchain - # run: rustup install + - name: Install active toolchain + run: rustup install - # - name: Install nextest - # run: cargo install --locked cargo-nextest + - name: Install nextest + run: cargo install --locked cargo-nextest - # - name: Run tests - # env: - # RISC0_DEV_MODE: "1" - # RUST_LOG: "info" - # run: cargo nextest run -p integration_tests indexer -- --skip tps_test + - name: Run tests + env: + RISC0_DEV_MODE: "1" + RUST_LOG: "info" + run: cargo nextest run -p integration_tests indexer -- --skip tps_test valid-proof-test: runs-on: ubuntu-latest diff --git a/Cargo.lock b/Cargo.lock index 9e1d157c..2a9d8df4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -503,7 +503,7 @@ dependencies = [ "ark-ff 0.4.2", "ark-std 0.4.0", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.2.25", ] [[package]] @@ -515,7 +515,7 @@ dependencies = [ "ark-ff 0.5.0", "ark-std 0.5.0", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.2.25", ] [[package]] @@ -1137,7 +1137,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85a885520bf6249ab931a764ffdb87b0ceef48e6e7d807cfdb21b751e086e1ad" dependencies = [ "prost 0.14.3", - "prost-types", + "prost-types 0.14.3", "tonic", "tonic-prost", "ureq", @@ -1766,6 +1766,15 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -3073,6 +3082,17 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +dependencies = [ + "libc", + "match_cfg", + "winapi", +] + [[package]] name = "html-escape" version = "0.2.13" @@ -4379,7 +4399,7 @@ checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "logos-blockchain-blend-crypto" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "blake2", "logos-blockchain-groth16", @@ -4393,10 +4413,11 @@ dependencies = [ [[package]] name = "logos-blockchain-blend-message" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "blake2", "derivative", + "hex", "itertools 0.14.0", "logos-blockchain-blend-crypto", "logos-blockchain-blend-proofs", @@ -4415,7 +4436,7 @@ dependencies = [ [[package]] name = "logos-blockchain-blend-proofs" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "ed25519-dalek", "generic-array 1.3.5", @@ -4428,12 +4449,13 @@ dependencies = [ "num-bigint 0.4.6", "serde", "thiserror 1.0.69", + "zeroize", ] [[package]] name = "logos-blockchain-chain-broadcast-service" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "async-trait", "derivative", @@ -4449,7 +4471,7 @@ dependencies = [ [[package]] name = "logos-blockchain-chain-service" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "async-trait", "bytes", @@ -4464,6 +4486,7 @@ dependencies = [ "logos-blockchain-services-utils", "logos-blockchain-storage-service", "logos-blockchain-time-service", + "logos-blockchain-tracing", "logos-blockchain-utils", "num-bigint 0.4.6", "overwatch", @@ -4479,7 +4502,7 @@ dependencies = [ [[package]] name = "logos-blockchain-circuits-prover" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "logos-blockchain-circuits-utils", "tempfile", @@ -4488,7 +4511,7 @@ dependencies = [ [[package]] name = "logos-blockchain-circuits-utils" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "dirs", ] @@ -4496,7 +4519,7 @@ dependencies = [ [[package]] name = "logos-blockchain-common-http-client" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "futures", "hex", @@ -4516,7 +4539,7 @@ dependencies = [ [[package]] name = "logos-blockchain-core" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "ark-ff 0.4.2", "bincode", @@ -4546,7 +4569,7 @@ dependencies = [ [[package]] name = "logos-blockchain-cryptarchia-engine" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "cfg_eval", "logos-blockchain-pol", @@ -4562,7 +4585,7 @@ dependencies = [ [[package]] name = "logos-blockchain-cryptarchia-sync" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "bytes", "futures", @@ -4579,7 +4602,7 @@ dependencies = [ [[package]] name = "logos-blockchain-groth16" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "ark-bn254 0.4.0", "ark-ec 0.4.2", @@ -4597,11 +4620,12 @@ dependencies = [ [[package]] name = "logos-blockchain-http-api-common" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "axum 0.7.9", "logos-blockchain-core", "logos-blockchain-key-management-system-keys", + "logos-blockchain-tracing", "serde", "serde_json", "serde_with", @@ -4611,7 +4635,7 @@ dependencies = [ [[package]] name = "logos-blockchain-key-management-system-keys" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "async-trait", "bytes", @@ -4637,7 +4661,7 @@ dependencies = [ [[package]] name = "logos-blockchain-key-management-system-macros" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "proc-macro2", "quote", @@ -4647,7 +4671,7 @@ dependencies = [ [[package]] name = "logos-blockchain-key-management-system-operators" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "async-trait", "logos-blockchain-blend-proofs", @@ -4663,12 +4687,13 @@ dependencies = [ [[package]] name = "logos-blockchain-key-management-system-service" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "async-trait", "log", "logos-blockchain-key-management-system-keys", "logos-blockchain-key-management-system-operators", + "logos-blockchain-tracing", "overwatch", "serde", "thiserror 2.0.18", @@ -4679,7 +4704,7 @@ dependencies = [ [[package]] name = "logos-blockchain-ledger" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "derivative", "logos-blockchain-blend-crypto", @@ -4696,6 +4721,7 @@ dependencies = [ "rand 0.8.5", "rpds", "serde", + "serde_arrays", "thiserror 1.0.69", "tracing", ] @@ -4703,12 +4729,13 @@ dependencies = [ [[package]] name = "logos-blockchain-network-service" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "async-trait", "futures", "logos-blockchain-core", "logos-blockchain-cryptarchia-sync", + "logos-blockchain-tracing", "overwatch", "serde", "tokio", @@ -4719,7 +4746,7 @@ dependencies = [ [[package]] name = "logos-blockchain-poc" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "logos-blockchain-circuits-prover", "logos-blockchain-circuits-utils", @@ -4735,7 +4762,7 @@ dependencies = [ [[package]] name = "logos-blockchain-pol" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "astro-float", "logos-blockchain-circuits-prover", @@ -4754,7 +4781,7 @@ dependencies = [ [[package]] name = "logos-blockchain-poq" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "logos-blockchain-circuits-prover", "logos-blockchain-circuits-utils", @@ -4771,7 +4798,7 @@ dependencies = [ [[package]] name = "logos-blockchain-poseidon2" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "ark-bn254 0.4.0", "ark-ff 0.4.2", @@ -4782,7 +4809,7 @@ dependencies = [ [[package]] name = "logos-blockchain-services-utils" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "async-trait", "futures", @@ -4797,13 +4824,14 @@ dependencies = [ [[package]] name = "logos-blockchain-storage-service" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "async-trait", "bytes", "futures", "logos-blockchain-core", "logos-blockchain-cryptarchia-engine", + "logos-blockchain-tracing", "overwatch", "serde", "thiserror 1.0.69", @@ -4814,12 +4842,13 @@ dependencies = [ [[package]] name = "logos-blockchain-time-service" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "async-trait", "futures", "log", "logos-blockchain-cryptarchia-engine", + "logos-blockchain-tracing", "overwatch", "sntpc", "thiserror 2.0.18", @@ -4829,10 +4858,33 @@ dependencies = [ "tracing", ] +[[package]] +name = "logos-blockchain-tracing" +version = "0.2.1" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" +dependencies = [ + "opentelemetry", + "opentelemetry-appender-tracing", + "opentelemetry-http", + "opentelemetry-otlp", + "opentelemetry-semantic-conventions", + "opentelemetry_sdk", + "rand 0.8.5", + "serde", + "tokio", + "tracing", + "tracing-appender", + "tracing-gelf", + "tracing-loki", + "tracing-opentelemetry", + "tracing-subscriber 0.3.23", + "url", +] + [[package]] name = "logos-blockchain-utils" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "async-trait", "blake2", @@ -4849,7 +4901,7 @@ dependencies = [ [[package]] name = "logos-blockchain-utxotree" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "ark-ff 0.4.2", "logos-blockchain-groth16", @@ -4863,7 +4915,7 @@ dependencies = [ [[package]] name = "logos-blockchain-witness-generator" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "tempfile", ] @@ -4871,7 +4923,7 @@ dependencies = [ [[package]] name = "logos-blockchain-zksign" version = "0.2.1" -source = "git+https://github.com/logos-blockchain/logos-blockchain.git#81dbb4517aa466358ed425d92fad7d45a0c419fd" +source = "git+https://github.com/logos-blockchain/logos-blockchain.git?rev=44c9513a1525372b725ba1010169d04ab00768b5#44c9513a1525372b725ba1010169d04ab00768b5" dependencies = [ "logos-blockchain-circuits-prover", "logos-blockchain-circuits-utils", @@ -4885,6 +4937,16 @@ dependencies = [ "tracing", ] +[[package]] +name = "loki-api" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdc38a304f59a03e6efa3876766a48c70a766a93f88341c3fff4212834b8e327" +dependencies = [ + "prost 0.13.5", + "prost-types 0.13.5", +] + [[package]] name = "lru-slab" version = "0.1.2" @@ -4998,6 +5060,21 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + [[package]] name = "matchit" version = "0.7.3" @@ -5305,6 +5382,15 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "num" version = "0.4.3" @@ -5545,6 +5631,98 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "opentelemetry" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b84bcd6ae87133e903af7ef497404dda70c60d0ea14895fc8a5e6722754fc2a0" +dependencies = [ + "futures-core", + "futures-sink", + "js-sys", + "pin-project-lite", + "thiserror 2.0.18", +] + +[[package]] +name = "opentelemetry-appender-tracing" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef6a1ac5ca3accf562b8c306fa8483c85f4390f768185ab775f242f7fe8fdcc2" +dependencies = [ + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber 0.3.23", +] + +[[package]] +name = "opentelemetry-http" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a6d09a73194e6b66df7c8f1b680f156d916a1a942abf2de06823dd02b7855d" +dependencies = [ + "async-trait", + "bytes", + "http", + "opentelemetry", + "reqwest", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f69cd6acbb9af919df949cd1ec9e5e7fdc2ef15d234b6b795aaa525cc02f71f" +dependencies = [ + "http", + "opentelemetry", + "opentelemetry-http", + "opentelemetry-proto", + "opentelemetry_sdk", + "prost 0.14.3", + "reqwest", + "thiserror 2.0.18", + "tokio", + "tonic", +] + +[[package]] +name = "opentelemetry-proto" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7175df06de5eaee9909d4805a3d07e28bb752c34cab57fa9cff549da596b30f" +dependencies = [ + "opentelemetry", + "opentelemetry_sdk", + "prost 0.14.3", + "tonic", + "tonic-prost", +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e62e29dfe041afb8ed2a6c9737ab57db4907285d999ef8ad3a59092a36bdc846" + +[[package]] +name = "opentelemetry_sdk" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ae4f5991976fd48df6d843de219ca6d31b01daaab2dad5af2badeded372bd" +dependencies = [ + "futures-channel", + "futures-executor", + "futures-util", + "opentelemetry", + "percent-encoding", + "rand 0.9.2", + "thiserror 2.0.18", + "tokio", + "tokio-stream", +] + [[package]] name = "optfield" version = "0.4.0" @@ -5975,6 +6153,15 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "prost-types" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" +dependencies = [ + "prost 0.13.5", +] + [[package]] name = "prost-types" version = "0.14.3" @@ -7227,6 +7414,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_arrays" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94a16b99c5ea4fe3daccd14853ad260ec00ea043b2708d1fd1da3106dcd8d9df" +dependencies = [ + "serde", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -7475,6 +7671,15 @@ dependencies = [ "digest", ] +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + [[package]] name = "shlex" version = "1.3.0" @@ -7528,6 +7733,12 @@ version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +[[package]] +name = "snap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" + [[package]] name = "sntpc" version = "0.5.2" @@ -7933,6 +8144,15 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + [[package]] name = "throw_error" version = "0.3.1" @@ -8333,6 +8553,18 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-appender" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786d480bce6247ab75f005b14ae1624ad978d3029d9113f0a22fa1ac773faeaf" +dependencies = [ + "crossbeam-channel", + "thiserror 2.0.18", + "time", + "tracing-subscriber 0.3.23", +] + [[package]] name = "tracing-attributes" version = "0.1.31" @@ -8364,6 +8596,82 @@ dependencies = [ "tracing", ] +[[package]] +name = "tracing-gelf" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c0170f1bf67b749d4377c2da1d99d6e722600051ee53870cfb6f618611e29e" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "hostname", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tokio-util", + "tracing-core", + "tracing-futures", + "tracing-subscriber 0.3.23", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-loki" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3beec919fbdf99d719de8eda6adae3281f8a5b71ae40431f44dc7423053d34" +dependencies = [ + "loki-api", + "reqwest", + "serde", + "serde_json", + "snap", + "tokio", + "tokio-stream", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", + "tracing-subscriber 0.3.23", + "url", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ac28f2d093c6c477eaa76b23525478f38de514fa9aeb1285738d4b97a9552fc" +dependencies = [ + "js-sys", + "opentelemetry", + "smallvec", + "tracing", + "tracing-core", + "tracing-subscriber 0.3.23", + "web-time", +] + +[[package]] +name = "tracing-serde" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" +dependencies = [ + "serde", + "tracing-core", +] + [[package]] name = "tracing-subscriber" version = "0.2.25" @@ -8373,6 +8681,24 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + [[package]] name = "triomphe" version = "0.1.15" diff --git a/Cargo.toml b/Cargo.toml index 1d9aa707..45b52b2a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -120,11 +120,11 @@ tokio-retry = "0.3.0" schemars = "1.2" async-stream = "0.3.6" -logos-blockchain-common-http-client = { git = "https://github.com/logos-blockchain/logos-blockchain.git" } -logos-blockchain-key-management-system-service = { git = "https://github.com/logos-blockchain/logos-blockchain.git" } -logos-blockchain-core = { git = "https://github.com/logos-blockchain/logos-blockchain.git" } -logos-blockchain-chain-broadcast-service = { git = "https://github.com/logos-blockchain/logos-blockchain.git" } -logos-blockchain-chain-service = { git = "https://github.com/logos-blockchain/logos-blockchain.git" } +logos-blockchain-common-http-client = { git = "https://github.com/logos-blockchain/logos-blockchain.git", rev = "44c9513a1525372b725ba1010169d04ab00768b5" } +logos-blockchain-key-management-system-service = { git = "https://github.com/logos-blockchain/logos-blockchain.git", rev = "44c9513a1525372b725ba1010169d04ab00768b5" } +logos-blockchain-core = { git = "https://github.com/logos-blockchain/logos-blockchain.git", rev = "44c9513a1525372b725ba1010169d04ab00768b5" } +logos-blockchain-chain-broadcast-service = { git = "https://github.com/logos-blockchain/logos-blockchain.git", rev = "44c9513a1525372b725ba1010169d04ab00768b5" } +logos-blockchain-chain-service = { git = "https://github.com/logos-blockchain/logos-blockchain.git", rev = "44c9513a1525372b725ba1010169d04ab00768b5" } rocksdb = { version = "0.24.0", default-features = false, features = [ "snappy", diff --git a/bedrock/cfgsync.yaml b/bedrock/cfgsync.yaml index e09fe586..9512e4d2 100644 --- a/bedrock/cfgsync.yaml +++ b/bedrock/cfgsync.yaml @@ -1,12 +1,23 @@ port: 4400 -n_hosts: 4 +n_hosts: 1 timeout: 10 +faucet_settings: + enabled: false + +deployment_settings_storage_path: deployment-settings.yaml + +entropy_file: /etc/logos-blockchain/test_entropy + +mode: Setup + # Tracing tracing_settings: - logger: Stdout + logger: + stdout: true + stderr: true tracing: None filter: None metrics: None console: None - level: DEBUG + level: Debug diff --git a/bedrock/docker-compose.yml b/bedrock/docker-compose.yml index 4f85bf25..ce231530 100644 --- a/bedrock/docker-compose.yml +++ b/bedrock/docker-compose.yml @@ -1,14 +1,15 @@ services: cfgsync: - image: ghcr.io/logos-blockchain/logos-blockchain@sha256:000982e751dfd346ca5346b8025c685fc3abc585079c59cde3bde7fd63100657 + image: ghcr.io/logos-blockchain/logos-blockchain@sha256:093d0319a366a5b7b7db1a29fd54510dea37336f24accbda6d5d1b94d15fb64b volumes: - ./scripts:/etc/logos-blockchain/scripts - ./cfgsync.yaml:/etc/logos-blockchain/cfgsync.yaml:z + - ./test_entropy:/etc/logos-blockchain/test_entropy:z entrypoint: /etc/logos-blockchain/scripts/run_cfgsync.sh logos-blockchain-node-0: - image: ghcr.io/logos-blockchain/logos-blockchain@sha256:000982e751dfd346ca5346b8025c685fc3abc585079c59cde3bde7fd63100657 + image: ghcr.io/logos-blockchain/logos-blockchain@sha256:093d0319a366a5b7b7db1a29fd54510dea37336f24accbda6d5d1b94d15fb64b ports: - "${PORT:-8080}:18080/tcp" volumes: @@ -18,29 +19,3 @@ services: - cfgsync entrypoint: /etc/logos-blockchain/scripts/run_logos_blockchain_node.sh - logos-blockchain-node-1: - image: ghcr.io/logos-blockchain/logos-blockchain@sha256:000982e751dfd346ca5346b8025c685fc3abc585079c59cde3bde7fd63100657 - volumes: - - ./scripts:/etc/logos-blockchain/scripts - - ./kzgrs_test_params:/kzgrs_test_params:z - depends_on: - - cfgsync - entrypoint: /etc/logos-blockchain/scripts/run_logos_blockchain_node.sh - - logos-blockchain-node-2: - image: ghcr.io/logos-blockchain/logos-blockchain@sha256:000982e751dfd346ca5346b8025c685fc3abc585079c59cde3bde7fd63100657 - volumes: - - ./scripts:/etc/logos-blockchain/scripts - - ./kzgrs_test_params:/kzgrs_test_params:z - depends_on: - - cfgsync - entrypoint: /etc/logos-blockchain/scripts/run_logos_blockchain_node.sh - - logos-blockchain-node-3: - image: ghcr.io/logos-blockchain/logos-blockchain@sha256:000982e751dfd346ca5346b8025c685fc3abc585079c59cde3bde7fd63100657 - volumes: - - ./scripts:/etc/logos-blockchain/scripts - - ./kzgrs_test_params:/kzgrs_test_params:z - depends_on: - - cfgsync - entrypoint: /etc/logos-blockchain/scripts/run_logos_blockchain_node.sh diff --git a/bedrock/scripts/run_logos_blockchain_node.sh b/bedrock/scripts/run_logos_blockchain_node.sh index e318ab4a..1d326f22 100755 --- a/bedrock/scripts/run_logos_blockchain_node.sh +++ b/bedrock/scripts/run_logos_blockchain_node.sh @@ -9,5 +9,21 @@ export CFG_FILE_PATH="/config.yaml" \ LOG_LEVEL="INFO" \ POL_PROOF_DEV_MODE=true -/usr/bin/logos-blockchain-cfgsync-client && \ - exec /usr/bin/logos-blockchain-node /config.yaml +/usr/bin/logos-blockchain-cfgsync-client + +# Download deployment settings generated by cfgsync +curl -sf "${CFG_SERVER_ADDR}/deployment-settings" -o /deployment-settings.yaml + +# Single-node test setup: bump slot_activation_coeff from 1/10 to 1/2 so blocks +# (and LIB) advance ~5x faster, keeping the indexer integration test within budget. +# Safe with 1 node since there are no reorgs. +# Range-based sed: within the 4 lines after `slot_activation_coeff:`, rewrite any +# `denominator: ` to `denominator: 2` regardless of field order or spacing. +sed -i '/slot_activation_coeff:/,+4 s/denominator: [0-9]\+/denominator: 2/' /deployment-settings.yaml + +# Lower security_param so finalization (LIB) lag is shorter — the indexer only +# sees finalized blocks, so a smaller security_param makes inscriptions visible +# to the indexer much sooner. +sed -i 's/security_param: [0-9]\+/security_param: 10/' /deployment-settings.yaml + +exec /usr/bin/logos-blockchain-node /config.yaml --deployment /deployment-settings.yaml diff --git a/bedrock/test_entropy b/bedrock/test_entropy new file mode 100644 index 00000000..314128ee --- /dev/null +++ b/bedrock/test_entropy @@ -0,0 +1 @@ +deterministic-lez-test-entropy-seed-do-not-use-in-production \ No newline at end of file diff --git a/indexer/core/src/lib.rs b/indexer/core/src/lib.rs index 53d0654e..10e0834a 100644 --- a/indexer/core/src/lib.rs +++ b/indexer/core/src/lib.rs @@ -144,7 +144,22 @@ impl IndexerCore { info!("Parsed {} L2 blocks with ids {:?}", l2_block_vec.len(), l2_blocks_parsed_ids); for l2_block in l2_block_vec { - self.store.put_block(l2_block.clone(), l1_header).await?; + // TODO: proper fix is to make the sequencer's genesis include a + // trailing `clock_invocation(0)` (and have the indexer's + // `open_db_with_genesis` not pre-apply state transitions) so the + // inscribed genesis can flow through `put_block` like any other + // block. For now we skip re-applying it. + // + // The channel-start (block_id == 1) is the sequencer's genesis + // inscription that we re-discover during initial search. The + // indexer already has its own locally-constructed genesis in + // the store from `open_db_with_genesis`, so re-applying the + // inscribed copy is both redundant and would fail the strict + // block validation in `put_block` (the inscribed genesis lacks + // the trailing clock invocation). + if l2_block.header.block_id != 1 { + self.store.put_block(l2_block.clone(), l1_header).await?; + } yield Ok(l2_block); } diff --git a/integration_tests/src/config.rs b/integration_tests/src/config.rs index 1dd726eb..c4718f71 100644 --- a/integration_tests/src/config.rs +++ b/integration_tests/src/config.rs @@ -211,7 +211,7 @@ pub fn sequencer_config( max_block_size, mempool_max_size, block_create_timeout, - retry_pending_blocks_timeout: Duration::from_mins(2), + retry_pending_blocks_timeout: Duration::from_secs(5), initial_public_accounts: Some(initial_data.sequencer_initial_public_accounts()), initial_private_accounts: Some(initial_data.sequencer_initial_private_accounts()), signing_key: [37; 32], diff --git a/integration_tests/tests/indexer.rs b/integration_tests/tests/indexer.rs index 147cadec..0aef4a42 100644 --- a/integration_tests/tests/indexer.rs +++ b/integration_tests/tests/indexer.rs @@ -17,27 +17,52 @@ use nssa::AccountId; use tokio::test; use wallet::cli::{Command, programs::native_token_transfer::AuthTransferSubcommand}; -/// Timeout in milliseconds to reliably await for block finalization. -const L2_TO_L1_TIMEOUT_MILLIS: u64 = 600_000; +/// Maximum time to wait for the indexer to catch up to the sequencer. +const L2_TO_L1_TIMEOUT_MILLIS: u64 = 180_000; + +/// Poll the indexer until its last finalized block id reaches the sequencer's +/// current last block id (and at least the genesis block has been advanced past), +/// or until [`L2_TO_L1_TIMEOUT_MILLIS`] elapses. Returns the last indexer block +/// id observed. +async fn wait_for_indexer_to_catch_up(ctx: &TestContext) -> u64 { + let timeout = Duration::from_millis(L2_TO_L1_TIMEOUT_MILLIS); + let mut last_ind: u64 = 1; + let inner = async { + loop { + let seq = sequencer_service_rpc::RpcClient::get_last_block_id(ctx.sequencer_client()) + .await + .unwrap_or(0); + let ind = ctx + .indexer_client() + .get_last_finalized_block_id() + .await + .unwrap_or(1); + last_ind = ind; + if ind >= seq && ind > 1 { + info!("Indexer caught up: seq={seq}, ind={ind}"); + return ind; + } + tokio::time::sleep(Duration::from_secs(2)).await; + } + }; + tokio::time::timeout(timeout, inner) + .await + .unwrap_or_else(|_| { + info!("Indexer catch-up timed out: ind={last_ind}"); + last_ind + }) +} #[test] async fn indexer_test_run() -> Result<()> { let ctx = TestContext::new().await?; - // RUN OBSERVATION - tokio::time::sleep(std::time::Duration::from_millis(L2_TO_L1_TIMEOUT_MILLIS)).await; + let last_block_indexer = wait_for_indexer_to_catch_up(&ctx).await; let last_block_seq = sequencer_service_rpc::RpcClient::get_last_block_id(ctx.sequencer_client()).await?; info!("Last block on seq now is {last_block_seq}"); - - let last_block_indexer = ctx - .indexer_client() - .get_last_finalized_block_id() - .await - .unwrap(); - info!("Last block on ind now is {last_block_indexer}"); assert!(last_block_indexer > 1); @@ -49,15 +74,8 @@ async fn indexer_test_run() -> Result<()> { async fn indexer_block_batching() -> Result<()> { let ctx = TestContext::new().await?; - // WAIT info!("Waiting for indexer to parse blocks"); - tokio::time::sleep(std::time::Duration::from_millis(L2_TO_L1_TIMEOUT_MILLIS)).await; - - let last_block_indexer = ctx - .indexer_client() - .get_last_finalized_block_id() - .await - .unwrap(); + let last_block_indexer = wait_for_indexer_to_catch_up(&ctx).await; info!("Last block on ind now is {last_block_indexer}"); @@ -152,9 +170,8 @@ async fn indexer_state_consistency() -> Result<()> { info!("Successfully transferred privately to owned account"); - // WAIT info!("Waiting for indexer to parse blocks"); - tokio::time::sleep(std::time::Duration::from_millis(L2_TO_L1_TIMEOUT_MILLIS)).await; + wait_for_indexer_to_catch_up(&ctx).await; let acc1_ind_state = ctx .indexer_client() @@ -240,7 +257,7 @@ async fn indexer_state_consistency_with_labels() -> Result<()> { assert_eq!(acc_2_balance, 20100); info!("Waiting for indexer to parse blocks"); - tokio::time::sleep(std::time::Duration::from_millis(L2_TO_L1_TIMEOUT_MILLIS)).await; + wait_for_indexer_to_catch_up(&ctx).await; let acc1_ind_state = ctx .indexer_client() diff --git a/sequencer/core/src/block_settlement_client.rs b/sequencer/core/src/block_settlement_client.rs index 2f036b98..6b32f8de 100644 --- a/sequencer/core/src/block_settlement_client.rs +++ b/sequencer/core/src/block_settlement_client.rs @@ -3,7 +3,7 @@ use bedrock_client::BedrockClient; pub use common::block::Block; pub use logos_blockchain_core::mantle::{MantleTx, SignedMantleTx, ops::channel::MsgId}; use logos_blockchain_core::mantle::{ - Op, OpProof, Transaction as _, TxHash, ledger, + Op, OpProof, Transaction as _, ops::channel::{ChannelId, inscribe::InscriptionOp}, }; pub use logos_blockchain_key_management_system_service::keys::Ed25519Key; @@ -45,14 +45,11 @@ pub trait BlockSettlementClientTrait: Clone { }; let inscribe_op_id = inscribe_op.id(); - let ledger_tx = ledger::Tx::new(vec![], vec![]); - let inscribe_tx = MantleTx { ops: vec![Op::ChannelInscribe(inscribe_op)], - ledger_tx, // Altruistic test config - storage_gas_price: 0, - execution_gas_price: 0, + storage_gas_price: 0.into(), + execution_gas_price: 0.into(), }; let tx_hash = inscribe_tx.hash(); @@ -67,7 +64,6 @@ pub trait BlockSettlementClientTrait: Clone { let signed_mantle_tx = SignedMantleTx { ops_proofs: vec![OpProof::Ed25519Sig(signature)], - ledger_tx_proof: empty_ledger_signature(&tx_hash), mantle_tx: inscribe_tx, }; Ok((signed_mantle_tx, inscribe_op_id)) @@ -118,10 +114,3 @@ impl BlockSettlementClientTrait for BlockSettlementClient { &self.signing_key } } - -fn empty_ledger_signature( - tx_hash: &TxHash, -) -> logos_blockchain_key_management_system_service::keys::ZkSignature { - logos_blockchain_key_management_system_service::keys::ZkKey::multi_sign(&[], tx_hash.as_ref()) - .expect("multi-sign with empty key set works") -}