The tests for both `Script` and `ScriptBuf` `as_ref` and `as_mut` only
covered the `u8` impl.
Expand the tests to cover the `Self` impl as well.
The allow useless_asref is required to remove a clippy lint. Removing
the "useless" as_ref also removes the test coverage of the as_ref or
as_mut impl.
f268ca20c5 hashes: Add api test file (Tobin C. Harding)
Pull request description:
As we did for `units` and as part of the stabalization effort.
Add an `api` test module that verifies the public API for the `hashes` crate.
Close: #3927
ACKs for top commit:
apoelstra:
ACK f268ca20c5855c751df76eaaff333e31408a4d9e; successfully ran local tests
Tree-SHA512: d3c1675ba01d2d250c677a2d4b52c3a500417a50e9af40d6596c279cdb798aa96bf423de92492a83880377fa40f50bf906765123c6bc722799fd4786da372c1f
35ca48a85c primitives: Document script to/from bytes (Tobin C. Harding)
Pull request description:
The byte slice/vector in the to/from methods for the script types does not include the length prefix that is used when consensus encoding.
Add docs to make this more clear.
ACKs for top commit:
apoelstra:
ACK 35ca48a85cd90fc9c1b13da439177a4772c1c330; successfully ran local tests; yeah, I like this
Tree-SHA512: 6efeddfd8fe9e5bb32a6d40ca1a0fa3aa686047ad9f4cb865e3c70f8339cd39c18daa01441a1a5898300b1e73150b39c53d507af528830bbd68904148b65ef35
812c21e2e4 refactor: Replace fold with try_fold (yancy)
Pull request description:
The and_then combinator performs a kind of bitwise and operation on two Option types here. This is useful since the `checked` arithmetic returns an option thereby accumulating Option types. Therefore, either the checked arithmetic operation performs the addition of the unwrapped accumulator, or it returns None.
Instead of using `and_then` use the provided `try_fold` method which will short circuit on `None` when the checked arithmetic is used. Also, simplify the staring condition using `Amount:ZERO` since this is logically equivalent to using the first value if one exists.
Lastly, by using the built in `try_fold`, it's possible the performance will be improved by making use of the short circuit ability instead of evaluating each item even when the accumulator holds a None type.
ACKs for top commit:
apoelstra:
ACK 812c21e2e4a868046b44728c1a6209a866452820; successfully ran local tests
tcharding:
ACK 812c21e2e4
Tree-SHA512: 1cfcd4fa28e2b59daf3744bb5f654f65eb9853c5a36f747cb0859783e7e46c1d02ccb296612b75f7cca10782979ce052cd670c0f23c1030e0a347000d1f6df83
Not all the fields within `block::Header` implement `Display` however
a block header can reasonably be displayed by using 160 hex characters.
Implement `Display` for `block::Header` by printing the header in hex in
the same layout as we hash it in `block_hash`.
793920d6bf minor docstring fixups message.rs (Bilog WEB3)
Pull request description:
Please fix this error, thank you
ACKs for top commit:
apoelstra:
ACK 793920d6bf7437e6f4f24d794818e885094992d8; successfully ran local tests
Tree-SHA512: 5e152299ceab2962ac841a3935877a2264654e7f1d296c0486b2548f57f9cc9106590f6fc92b0a4adaba44d909457e932cd706e76ab814067c5972afa4d8ab93
Structs had various phrasings of titles.
Make the wording consistent by concisely stating what it is, instead of
what it does.
Make the wording of all error structs consistent.
The rest of the rustdocs use fee rate with no hyphen when using it in
normal language, i.e. not a function argument or the type.
Change it to match the others.
d0e1cd72fe chore: Fix the typos in the comments and variables (dufucun)
Pull request description:
Fix the typos in the comments and variables
ACKs for top commit:
apoelstra:
ACK d0e1cd72fec87276034476f1f28c62124cf63c25; successfully ran local tests
Tree-SHA512: 267d2b6b47e5a4f9466507e9dceb62ce94c848b3edefee65b85c3ce31560d1be880ef1c03ffd7dac54198f1f470695b70e06a505f91174f2990639bc20bf86e4
0498f7b7b7 Remove Option return from `minimal_non_dust` (jrakibi)
Pull request description:
Closes#4221
This removes the `Option` return type from `minimal_non_dust
Overflow is only possible in 2 cases:
- `dust_relay_fee` would need to be excessively high
- script size would have to exceed ~6.15 × 10¹⁵ bytes (≈ 6 petabytes)
we now panic with the same message we had before in cf12ba262a/bitcoin/src/blockdata/script/borrowed.rs (L412)
ACKs for top commit:
tcharding:
ACK 0498f7b7b7
apoelstra:
ACK 0498f7b7b7d43cc015d6788efe826df25d6156a5; successfully ran local tests
Tree-SHA512: 826a5d4ebb9c237cdd261f7d8b25fb2118cfba7d79b031839a619e12c440cbd34bbf830ffe513c104ef34e8ae50320e314c736a55be9ba7a82ae50f6022b9cf0
a5f904559d primitives: Make hex optional (Tobin C. Harding)
Pull request description:
Make the `hex` dependency optional. This means not implementing
`Display` for some types if `hex` is not enabled and only implementing
`Debug`.
Also without `hex` enabled:
- We loose the ability to parse an `OutPoint` from string because we
can no longer parse `Txid`.
- We loose the hex formatting of witness elements.
Note also that `primitives` builds with the `serde` feature even if
`hex?/serde` is excluded from the `serde` feature. I found this
surprising.
Close: #4183
ACKs for top commit:
apoelstra:
ACK a5f904559d3b5d2dfbcbed8b1746305e32103fee; successfully ran local tests
Tree-SHA512: c105e089508036af8251cb923f3eda163b8f2d6151ea043aa1489edb6ce396975d1f598a240f4ca6e48f6ef780774f7d86cb70ec9399f3d2ff87c0ac53ceee91
53837d9a2e units: Improve crate level docs (Tobin C. Harding)
Pull request description:
Add a bit more to the crate level docs. This is a simple crate so we don't need all that much.
Done for: C-CRATE-DOC
ACKs for top commit:
apoelstra:
ACK 53837d9a2e1cc70e180de39c16e2d212e958a9f3; successfully ran local tests
Tree-SHA512: 374c27a25cdc9bd4edd0755be02cad66ccccedcd69836506c1f4eb86a1254bfafe11eeb6fcc27b7efd2ab3ca0acd1daa304d482c7e5a7f84ffbcffbb1bcd21d6
The and_then combinator performs a kind of bitwise and operation on two
Option types here. This is useful since the `checked` arithmetic
returns an option thereby accumulating Option types. Therefore, either
the checked arithmetic operation performs the addition of the unwrapped
accumulator, or it returns None.
Instead of using `and_then` use the provided `try_fold` method which
will short circuit on `None` when the checked arithmetic is used. Also,
simplify the staring condition using `Amount:ZERO` since this is
logically equivalent to using the first value if one exists.
Lastly, by using the built in `try_fold`, it's possible the performance
will be improved by making use of the short circuit ability instead of
evaluating each item even when the accumulator holds a None type.
0361604bab Add impls for NumOpResult div and mul (Tobin C. Harding)
Pull request description:
We recently added div and mul for combinations of `Amount`, `FeeRate`, and `Weight`. When doing so we forgot to add variations for `NumOpResult`.
ACKs for top commit:
apoelstra:
ACK 0361604bab6c6ef260410d0bd6e33ce24a41e775; successfully ran local tests
Tree-SHA512: 6d262b9079b8a670f32d58d49e3c7e9a79d5d795a4c9f37f6bc2213879649d41900e95f515d8685c3870c935358bcb25567b2f6f332301e1ad88188056047b7b
a697af9755 Update tests.rs (Maxim Evtush)
Pull request description:
Description:
This PR fixes a typo in the test function name `p2pk_pubkey_bytes_emptry_script_returns_none()` by correcting 'emptry' to 'empty'. This is a minor correction that improves code readability without affecting functionality.
ACKs for top commit:
tcharding:
ACK a697af9755
apoelstra:
ACK a697af97558332950a1b6c088eed9a1cde85c709; successfully ran local tests
Tree-SHA512: 8fd8b29a4d0e0dfac8769eaf6b9c7bfaea395f58ce58280410dbe8cbcda7e52bc15e542034826c7e7f1a0117256d99dca43789015c3f0e946acbf9714d8c5562
ec38860b65 Add a test to kill mutants in MathOp (Jamil Lambert, PhD)
Pull request description:
Weekly mutation testing found mutants in `is_overflow` and `is_divide_by_zero`.
Add a test to kill them.
Closes#4310Closes#4334
ACKs for top commit:
tcharding:
ACK ec38860b65
apoelstra:
ACK ec38860b65d01d09bf9189cc1b2d043e4b36a140; successfully ran local tests
Tree-SHA512: 05d46d5792cb355d8b79f197bcb397d762c8f5593005589f46b9d085f357d168b767e6deaf30b8bf61434652f9f1db1a09b5f753f30c2e22d7e80450cef61182
7e1369b3f1 Cover all TryFrom implementations in Script (Jamil Lambert, PhD)
6dfa3d8f4d Update test to increase coverage (Jamil Lambert, PhD)
Pull request description:
Update test in borrowed to cover the `default` implementation of `Script`.
Add tests to cover all `TryFrom` implementations in `Script`
ACKs for top commit:
apoelstra:
ACK 7e1369b3f1a7789b2757951c2e3ff58937442200; successfully ran local tests
tcharding:
ACK 7e1369b3f1
Tree-SHA512: 766b8eb63abbb1f10670f42b3789a8a4d4d73470ade13f14a1140d4cdd93b49d79865645d49f404774d8ff7aeb22b68059275902dc063d2baaf79fc8a89dca95
we replace Option<Amount> return type with Amount in minimal_non_dust
- Use `.expect("dust_relay_fee or script length should not be absurdly large")` to handle overflow from .checked_mul()
`.expect()` is only triggered if the value calculateed overflows u64
such an overflow would require a script size exceeding ~6.15 petabytes
267deee60d Automated update to Github CI to rustc nightly-2025-04-11 (Update Nightly Rustc Bot)
Pull request description:
Automated update to Github CI workflow `rust.yml` by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action
ACKs for top commit:
tcharding:
ACK 267deee60d
Tree-SHA512: 88f6af37da2557ced9004819b953634644df72c3952296874417616f1ae6a4b06859ffed00feafe28fbf3a1c9147dc1065ca63bd7c39b68aee10287b33e74467
The byte slice/vector in the to/from methods for the script types does
not include the length prefix that is used when consensus
encoding.
Add docs to make this more clear.
b669a93eab Add tests to kill mutants (Jamil Lambert, PhD)
Pull request description:
New mutants found in weekly mutation testing in `Witness`.
Add a test to kill the mutants in From impl, and expand the test to kill PartialEq mutants.
Closes#4296
ACKs for top commit:
apoelstra:
ACK b669a93eabc89f7b25d37570eef20675668289ea; successfully ran local tests
Tree-SHA512: 1b23c37c7a0e9c9d2f6f982cc4f5f9923ffbfa255e2b3d7b24d07f2c07273313d4563af9ab8c6f972f2d814cde05bd1af7c2cd4cdee6e03453be81631be52d0e
1654d2e899 Update array.rs (FT)
Pull request description:
This PR corrects a typo in the documentation comment for the array splitting method in `internals/src/array.rs`. Changed "overlaping" to the correct spelling "overlapping".
ACKs for top commit:
apoelstra:
ACK 1654d2e89934059afb3c4a61b5064672d2f3a80a; successfully ran local tests
Tree-SHA512: b59257dbdd1764b4c99d97b158bedb8a1b87e98eb58b7400d8bc54186960ea07eafadc8b9a4b2332156d254e22039cecc0a926e4c5bf8ec404036d5e309dc224
Make the `hex` dependency optional. This means not implementing
`Display` for some types if `hex` is not enabled and only implementing
`Debug`.
Also without `hex` enabled:
- We loose the ability to parse an `OutPoint` from string because we
can no longer parse `Txid`.
- We loose the hex formatting of witness elements.
Note also that `primitives` builds with the `serde` feature even if
`hex?/serde` is excluded from the `serde` feature. I found this
surprising.
da69e636a9 units: Use 100 column width in rustdoc comments (Tobin C. Harding)
53c6ae4d40 units: Remove expect from rustdoc example (Tobin C. Harding)
Pull request description:
A couple of quick docs fixes while trying to polish `units`.
ACKs for top commit:
apoelstra:
ACK da69e636a9d21e602289062279ed5ebc6b1429b6; successfully ran local tests
Tree-SHA512: acfbec90b0327850b882c5e1b1e7eaadbf0a09a30dcc46529386ea419ed74846a678a5980f5706f8d280f30ec6f6d06af2db8f0e1748523b15ad47a654caee4b
We have the `hex_lit` dependency for converting a hex string literal
to an array.
Currently we have a `test_hex_unwrap` macro in the `hex v0.3.0` release
but not on either `master` or the upcoming `v1.0.0-alpha.0` release.
This is making PRs around releasing and depending on the release more
noisy than required.
Use `hex_lit::hex` where possible (often needing an additional call to
`to_vec()`) and where not possible use `Vec::from_hex`.
We can use `deserialize_hex` when outside of the actual benchmark code
to simplify the functions.
Also add an additional test that benchmarks `deserialize_hex`.
d878e5b367 chore(hashes): update serde dependency to workspace (Nick Johnson)
Pull request description:
Update serde from 1.0 to 1.0.103 to align with versions used in other workspace crates. This makes the dependency constraint match reality since it was almost always implicitly raised by the other crates.
I ran the `update-lock-files`, but no changes, which makes sense since other crates in the workspace bumped the version.
A bit more info in https://github.com/rust-bitcoin/rust-bitcoin/issues/4313#issuecomment-2786281653 with talk about minimal version testing.
ACKs for top commit:
tcharding:
ACK d878e5b367
apoelstra:
ACK d878e5b3678e3354740a584fa9cc239f8181fa67; successfully ran local tests
Tree-SHA512: 3fe3eaddb58c54ac809f025e3a95f02c4c15f6209a3d17c9262923bdcbf8a094975d150c76e85de25a68e6e7574aa7e3fe40d4707bd4d159bd8cc97f36be0ee9
52f9c13358 Implement Copy for Address and AddressInner (tushar994)
Pull request description:
solves #4237
ACKs for top commit:
apoelstra:
ACK 52f9c13358c97c358543f3302b325f37ac49392f; successfully ran local tests
Tree-SHA512: 007092c57b893cfa62a6185c21b8839daf946a5b8ca505fc7d5f3b78c056fc5ce44cfb32936469f1955d535f4798506ea20a936218f0bf6808b17506e87836f2
The `default` implementation is missed in the test coverage.
Change calling `new()` to using the `default` implementation, which then
calls `new()` anyway.
d6881ff5f8 units: Enable differentiating div-by-zero (Tobin C. Harding)
5fb64953c5 units: Return NumOpResult when implementing Div (Tobin C. Harding)
dba61c9efe units: Fix internal docs (Tobin C. Harding)
512326b8b9 units: Macroize implementing OptionExt (Tobin C. Harding)
f5b54e5fe0 units: Move general result stuff to a separate module (Tobin C. Harding)
f49efdf3f7 units: Remove mention of amount in result module (Tobin C. Harding)
Pull request description:
First 4 patches are preparatory clean up. Patch 5 and 6 make all implementations of `Div` in the crate return `NumOpResult`. Done as two separate patches to assist review and in case we need to iterate, patch 5 is likely trivial to review.
Fix: #4215
ACKs for top commit:
apoelstra:
ACK d6881ff5f861b8a85883ec88ce453cc02191ba14; successfully ran local tests
Tree-SHA512: 7188262dbe61d5b7ec051b4310918680b2732788f364419d85e30a98c94778cffabda166ef716fe2298a70b69626aaa3b51cff0ce6efeeb3e93e51066ab358a1
InputWeightPrediction can be used to determine the weight needed
to calculate the effective_value. This simplifies the process for api
consumers by allowing an easier interface with which to use to predict
the weight. Prior to this change, it was required to manually calculate
the predicted weight for whichever input type was to be used.
Update serde from 1.0 to 1.0.103 to align with versions used in other
workspace crates. This makes the dependency constraint match reality
since it was almost always implicitly raised by the other crates.