Skip to content

sdk%refac: switch from hex to hex-conservative#2

Merged
kwvg merged 4 commits intodashpay:developfrom
kwvg:hex_dep
May 5, 2026
Merged

sdk%refac: switch from hex to hex-conservative#2
kwvg merged 4 commits intodashpay:developfrom
kwvg:hex_dep

Conversation

@kwvg
Copy link
Copy Markdown
Collaborator

@kwvg kwvg commented May 5, 2026

Motivation

bitcoin-consensus-encoding (and rust-bitcoin at large) have settled for using the hex-conservative crate (source). This pull request drops usage of the hex crate and switches over to hex-conservative as part of general alignment with upstream dependency choice.

Additional Information

How Has This Been Tested?

cargo test --features full,_internal
cargo clippy --features full,_internal --tests
cargo fmt --check

Checklist

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional tests
  • I have made corresponding changes to the documentation (note: N/A)
  • I have assigned this pull request to a milestone (for repository code-owners and collaborators only)

@kwvg kwvg added this to the 0.1 milestone May 5, 2026
@kwvg kwvg self-assigned this May 5, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 5, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 375d542e-802c-4613-a054-3651f947153f

📥 Commits

Reviewing files that changed from the base of the PR and between 641e705 and 4478439.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (34)
  • pkgs/p2p_core/Cargo.toml
  • pkgs/p2p_core/tests/addrv2.rs
  • pkgs/pkc/Cargo.toml
  • pkgs/pkc/tests/bls_chia_aggregate.rs
  • pkgs/pkc/tests/bls_chia_dh.rs
  • pkgs/pkc/tests/bls_chia_keygen.rs
  • pkgs/pkc/tests/bls_chia_llmq.rs
  • pkgs/pkc/tests/bls_chia_ser.rs
  • pkgs/pkc/tests/bls_chia_sign.rs
  • pkgs/pkc/tests/bls_ietf_aggregate.rs
  • pkgs/pkc/tests/bls_ietf_dh.rs
  • pkgs/pkc/tests/bls_ietf_keygen.rs
  • pkgs/pkc/tests/bls_ietf_llmq.rs
  • pkgs/pkc/tests/bls_ietf_sign.rs
  • pkgs/pkc/tests/k256_keygen.rs
  • pkgs/pkc/tests/k256_sign.rs
  • pkgs/pow/Cargo.toml
  • pkgs/pow/tests/common/mod.rs
  • pkgs/primitives/Cargo.toml
  • pkgs/primitives/src/gov.rs
  • pkgs/primitives/tests/assetlock.rs
  • pkgs/primitives/tests/assetunlock.rs
  • pkgs/primitives/tests/blocks.rs
  • pkgs/primitives/tests/cbtx.rs
  • pkgs/primitives/tests/coinbase.rs
  • pkgs/primitives/tests/data.rs
  • pkgs/primitives/tests/mnhftx.rs
  • pkgs/primitives/tests/proposals.rs
  • pkgs/primitives/tests/proregtx.rs
  • pkgs/primitives/tests/proupregtx.rs
  • pkgs/primitives/tests/qctx.rs
  • pkgs/primitives/tests/spend.rs
  • pkgs/primitives/tests/triggers.rs
  • pkgs/primitives/tests/util/mod.rs
✅ Files skipped from review due to trivial changes (15)
  • pkgs/primitives/tests/proupregtx.rs
  • pkgs/primitives/tests/proregtx.rs
  • pkgs/primitives/tests/blocks.rs
  • pkgs/pow/tests/common/mod.rs
  • pkgs/primitives/tests/data.rs
  • pkgs/pkc/tests/bls_chia_keygen.rs
  • pkgs/pkc/tests/bls_chia_aggregate.rs
  • pkgs/pkc/tests/bls_ietf_llmq.rs
  • pkgs/pkc/tests/bls_chia_ser.rs
  • pkgs/pkc/tests/bls_ietf_keygen.rs
  • pkgs/primitives/src/gov.rs
  • pkgs/pkc/tests/k256_sign.rs
  • pkgs/primitives/tests/qctx.rs
  • pkgs/primitives/tests/util/mod.rs
  • pkgs/pow/Cargo.toml
