Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
eb64580
feat(validator): extract (and reconstruct) state diff without consumi…
t00ts Nov 3, 2025
44d5445
refactor(validator): move to single executor architecture in `Validat…
t00ts Nov 3, 2025
f53cc9e
refactor(validator): remove `LazyBlockExecutor`
t00ts Nov 3, 2025
e90854f
chore: fix clippy
t00ts Nov 3, 2025
09bfe9c
test(validator): fix + polish existing tests, remove leftover redunda…
t00ts Nov 4, 2025
9c28355
refactor(validator): deprecate `BatchExecutionState` in favor of simp…
t00ts Nov 4, 2025
e8aa298
test(consensus): add more failure injection points
CHr15F0x Oct 29, 2025
1233c98
chore: clippy
CHr15F0x Oct 31, 2025
fcdd72a
doc: add todos
CHr15F0x Oct 31, 2025
cdf9677
fixup! test(consensus): add more failure injection points
CHr15F0x Oct 31, 2025
6e90d0d
test: fixup justfile
CHr15F0x Nov 3, 2025
38a379a
chore: clippy
CHr15F0x Nov 3, 2025
9bc04d1
doc: update docs for consensus test
CHr15F0x Nov 4, 2025
8db3d1b
test(consensus): ignore cases that fail for now
CHr15F0x Nov 4, 2025
125cb17
feat(config): add history depth to config
CHr15F0x Nov 4, 2025
4928202
feat(storage): migrate CASM definitions to include block number
kkovaacs Oct 31, 2025
8769a94
feat: add migrated compiled class support
kkovaacs Oct 31, 2025
fd20d27
feat(common/state_update): fix state diff commitment calculation
kkovaacs Nov 4, 2025
e24779f
feat(rpc/v10): add migrated_compiled_classes to StateUpdate DTO
kkovaacs Nov 4, 2025
02bc396
chore(rpc/fixtures): upgrade mainnet fixture
kkovaacs Nov 4, 2025
591ae06
fix(storage/state_update): fix reverse diff calculation for CASM clas…
kkovaacs Nov 5, 2025
1f32bec
chore: update CHANGELOG
kkovaacs Nov 5, 2025
e2ba665
fix(executor): implement new method in StateReader
kkovaacs Nov 5, 2025
3b02c1e
fix(rpc/v10): add `migrated_compiled_classes` to state diff DTO
kkovaacs Nov 5, 2025
dac37ec
fix(consensus): add migrated compiled classes to finalized block DTO
kkovaacs Nov 6, 2025
3236408
Merge pull request #3091 from eqlabs/krisztian/casm-hash-migration
kkovaacs Nov 6, 2025
1836e9b
feat: add example for recomputing CASM hashes
kkovaacs Nov 6, 2025
00418b5
chore: remove commented code
CHr15F0x Nov 6, 2025
2deabd8
Merge pull request #3085 from eqlabs/chris/more-fault-injections
CHr15F0x Nov 6, 2025
860ed48
feat(storage): add pre-computed CASM v2 hashes
kkovaacs Nov 6, 2025
195feea
chore(rpc): migrate database fixture
kkovaacs Nov 6, 2025
56b7135
feat(executor/state_reader): use pre-computed Blak
kkovaacs Nov 6, 2025
83837e7
feat: compute Blake2 CASM hash during sync
kkovaacs Nov 6, 2025
92a330d
feat(executor): add cache for CASM v2 hash lookups
kkovaacs Nov 7, 2025
1fe45df
Merge pull request #3094 from eqlabs/krisztian/casm-v2-pre-computation
kkovaacs Nov 10, 2025
48a985a
Merge pull request #3089 from eqlabs/t00ts/batch-exec-optimization
t00ts Nov 11, 2025
670d8c2
feat(validator): add support for deferred `TransactionsFin`
t00ts Nov 7, 2025
38114c5
fix(validator): treat `TransactionsFin` as a count value, not index
t00ts Nov 7, 2025
1343afe
feat(validator): final set of batch execution tests
t00ts Nov 7, 2025
3e1d006
chore: rebase leftovers (?)
t00ts Nov 11, 2025
d5b7cfc
Merge pull request #3092 from eqlabs/t00ts/deferred-transactionsfin
t00ts Nov 11, 2025
d0e53e2
fix(validator): executor not required on empty proposals
t00ts Nov 11, 2025
ee14fee
Merge pull request #3095 from eqlabs/t00ts/fix-empty-proposals
t00ts Nov 11, 2025
1ec09fd
chore: bump version to 0.21.0
kkovaacs Nov 11, 2025
cdb47e9
Merge pull request #3097 from eqlabs/release/v0.21.0
kkovaacs Nov 11, 2025
d95d7d3
Merge branch 'main' of github.com:karnotxyz/pathfinder into fix/l3
prkpndy Dec 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ More expansive patch notes and explanations may be found in the specific [pathfi
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## Unreleased
## [0.21.0] - 2025-11-11

### Added

- Support for Starknet 0.14.1 networks.

### Fixed

Expand Down
66 changes: 40 additions & 26 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
[workspace]
members = [
"crates/block-hashes",
"crates/casm-hashes",
"crates/class-hash",
"crates/common",
"crates/compiler",
Expand Down Expand Up @@ -33,7 +34,7 @@ exclude = ["crates/load-test", "utils/pathfinder-probe"]
resolver = "2"

[workspace.package]
version = "0.20.5"
version = "0.21.0"
edition = "2021"
license = "MIT OR Apache-2.0"
rust-version = "1.88"
Expand Down
11 changes: 11 additions & 0 deletions crates/casm-hashes/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[package]
name = "pathfinder-casm-hashes"
version = { workspace = true }
authors = { workspace = true }
edition = { workspace = true }
license = { workspace = true }
rust-version = { workspace = true }

[dependencies]
pathfinder-common = { path = "../common" }
pathfinder-crypto = { path = "../crypto" }
Binary file not shown.
Binary file not shown.
48 changes: 48 additions & 0 deletions crates/casm-hashes/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
use std::collections::HashMap;
use std::sync::LazyLock;

use pathfinder_common::{CasmHash, ClassHash};
use pathfinder_crypto::Felt;

static PRECOMPUTED_CASM_V2_HASHES: LazyLock<HashMap<ClassHash, CasmHash>> = LazyLock::new(|| {
let mut h = HashMap::new();

let mainnet_casm_hashes_v2 = include_bytes!("../fixtures/mainnet-casm-v2-hashes.bin");
for chunk in mainnet_casm_hashes_v2.chunks_exact(64) {
let class_hash = ClassHash(
Felt::from_be_slice(&chunk[0..32])
.expect("Invalid class hash in precomputed CASM v2 hashes"),
);
let casm_hash = CasmHash(
Felt::from_be_slice(&chunk[32..64])
.expect("Invalid CASM hash in precomputed CASM v2 hashes"),
);
h.insert(class_hash, casm_hash);
}

let sepolia_testnet_casm_hashes_v2 =
include_bytes!("../fixtures/testnet-sepolia-casm-v2-hashes.bin");
for chunk in sepolia_testnet_casm_hashes_v2.chunks_exact(64) {
let class_hash = ClassHash(
Felt::from_be_slice(&chunk[0..32])
.expect("Invalid class hash in precomputed CASM v2 hashes"),
);
let casm_hash = CasmHash(
Felt::from_be_slice(&chunk[32..64])
.expect("Invalid CASM hash in precomputed CASM v2 hashes"),
);
h.insert(class_hash, casm_hash);
}

h
});

/// Returns the precomputed CASM v2 hash for the given class hash, if it exists.
///
/// In Starknet 0.14.1 and later CASM hashes are computed using a new algorithm
/// (Blake2 hash). This function provides access to a set of precomputed CASM v2
/// hashes for known class hashes (generated from classes on Mainnet and Sepolia
/// testnet) to avoid the need for recomputation.
pub fn get_precomputed_casm_v2_hash(class_hash: &ClassHash) -> Option<&CasmHash> {
PRECOMPUTED_CASM_V2_HASHES.get(class_hash)
}
4 changes: 2 additions & 2 deletions crates/class-hash/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ categories = [

[dependencies]
anyhow = { workspace = true }
pathfinder-common = { version = "0.20.5", path = "../common" }
pathfinder-crypto = { version = "0.20.5", path = "../crypto" }
pathfinder-common = { version = "0.21.0", path = "../common" }
pathfinder-crypto = { version = "0.21.0", path = "../crypto" }
primitive-types = { workspace = true }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true, features = [
Expand Down
2 changes: 1 addition & 1 deletion crates/common/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ metrics = { workspace = true }
num-bigint = { workspace = true }
num-traits = "0.2"
paste = { workspace = true }
pathfinder-crypto = { version = "0.20.5", path = "../crypto" }
pathfinder-crypto = { version = "0.21.0", path = "../crypto" }
pathfinder-tagged = { version = "0.1.0", path = "../tagged" }
pathfinder-tagged-debug-derive = { version = "0.1.0", path = "../tagged-debug-derive" }
primitive-types = { workspace = true, features = ["serde"] }
Expand Down
Loading
Loading