As we have been doing in other places deprecate `to_bytes` in favour of
`to_vec`. Note this is only for functions that return a `Vec`, the `key`
module has `CompressedKey::to_bytes` still as it returns an array.
We want our code to be easy to read and our APIs discoverable, for those
of us who read source files the layout matters.
Put the constructors and getters at the top of the impl block.
Code move only, no logic changes.
Deprecate the `Script::to_bytes` function in favour of `to_vec` as we
are doing elsewhere.
Note that `ScriptBuf` has `into_bytes` because it does not copy.
Potentially this should be deprecated in favour of `into_vec`?
Note that in regards to the `to_` prefix this naming as valid according
to convention because the `Script` type is borrowed and `to_vec` copies
the underlying bytes.
During this release cycle we deprecated `to_vec` in favour of
`to_bytes`, we have since reversed our position on the name.
Remove the deprecation of `to_bytes` from the three types that had it
and use `to_vec`.
For the array wrapper types (eg `ShortId`) created with the
`impl_array_newtype` macro deprecated the `to_bytes` function and add a
`to_vec` function.
Discussed and decided upon in issue: #3025
c92290278e base58: Close all errors (Tobin C. Harding)
Pull request description:
Currently we have a bunch of public errors in the `base58` crate. Only two are returned by public functions `decode()` and `decode_check()` (`Error` and `InvalidCharacterError` respectively).
- Close the two public errors by adding private inner errors.
- Add getters on the public errors to get the error data.
- Make all other errors private.
- Call `impl_from_infallible` for _all_ error types.
Done as part of #3261
ACKs for top commit:
apoelstra:
ACK c92290278eaa4b4f062928c6bc6c2984e1ab7ba6; successfully ran local tests
Tree-SHA512: e2ecef89691b41dfcc8ea3ef02c3719c45c72dbb252c76eadd97d03e32518ac7e00a2623d753de947d607ac3edf785f1ffdef8178a4f17ac3e7fd26ee01031ab
10ff979fbd amount: Move arbitrary impl (Tobin C. Harding)
d4d9311603 amount: Move SignedAmount to private signed module (Tobin C. Harding)
0fc0e8760b docs: Remove link from self (Tobin C. Harding)
13f9fd1b77 amount: Move Amount to private unsigned module (Tobin C. Harding)
2d4c0fa6c1 amount: Format serde file (Tobin C. Harding)
df96267342 amount: Move serde code to submodule (Tobin C. Harding)
87c9a3fd11 amount: Format tests file (Tobin C. Harding)
e0bc68042d amount: Move test code to submodule (Tobin C. Harding)
7e1269704d tests: Use from_sat (Tobin C. Harding)
cd5d1aba2f amount: Format verification file (Tobin C. Harding)
01f907b7a6 amount: Move verification code to submodule (Tobin C. Harding)
5ce827c5e0 amount: Move error code to submodule (Tobin C. Harding)
abc54d0343 Make amount module a directory (Tobin C. Harding)
851e4111ec Run the formatter (Tobin C. Harding)
Pull request description:
This is the first 14 patches from #3539 in case that on is too ambitious. If that one gets NACK'ed then this can close too.
I really really don't want to rebase this so I"m putting it up in case any of the last 5 patches from #3539 are contentious. if #3539 can go in as is then we can close this one.
ACKs for top commit:
apoelstra:
ACK 10ff979fbd76232ab28127600b7515bcf86467b9; successfully ran local tests; nice! All straightforward moves etc. Will one-ACK merge
Tree-SHA512: 8ebfac309969da52b78de37d9c55264332884c3a3966cae3f6ca5e154834aeb205d4e483dee8f934e72f67ec7cb84239232d052ac5c314c553feccf3a2380057
dfb76c1e15 Use doc(notable_trait) (Tobin C. Harding)
Pull request description:
There is an unstable feature that puts up a little 'i' in a circle next to any function that returns a type that implements an notable trait. For us this means we can make the extension traits more discoverable.
ref: https://doc.rust-lang.org/unstable-book/language-features/doc-notable-trait.htmlClose: #3232
ACKs for top commit:
apoelstra:
ACK dfb76c1e15933fe0058c1bb69c4b1b9acddceee8; successfully ran local tests
Tree-SHA512: 0fbc7a2a3c8c499a9276d1e86b9966a7ae6bd8a354aff5fd40aa11d07945db589b2a9c2cdfa43ddadfafcee706ae7f68cedc269f74622643307cc43cd07d554f
In the `script` module remove the wildcards and re-export stuff from
`self` explicitly in both `primitives` and `bitcoin`.
Internal change only, everything is re-exported.
The current feature gating is wrong, this bug is unreleased because it
was introduced #2585.
The `impl_array_newtype` macro is only used in the `bitcoin` crate, it
does not need to be in `internals`. Also, other crates have an `alloc`
feature which `bitcoin` does not have so if we ever need it in other
places we'll need a duplicate with the correct feature gating anyways.
Move the macro to `bitcoin::internal_macros` and remove the incorrect
`alloc` feature gating.
Currently we have a bunch of public errors in the `base58` crate. Only
two are returned by public functions `decode()` and
`decode_check()` (`Error` and `InvalidCharacterError` respectively).
- Close the two public errors by adding private inner errors.
- Add getters on the public errors to get the error data.
- Make all other errors private.
- Call `impl_from_infallible` for _all_ error types.
Done as part of #3261
Currently we feature gate code within the `impl_to_hex_from_lower_hex`
macro on "alloc" but `bitcoin` does not have the "alloc" feature so
this code is never built in. This can be seen by the lack of a
`to_hex` function on `LeafVersion`.
Remove the feature gate from the macro and put it on the individual
call sites as needed.
c80d0bfcc8 Automated update to Github CI to rustc nightly-2024-10-30 (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 c80d0bfcc8
Tree-SHA512: 26ee5fd03019452f0f1be637faf0f5c9129e87d375aea046de82bb3b0a56ea6e8690a08b9d3cb0b9a81c59acb89c163d15825406794d8cfa062f22939f029b11
In an effort to make the `amount` module more readable move the
`SignedAmount` type to a private submodule.
Re-export everything so this is not a breaking change.
Code move and re-exports only.
When we move `SignedAmount` to a submodule linking to `self` introduces
a clippy warning, I'm not exactly sure why but lets remove the link in
preparation for the move.
In an effort to make the `amount` module more readable move the `Amount`
type to a private submodule.
Re-export everything so this is not a breaking change.
Code move and re-exports only.
There is _a lot_ of error types in the `amount` module. Move them to a
separate `error` module.
Add a bunch of `pub(super)` to keep things private to the `amount`
module.
Eventually we will want to close all these errors.
7d6ed16dfc Add changelog to chacha20-poly1305 crate (Nick Johnson)
Pull request description:
The initial release for the `chacha20-poly1305` crate. No other preparation needed for release since the version, `v0.1.0`, is already set in Cargo.toml.
ACKs for top commit:
tcharding:
ACK 7d6ed16dfc
storopoli:
ACK 7d6ed16dfc
apoelstra:
ACK 7d6ed16dfc9e8549bcf3d73af9aae7cd13904643; successfully ran local tests
Tree-SHA512: b9b42f59f7515e1cce63601ecaf33ba11eb594ec359e436babb1e7bed299f2244cae5e4760af9534f47023d5491d718f2cbd4808a6a15deab2aaf671305b817f
In preparation for splitting the error types out of `amount.rs` into
their own file move the `amount.rs` file to `amount/mod.rs`.
File move only, no other changes.
f8f846bb9e Move Transaction type to primitives (Tobin C. Harding)
7b5af2ad5b Use `Transaction::compute_txid` in rustdoc (Tobin C. Harding)
98383a0fbe Introduce Transaction extension traits (Tobin C. Harding)
3f6bc74ae4 Introduce an iterator type for script_pubkey_lens (Tobin C. Harding)
7196992d58 Split Transaction impl block (Tobin C. Harding)
693000d09c Use super::* in bench module (Tobin C. Harding)
29d23b4b3a Move import statement (Tobin C. Harding)
e84346644e Run the formatter (Tobin C. Harding)
Pull request description:
First introduce the `Transaction` extension traits manually (without using the `define_extension_trait` macro) then move the `Transaction` to `primitives`.
Note please patch 5, ugly due to language requirements.
ACKs for top commit:
apoelstra:
ACK f8f846bb9ea3cfde460ec058eb04e5aba010cdbb; successfully ran local tests
Tree-SHA512: f830ad4f763bf78c5fedf750dbcb4354b6c8f38cbe2c0b6ba9e9d6b836356c5e041fe3db04e0b354c939f4205dd1ae29ba15b8e53da6b495450852f955d2f40d
WARNING: This is not like all the other extension traits.
Because of the use of generics on various `Transaction` methods it is
not easily possible to use the `define_extension_trait` macro.
Manually create the extension traits (public and private) for the
`Transaction` type. This is quite ugly but c'est la vie
(Includes two in the `transaction` module and one in the
`consensus_validation` module.)
Currently `script_pubkey_lens` returns a generic `Iterator` using `impl`
syntax. This syntax is not supported in traits and we want to move the
function to the soon-to-be-added `TransactionExt` trait.
Add a struct to hold the iterator returned by `Map`, this is ugly but
its the least ugly thing I could come up with.
Split the `Transaction` impl block into three parts:
- The bits going to `primitives`
- The bits staying in a public extension trait
- The bits staying in a private extension trait
Internal change only.
It is acceptable to use a wildcard import in bench code for the same
reasons it is acceptable in the `tests` module.
In preparation for introducing extension traits in the `transaction`
module use wildcard import in the module's bench code.
abcac54078 hashes: Move public macros (Tobin C. Harding)
2868985a91 Replace TBD with next hashes release version (Tobin C. Harding)
baab5e580d hashes: Move private macro (Tobin C. Harding)
e4486d07f0 hashes: Hide macros from docs (Tobin C. Harding)
25c4c78e26 hashes: Put attribute under rustdoc (Tobin C. Harding)
Pull request description:
A quick cleanup to try and make the docs better around our macros.
Last patch might be churn, can drop it if wanted. Came about because the `macros` module shows empty in the docs currently.
ACKs for top commit:
apoelstra:
ACK abcac540782dd84992e47f342929efd407746c65; successfully ran local tests
Tree-SHA512: e2b4b4fe98e38f32902f7985f995c4bbc302b19b67010ddae38c22cac8151dd19370f3bd236836075744e7e5d9c6900e25416c221cddefa2452e4af81eb49dc2
We are about to release `bitcoin_hashes 0.15.0`, replace the TBD string
with the version number.
Requires changing `allow(deprecated_in_future)` attribute to
`allow(deprecated)` (in functions that are them self deprecated).
f2e1a4b16c bitcoin: Add some upgrade notes (Tobin C. Harding)
Pull request description:
While upgrading `miniscript` to use tip of master I made some notes to help users upgrade. Just throw them in the changelog file or now.
ACKs for top commit:
storopoli:
ACK f2e1a4b16c
apoelstra:
ACK f2e1a4b16cb8b71b50da723a20761fbe3822d6fc; successfully ran local tests
Tree-SHA512: 3e7a64445476dce8c716edf127b2594c434948bfff7c301ac74a723fa49b2784cca90cf74d231fe18a9fa8e80ffd5cb43232fb90aeae5943568623d4252fc4ef
c89b816437 psbt: Fix bug in Subtype consensus_encode (Tobin C. Harding)
Pull request description:
In #2906 we switched from using a `u8` for type keys to using a `u64` and encoding as a compact int (inline with the spec). Note that a `u8` encodes to the same bytes as a `u64` when the value is < 252.
In that patch, I introduced a bug because the length returned by `PoprietaryKey::consensus_encode` uses a hard code 1 for the length of the encoding (because of single byte) instead of the variable length for the new compact encoding.
Bug showed up in fuzzing, and was isolated by Jamil - mad props.
Fix: #3501
ACKs for top commit:
jamillambert:
ACK c89b816437
apoelstra:
ACK c89b8164377123eb20476636f2f5271c6a687406; successfully ran local tests
Tree-SHA512: 1b61b6a9ece197d74038ceedb447fd3ca21db8e2a6a96c9281a99ac232c18c3ca55da8e3f46930401714d3575e9a406a36e4f44929ca963208a5df4be6b46cfb