From d2f4b6a8975306c851777022fe5d790c18100df7 Mon Sep 17 00:00:00 2001 From: arvidn Date: Mon, 1 Jun 2026 13:24:17 +0200 Subject: [PATCH 1/3] enable new cost model --- crates/chia-consensus/src/flags.rs | 7 +++++++ crates/chia-consensus/src/spendbundle_validation.rs | 1 + 2 files changed, 8 insertions(+) diff --git a/crates/chia-consensus/src/flags.rs b/crates/chia-consensus/src/flags.rs index c8844f4b3..766c85fdf 100644 --- a/crates/chia-consensus/src/flags.rs +++ b/crates/chia-consensus/src/flags.rs @@ -28,6 +28,7 @@ bitflags! { const ENABLE_SHA256_TREE = 0x0400; const ENABLE_SECP_OPS = 0x0800; const MALACHITE = 0x1000; + const NEW_COST_MODEL = 0x2000; // Consensus flags /// Skip validating AGG_SIG / condition signatures. @@ -98,6 +99,9 @@ impl ConsensusFlags { if clvm.contains(ClvmFlags::MALACHITE) { out = out.union(ConsensusFlags::MALACHITE); } + if clvm.contains(ClvmFlags::NEW_COST_MODEL) { + out = out.union(ConsensusFlags::NEW_COST_MODEL); + } out } @@ -139,6 +143,9 @@ impl ConsensusFlags { if self.contains(ConsensusFlags::MALACHITE) { out.insert(ClvmFlags::MALACHITE); } + if self.contains(ConsensusFlags::NEW_COST_MODEL) { + out.insert(ClvmFlags::NEW_COST_MODEL); + } out } } diff --git a/crates/chia-consensus/src/spendbundle_validation.rs b/crates/chia-consensus/src/spendbundle_validation.rs index b603ab6b2..9c983e453 100644 --- a/crates/chia-consensus/src/spendbundle_validation.rs +++ b/crates/chia-consensus/src/spendbundle_validation.rs @@ -87,6 +87,7 @@ pub fn get_flags_for_height_and_constants( flags |= ConsensusFlags::ENABLE_KECCAK_OPS_OUTSIDE_GUARD | ConsensusFlags::COST_CONDITIONS | ConsensusFlags::ENABLE_SECP_OPS + | ConsensusFlags::NEW_COST_MODEL | ConsensusFlags::RELAXED_BLS; } From 6fb8bdb1c332e95f405025b36e39a585129957ae Mon Sep 17 00:00:00 2001 From: arvidn Date: Wed, 5 Aug 2026 20:50:13 +0200 Subject: [PATCH 2/3] bump clvmrs --- Cargo.lock | 8 ++++---- Cargo.toml | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 745195eb3..dc3167d23 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -797,9 +797,9 @@ dependencies = [ [[package]] name = "clvm-fuzzing" -version = "0.18.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfac8b7af2c7202157ce59439a63882da45492dc414a7e4e15b8590b6d08b88" +checksum = "de29478366d9c96ef90eb2690d1faef52805f5586701f4e7d079fa60cba14d5c" dependencies = [ "anyhow", "arbitrary", @@ -862,9 +862,9 @@ dependencies = [ [[package]] name = "clvmr" -version = "0.18.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05a2651e364d36ec9a9848c819e763c892477317b5887fa140085ae79fc0bc4f" +checksum = "3a9d2342687e3210c4b7f8556966ee80e4106d451dd4d8b14b1e446412c640a4" dependencies = [ "bitflags", "bitvec", diff --git a/Cargo.toml b/Cargo.toml index ce8f0cae7..eb1127442 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -143,8 +143,8 @@ chia-puzzle-types-fuzz = { path = "./crates/chia-puzzle-types/fuzz", version = " clvm-traits-fuzz = { path = "./crates/clvm-traits/fuzz", version = "0.46.0" } clvm-utils-fuzz = { path = "./crates/clvm-utils/fuzz", version = "0.46.0" } blst = { version = "0.3.16", features = ["portable"] } -clvmr = "0.18.0" -clvm-fuzzing = "0.18.0" +clvmr = "0.19.0" +clvm-fuzzing = "0.19.0" syn = "2.0.101" quote = "1.0.40" proc-macro2 = "1.0.95" From ddefb84c2829c5f269cc8989b5ffaab460c966a9 Mon Sep 17 00:00:00 2001 From: arvidn Date: Wed, 5 Aug 2026 20:52:45 +0200 Subject: [PATCH 3/3] update get_flags_for_height_and_constants --- crates/chia-consensus/src/flags.rs | 7 +++++++ crates/chia-consensus/src/spendbundle_validation.rs | 7 ++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/crates/chia-consensus/src/flags.rs b/crates/chia-consensus/src/flags.rs index 766c85fdf..43be2c09b 100644 --- a/crates/chia-consensus/src/flags.rs +++ b/crates/chia-consensus/src/flags.rs @@ -23,6 +23,7 @@ bitflags! { const RELAXED_BLS = 0x0008; const LIMIT_SOFTFORK = 0x0010; const ENABLE_GC = 0x0020; + const LIMITS = 0x0040; const ENABLE_KECCAK_OPS_OUTSIDE_GUARD = 0x0100; const DISABLE_OP = 0x0200; const ENABLE_SHA256_TREE = 0x0400; @@ -102,6 +103,9 @@ impl ConsensusFlags { if clvm.contains(ClvmFlags::NEW_COST_MODEL) { out = out.union(ConsensusFlags::NEW_COST_MODEL); } + if clvm.contains(ClvmFlags::LIMITS) { + out = out.union(ConsensusFlags::LIMITS); + } out } @@ -146,6 +150,9 @@ impl ConsensusFlags { if self.contains(ConsensusFlags::NEW_COST_MODEL) { out.insert(ClvmFlags::NEW_COST_MODEL); } + if self.contains(ConsensusFlags::LIMITS) { + out.insert(ClvmFlags::LIMITS); + } out } } diff --git a/crates/chia-consensus/src/spendbundle_validation.rs b/crates/chia-consensus/src/spendbundle_validation.rs index 9c983e453..a3153f7b2 100644 --- a/crates/chia-consensus/src/spendbundle_validation.rs +++ b/crates/chia-consensus/src/spendbundle_validation.rs @@ -89,10 +89,11 @@ pub fn get_flags_for_height_and_constants( | ConsensusFlags::ENABLE_SECP_OPS | ConsensusFlags::NEW_COST_MODEL | ConsensusFlags::RELAXED_BLS; - } - - if prev_tx_height >= constants.soft_fork8_height { + } else if prev_tx_height >= constants.soft_fork8_height { + // once the hard fork activates, we no longer apply the limits, nor + // disable the operators flags |= ConsensusFlags::DISABLE_OP; + flags |= ConsensusFlags::LIMITS; } if prev_tx_height >= constants.soft_fork9_height {