🚧 Files skipped from review as they are similar to previous changes (12)
  • pkgs/pkc/tests/bls_ietf_dh.rs
  • pkgs/primitives/tests/assetunlock.rs
  • pkgs/primitives/tests/coinbase.rs
  • pkgs/primitives/tests/spend.rs
  • pkgs/pkc/tests/bls_chia_dh.rs
  • pkgs/pkc/tests/bls_chia_llmq.rs
  • pkgs/pkc/tests/bls_ietf_sign.rs
  • pkgs/pkc/tests/bls_ietf_aggregate.rs
  • pkgs/primitives/tests/triggers.rs
  • pkgs/primitives/tests/cbtx.rs
  • pkgs/p2p_core/tests/addrv2.rs
  • pkgs/primitives/tests/proposals.rs

📝 Walkthrough

Walkthrough

This pull request migrates all hex encoding/decoding operations across the codebase from the hex crate (v0.4) to hex-conservative (v0.3). Cargo.toml files in five packages are updated with the new dependency, and test files switch from hex::decode() and hex::encode() to hex_conservative::FromHex and hex_conservative::DisplayHex APIs.

Changes

Hex Crate Migration: hex → hex-conservative

Layer / File(s) Summary
Dependency Configuration
pkgs/p2p_core/Cargo.toml, pkgs/pkc/Cargo.toml, pkgs/pow/Cargo.toml, pkgs/primitives/Cargo.toml
Dev-dependency hex = "0.4" replaced with hex-conservative = "0.3" across four packages. In pkgs/primitives/, the main dependency is also updated with default-features = false, features = ["alloc"], and std feature includes hex-conservative/std.
Import Statements & API Traits
pkgs/p2p_core/tests/addrv2.rs, pkgs/pow/tests/common/mod.rs, pkgs/primitives/src/gov.rs, pkgs/primitives/tests/...
Added use hex_conservative::FromHex; for decoding operations and use hex_conservative::DisplayHex; for encoding operations across all affected test and source files.
Hex Decoding Replacements
pkgs/p2p_core/tests/addrv2.rs, pkgs/pow/tests/common/mod.rs, pkgs/primitives/tests/assetlock.rs, pkgs/primitives/tests/assetunlock.rs, pkgs/primitives/tests/blocks.rs, pkgs/primitives/tests/cbtx.rs, pkgs/primitives/tests/coinbase.rs, pkgs/primitives/tests/data.rs, pkgs/primitives/tests/mnhftx.rs, pkgs/primitives/tests/proposals.rs, pkgs/primitives/tests/proregtx.rs, pkgs/primitives/tests/proupregtx.rs, pkgs/primitives/tests/qctx.rs, pkgs/primitives/tests/spend.rs, pkgs/primitives/tests/triggers.rs, pkgs/primitives/tests/util/mod.rs
All instances of hex::decode(...) replaced with Vec::<u8>::from_hex(...) for parsing hex strings into byte vectors during test setup.
Hex Encoding Replacements
pkgs/pkc/tests/bls_chia_aggregate.rs, pkgs/pkc/tests/bls_chia_dh.rs, pkgs/pkc/tests/bls_chia_keygen.rs, pkgs/pkc/tests/bls_chia_llmq.rs, pkgs/pkc/tests/bls_chia_ser.rs, pkgs/pkc/tests/bls_chia_sign.rs, pkgs/pkc/tests/bls_ietf_aggregate.rs, pkgs/pkc/tests/bls_ietf_dh.rs, pkgs/pkc/tests/bls_ietf_keygen.rs, pkgs/pkc/tests/bls_ietf_llmq.rs, pkgs/pkc/tests/bls_ietf_sign.rs, pkgs/pkc/tests/k256_keygen.rs, pkgs/pkc/tests/k256_sign.rs
All instances of hex::encode(...) replaced with .to_lower_hex_string() method (via DisplayHex trait) for converting byte arrays to lowercase hex strings in corpus-driven KAT assertions.
Production Code Migration
pkgs/primitives/src/gov.rs
GovObject::hash() and GovObject::data_as_hex() now use self.data.to_lower_hex_string() instead of hex::encode(&self.data) for governance object data serialization.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically summarizes the main change: replacing the hex crate with hex-conservative across the codebase.
Description check ✅ Passed The description is directly related to the changeset, explaining the motivation for switching from hex to hex-conservative and providing testing details.
Docstring Coverage ✅ Passed Docstring coverage is 89.41% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 5, 2026

Warning

This pull request may have conflicts, please coordinate with the authors of these pull requests.

Potential conflicts

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (6)
pkgs/pkc/tests/bls_chia_llmq.rs (1)

208-213: 💤 Low value

