Skip to content

Conversation

@KSlashh
Copy link
Collaborator

@KSlashh KSlashh commented Jul 3, 2025

No description provided.

hunterfarq and others added 29 commits April 3, 2025 03:47
* chore: fix array out-of-bounds error with index validation

* Update mmr_guest.rs

* Update header-chain/src/mmr_guest.rs

Co-authored-by: Aaron Feickert <66188213+AaronFeickert@users.noreply.github.com>

---------

Co-authored-by: Aaron Feickert <66188213+AaronFeickert@users.noreply.github.com>
* WIP: Bigint configuration

* feat: bigint transforms fuzzing

* test: bigint limb transforms fuzzing
-add: macro for cleaning, adjusted test parameter, and idiomatic cleanup

* clean: separate files and remove unncessary struct param

* chore: cargo fmt

* Revert "chore: cargo fmt"

This reverts commit 0ea384a.

* chore: cargo formatting error, remove single line enforcement

* chore: move stack element verify script to fuzz library
BitVM#282)

* Fix connector_b_leaf_2_script test for proper Taproot script verification

* Update connector_b.rs

* Update connector_b.rs

* fix cargofmt
* chore: remove paste macro

I simply transform `paste! { X }` into `X`. If the diff for this commit
is large, then git is having an issue. The `paste!` macro is used
elsewhere in the codebase, so I won't remove the dependency.

* chore: clippy

cargo clippy --fix --lib -p bitvm

* chore: replace static with const

* chore: Inline

* refactor: Replace macros with functions

Functions are easier to read and tools like `rustfmt` and `clippy` have
an easier time parsing them.

* refactor: clarify endianness

* doc: winternitz

* refactor: Rename "blocks" to "digits"

This commit renames "blocks" to "digits" in function signatures and
struct members. I used the opportunity to clearly separate lengths
in units of digits from lengths in units of bits.

This commit touches a lot of code. The Parameter struct is technically
public and changed by this commit. However, I argue that no one should
manually set up his parameters. Instead, everyone should use the
high-level methods for wots-hash, wots-blake and wots256, which are not
affected by this commit.

I plan to make the Parameter struct private in a follow-up PR.

* doc: address comments

Only changes to docstrings and parameter names.
No changes to public API.

* fix: documentation
* chore: Mark potential footgun

* feat: New WOTS API

* test: Add WOTS test vectors

The test vectors are generated directly in Rust, so we can add new
vectors or modify existing vectors in the future.

* refactor: Adapt bitvm crate to new WOTS API

Removes the dependency on the modules wots_api and signing_winternitz.

* refactor: adapt bridge to new wots api

Removes the dependency on wots_api.
Removing signing_winternitz turned out to be too much work, as it
touches a lot of code. In particular, the connector outputs handle
public keys for different message lengths in the same vector.
The bridge code can be refactored in the future if needed.

* refactor: Move winternitz_hash into signing_winternitz

signing_winternitz is the only place that calls winternitz_hash,
so why not combine the modules?

BLAKE3 switched from 20-byte WOTS signatures to Wots16 a while ago,
so I use the opportunity to remove the code for 20-byte WOTS.

* chore: Remove wots_api.rs

No more code depends on this, so it is safe to remove.

* fix: Address comments

* refactor: WinternitzSecret constructors

Deprecate from_string constructors. Add from_bytes as a safer
alternative.

* fix: Address comments

* fix: address comments

* fix: cargo fmt
* feat: add tmul for fp2 with 4 window stack len

* feat: add fp2_w4 in ss_mul to reduce script size

* feat: add w4 version of lc4_keep_elements

* chore: specify vec capactiy

* doc: add docs to new functions
@KSlashh KSlashh closed this Jul 3, 2025
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.