Optional: avoid the intermediate Vec<u8> allocation when reversing sid_bytes

sid_bytes is [u8; 32]; copying and reversing in-place avoids the heap allocation. The same pattern appears at pkgs/pkc/tests/bls_ietf_llmq.rs Lines 255–260.

♻️ Proposed refactor
-      let sid_display = sid_bytes
-        .iter()
-        .copied()
-        .rev()
-        .collect::<Vec<u8>>()
-        .to_lower_hex_string();
+      let mut sid_reversed = sid_bytes;
+      sid_reversed.reverse();
+      let sid_display = sid_reversed.to_lower_hex_string();
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkgs/pkc/tests/bls_chia_llmq.rs` around lines 208 - 213, sid_display is built
by reversing sid_bytes into a Vec<u8> which causes an unnecessary heap
allocation; replace that allocation by reversing into a fixed-size stack array
(e.g., let mut rev = [0u8; 32]; for i in 0..32 { rev[i] = sid_bytes[31 - i]; })
and then call the same hex conversion (to_lower_hex_string or hex::encode_lower)
on rev, updating the code that constructs sid_display (referencing sid_bytes and
sid_display) to use the stack buffer instead of collecting into Vec<u8>.
pkgs/primitives/Cargo.toml (1)

19-20: ⚡ Quick win

Same full = ["std", "serde"] guideline deviation as pkgs/script/Cargo.toml.

As per coding guidelines: "Feature layout must follow: default = [], std = [...], full = ["std"], serde = ["dep:serde"]."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkgs/primitives/Cargo.toml` around lines 19 - 20, The feature entries in
Cargo.toml deviate from the required layout: adjust the feature definitions so
they follow the scheme default = [], std = [...], full = ["std"], serde =
["dep:serde"]; specifically replace the current serde = ["dep:serde",
"dash-num/serde", "dash-script/serde", "dash-types/serde"] with serde =
["dep:serde"], ensure the std feature contains any platform/std subfeatures
(keep or add "dash-num/serde", "dash-script/serde", "dash-types/serde" under std
if intended), and change full = ["std"] instead of full = ["std", "serde"] so
that the features named serde and full match the guideline.
pkgs/script/Cargo.toml (1)

15-16: ⚡ Quick win

full = ["std", "serde"] deviates from the feature layout guideline.

The workspace guidelines mandate full = ["std"]. This PR changes full to ["std", "serde"] across multiple crates. If the intent is to make full the "kitchen sink" feature, the coding guideline itself should be updated to reflect the new convention.

As per coding guidelines: "Feature layout must follow: default = [], std = [...], full = ["std"], serde = ["dep:serde"]."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkgs/script/Cargo.toml` around lines 15 - 16, The Cargo feature layout was
changed incorrectly: the feature "full" should not include "serde"; change the
"full" feature back to ["std"] (remove "serde" from the "full" array), ensure
"serde" remains its own feature (serde = ["dep:serde", "dash-types/serde"] or
per crate convention), and keep the overall layout consistent with the guideline
(default = [], std = [...], full = ["std"], serde = ["dep:serde"]). Make these
edits to the feature definitions (the "full", "std", "serde", and "default"
feature entries) so the crate follows the workspace feature convention.
pkgs/num/src/serialize.rs (1)

38-44: 💤 Low value

Non-idiomatic while loop — prefer for range.

♻️ Proposed refactor
-  let mut i = 0;
-  while i < byte_len {
+  for i in 0..byte_len {
     let hi = hex_val(b[i * 2])?;
     let lo = hex_val(b[i * 2 + 1])?;
     out[byte_len - 1 - i] = (hi << 4) | lo;
-    i += 1;
   }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkgs/num/src/serialize.rs` around lines 38 - 44, Replace the manual while
loop with a Rust for-range to be more idiomatic: iterate i over 0..byte_len (or
use .enumerate() on an iterator) instead of the while, keep the body logic that
calls hex_val(b[i * 2]) and hex_val(b[i * 2 + 1]) and assigns out[byte_len - 1 -
i] = (hi << 4) | lo, and remove the explicit i += 1; update any mutable i
binding accordingly so behavior remains identical.
pkgs/p2p_core/Cargo.toml (1)

17-17: ⚡ Quick win

full should not include serde per feature-layout guidelines.

The stated feature layout mandates full = ["std"]. Including "serde" bundles an opt-in serialisation dependency into full, which callers may not want. Opt-in features (serde) should remain separately gated.

Note: pkgs/types/Cargo.toml follows the same full = ["std", "serde"] pattern — if this is intentional it warrants an explicit update to the guidelines; otherwise both crates need correcting.

🔧 Suggested fix
-full = ["std", "serde"]
+full = ["std"]

As per coding guidelines, "full = ["std"]" is the required feature-layout for all pkgs/*/Cargo.toml files.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkgs/p2p_core/Cargo.toml` at line 17, The crate's feature group 'full'
currently lists ["std", "serde"], but per project feature-layout rules 'full'
must only include "std"; remove "serde" from the 'full' array in the Cargo.toml
(the 'full' feature declaration) so serde remains an opt-in feature, and apply
the same change to the matching 'full' declaration in pkgs/types/Cargo.toml if
present.
pkgs/types/src/hex.rs (1)

107-156: 💤 Low value

Consider dispatching on is_human_readable() for future binary format compatibility.

The serde::serialize/deserialize functions and each wN submodule currently encode as lowercase-hex strings unconditionally. For non-human-readable formats (bincode, postcard, CBOR-binary), this still pays the hex-encoding cost and forces those formats to carry a string instead of raw bytes. Since these adapters use the serde(transparent) + serde(with = "...") pattern already in place, adding this dispatch is straightforward to do now and matches the conventional bitcoin-ecosystem pattern.

Sketch for the Vec<u8> adapter (the wN submodules would follow the same shape):

♻️ Proposed refactor
   /// Serializes bytes as a wire-order hex string.
   pub fn serialize<S: ::serde::Serializer>(data: &[u8], serializer: S) -> Result<S::Ok, S::Error> {
-    serializer.serialize_str(&data.to_lower_hex_string())
+    if serializer.is_human_readable() {
+      serializer.serialize_str(&data.to_lower_hex_string())
+    } else {
+      serializer.serialize_bytes(data)
+    }
   }

   /// Deserializes a hex string into bytes.
   pub fn deserialize<'de, D: ::serde::Deserializer<'de>>(deserializer: D) -> Result<Vec<u8>, D::Error> {
-    let s = <String as ::serde::Deserialize>::deserialize(deserializer)?;
-    Vec::<u8>::from_hex(&s).map_err(::serde::de::Error::custom)
+    if deserializer.is_human_readable() {
+      let s = <String as ::serde::Deserialize>::deserialize(deserializer)?;
+      Vec::<u8>::from_hex(&s).map_err(::serde::de::Error::custom)
+    } else {
+      <Vec<u8> as ::serde::Deserialize>::deserialize(deserializer)
+    }
   }

If JSON is the only intended consumer, feel free to defer — this is mainly to make the choice intentional before downstream crates pin the serialization schema.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkgs/types/src/hex.rs` around lines 107 - 156, The current
serde::serialize/deserialize functions and each wN::serialize/wN::deserialize
always encode as lowercase hex strings; change them to branch on
serializer.is_human_readable() / Deserializer::is_human_readable() so
human-readable formats use hex strings (existing to_lower_hex_string()/from_hex
paths) while non-human-readable formats serialize/deserialize raw bytes (e.g.
serializer.serialize_bytes / deserialize_bytes or direct Vec<u8>/ [u8; N]
deserialize paths). Update the top-level functions named serialize and
deserialize in the serde module and the identically named functions inside each
generated wN module to perform this dispatch so binary formats avoid the
hex-string cost.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pkgs/primitives/src/payload/proupregtx.rs`:
- Around line 9-19: The external import "dash_script::KeyId" is placed before
the internal crate imports; relocate the line so all internal imports (the
existing "use crate::..." lines such as DecodeError, Script, validation items,
wire, InputsHash, TxHash) remain grouped together and then add a blank line
followed by the external import "use dash_script::KeyId;" to match the header
order used in sibling files (e.g., prouprevtx.rs, cbtx.rs).

In `@pkgs/primitives/src/support.rs`:
- Around line 232-250: The Deserialize impl for DynBitset currently only checks
byte count; update it to also reject nonzero padding bits in the final byte
based on raw.num_bits. After computing num_bits (usize) and required bytes, if
num_bits % 8 != 0 compute bits_in_last = num_bits % 8 and mask = (1u8 <<
bits_in_last) - 1, then verify (raw.data[required - 1] & !mask) == 0; if not,
return serde::de::Error::custom describing "padding bits set" (include
raw.num_bits and the offending last byte) so the type cannot be deserialized
into an inconsistent DynBitset (fields: DynBitset::num_bits, DynBitset::data,
types: DynBitsetSerde, and behaviour referenced by count_ones(), get(),
iter_set_bits()).

---

Nitpick comments:
In `@pkgs/num/src/serialize.rs`:
- Around line 38-44: Replace the manual while loop with a Rust for-range to be
more idiomatic: iterate i over 0..byte_len (or use .enumerate() on an iterator)
instead of the while, keep the body logic that calls hex_val(b[i * 2]) and
hex_val(b[i * 2 + 1]) and assigns out[byte_len - 1 - i] = (hi << 4) | lo, and
remove the explicit i += 1; update any mutable i binding accordingly so behavior
remains identical.

In `@pkgs/p2p_core/Cargo.toml`:
- Line 17: The crate's feature group 'full' currently lists ["std", "serde"],
but per project feature-layout rules 'full' must only include "std"; remove
"serde" from the 'full' array in the Cargo.toml (the 'full' feature declaration)
so serde remains an opt-in feature, and apply the same change to the matching
'full' declaration in pkgs/types/Cargo.toml if present.

In `@pkgs/pkc/tests/bls_chia_llmq.rs`:
- Around line 208-213: sid_display is built by reversing sid_bytes into a
Vec<u8> which causes an unnecessary heap allocation; replace that allocation by
reversing into a fixed-size stack array (e.g., let mut rev = [0u8; 32]; for i in
0..32 { rev[i] = sid_bytes[31 - i]; }) and then call the same hex conversion
(to_lower_hex_string or hex::encode_lower) on rev, updating the code that
constructs sid_display (referencing sid_bytes and sid_display) to use the stack
buffer instead of collecting into Vec<u8>.

In `@pkgs/primitives/Cargo.toml`:
- Around line 19-20: The feature entries in Cargo.toml deviate from the required
layout: adjust the feature definitions so they follow the scheme default = [],
std = [...], full = ["std"], serde = ["dep:serde"]; specifically replace the
current serde = ["dep:serde", "dash-num/serde", "dash-script/serde",
"dash-types/serde"] with serde = ["dep:serde"], ensure the std feature contains
any platform/std subfeatures (keep or add "dash-num/serde", "dash-script/serde",
"dash-types/serde" under std if intended), and change full = ["std"] instead of
full = ["std", "serde"] so that the features named serde and full match the
guideline.

In `@pkgs/script/Cargo.toml`:
- Around line 15-16: The Cargo feature layout was changed incorrectly: the
feature "full" should not include "serde"; change the "full" feature back to
["std"] (remove "serde" from the "full" array), ensure "serde" remains its own
feature (serde = ["dep:serde", "dash-types/serde"] or per crate convention), and
keep the overall layout consistent with the guideline (default = [], std =
[...], full = ["std"], serde = ["dep:serde"]). Make these edits to the feature
definitions (the "full", "std", "serde", and "default" feature entries) so the
crate follows the workspace feature convention.

In `@pkgs/types/src/hex.rs`:
- Around line 107-156: The current serde::serialize/deserialize functions and
each wN::serialize/wN::deserialize always encode as lowercase hex strings;
change them to branch on serializer.is_human_readable() /
Deserializer::is_human_readable() so human-readable formats use hex strings
(existing to_lower_hex_string()/from_hex paths) while non-human-readable formats
serialize/deserialize raw bytes (e.g. serializer.serialize_bytes /
deserialize_bytes or direct Vec<u8>/ [u8; N] deserialize paths). Update the
top-level functions named serialize and deserialize in the serde module and the
identically named functions inside each generated wN module to perform this
dispatch so binary formats avoid the hex-string cost.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: b82dd8a4-1022-4b01-a937-d1dfeaf6cde3

📥 Commits

Reviewing files that changed from the base of the PR and between a7b3a78 and 641e705.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (85)
  • .github/workflows/pkg_p2p_core.yml
  • .github/workflows/pkg_pkc.yml
  • .github/workflows/pkg_primitives.yml
  • .github/workflows/pkg_script.yml
  • .github/workflows/pkg_types.yml
  • Cargo.toml
  • README.md
  • pkgs/num/Cargo.toml
  • pkgs/num/src/arith256.rs
  • pkgs/num/src/compact.rs
  • pkgs/num/src/hash.rs
  • pkgs/num/src/lib.rs
  • pkgs/num/src/serialize.rs
  • pkgs/num/src/util.rs
  • pkgs/num/tests/serde.rs
  • pkgs/p2p_core/Cargo.toml
  • pkgs/p2p_core/src/primitives/filter_type.rs
  • pkgs/p2p_core/src/primitives/governance.rs
  • pkgs/p2p_core/src/primitives/mn_list.rs
  • pkgs/p2p_core/src/primitives/protocol_version.rs
  • pkgs/p2p_core/tests/addrv2.rs
  • pkgs/pkc/Cargo.toml
  • pkgs/pkc/src/bls_chia/pk.rs
  • pkgs/pkc/src/bls_chia/sig.rs
  • pkgs/pkc/src/bls_ietf/pk.rs
  • pkgs/pkc/src/bls_ietf/sig.rs
  • pkgs/pkc/src/common/bls/mod.rs
  • pkgs/pkc/src/k256/pk.rs
  • pkgs/pkc/src/k256/sig.rs
  • pkgs/pkc/tests/bls_chia_aggregate.rs
  • pkgs/pkc/tests/bls_chia_dh.rs
  • pkgs/pkc/tests/bls_chia_keygen.rs
  • pkgs/pkc/tests/bls_chia_llmq.rs
  • pkgs/pkc/tests/bls_chia_ser.rs
  • pkgs/pkc/tests/bls_chia_sign.rs
  • pkgs/pkc/tests/bls_ietf_aggregate.rs
  • pkgs/pkc/tests/bls_ietf_dh.rs
  • pkgs/pkc/tests/bls_ietf_keygen.rs
  • pkgs/pkc/tests/bls_ietf_llmq.rs
  • pkgs/pkc/tests/bls_ietf_sign.rs
  • pkgs/pkc/tests/k256_keygen.rs
  • pkgs/pkc/tests/k256_sign.rs
  • pkgs/pow/Cargo.toml
  • pkgs/pow/tests/common/mod.rs
  • pkgs/primitives/Cargo.toml
  • pkgs/primitives/src/gov.rs
  • pkgs/primitives/src/lib.rs
  • pkgs/primitives/src/outpoint.rs
  • pkgs/primitives/src/payload/assetunlock.rs
  • pkgs/primitives/src/payload/cbtx.rs
  • pkgs/primitives/src/payload/mnhftx.rs
  • pkgs/primitives/src/payload/proregtx.rs
  • pkgs/primitives/src/payload/proupregtx.rs
  • pkgs/primitives/src/payload/prouprevtx.rs
  • pkgs/primitives/src/payload/proupservtx.rs
  • pkgs/primitives/src/payload/quorum.rs
  • pkgs/primitives/src/script.rs
  • pkgs/primitives/src/serialize.rs
  • pkgs/primitives/src/support.rs
  • pkgs/primitives/src/transaction.rs
  • pkgs/primitives/src/tx_in.rs
  • pkgs/primitives/src/tx_out.rs
  • pkgs/primitives/src/types/mod.rs
  • pkgs/primitives/src/validation.rs
  • pkgs/primitives/tests/assetlock.rs
  • pkgs/primitives/tests/assetunlock.rs
  • pkgs/primitives/tests/blocks.rs
  • pkgs/primitives/tests/cbtx.rs
  • pkgs/primitives/tests/coinbase.rs
  • pkgs/primitives/tests/data.rs
  • pkgs/primitives/tests/mnhftx.rs
  • pkgs/primitives/tests/proposals.rs
  • pkgs/primitives/tests/proregtx.rs
  • pkgs/primitives/tests/proupregtx.rs
  • pkgs/primitives/tests/qctx.rs
  • pkgs/primitives/tests/spend.rs
  • pkgs/primitives/tests/triggers.rs
  • pkgs/primitives/tests/util/mod.rs
  • pkgs/script/Cargo.toml
  • pkgs/script/src/key_id.rs
  • pkgs/types/Cargo.toml
  • pkgs/types/src/hex.rs
  • pkgs/types/src/lib.rs
  • pkgs/types/src/uint.rs
  • unconv.toml
💤 Files with no reviewable changes (3)
  • pkgs/primitives/src/types/mod.rs
  • pkgs/pkc/src/common/bls/mod.rs
  • pkgs/num/src/compact.rs

Comment thread pkgs/primitives/src/payload/proupregtx.rs
Comment thread pkgs/primitives/src/support.rs
@kwvg kwvg merged commit 79d9be0 into dashpay:develop May 5, 2026
48 of 49 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant