Commit Graph

3918 Commits

Author SHA1 Message Date
Tobin C. Harding a92dc9c35c
Add NetworkValidationError
The `require_network` function can fail in one way only, add a specific
error for the failure.
2024-02-27 11:08:38 +11:00
Andrew Poelstra 42e8f537e6
Merge rust-bitcoin/rust-bitcoin#2504: base58: Use pub extern crate instead of module
9d688396c9 base58: Use pub extern crate instead of module (Tobin C. Harding)

Pull request description:

  We don't add any implementations to the `base58` types so we can just `pub extern` the crate instead of using a module and re-exporting.

ACKs for top commit:
  Kixunil:
    ACK 9d688396c9
  apoelstra:
    ACK 9d688396c9

Tree-SHA512: 521af0fd1ae365a6d060dd3c38fc18c1fb3a6c46adb7cba64e53128c7a898c766bcc603078b4cb8a3672df96559633495b23203a33147b5b4959b0c690ab7451
2024-02-27 00:04:00 +00:00
Tobin C. Harding b873a3cd44
Do infallible int from hex conversions
We have three integer wrapping types that can be created from hex
strings where the conversion from an integer is infallible:

- `absolute::LockTime`
- `Sequence`
- `CompactTarget`

We would like to improve our handling of the two prefix characters (eg
0x) by making it explicit.

- Modify the inherent `from_hex` method on each type to error if the
input string does not contain a prefix.

- Add an additional inherent method on each type `from_unprefixed_hex`
that errors if the input string does contain a prefix.

This patch does not touch the wrapper types that cannot be infallibly
constructed from an integer (i.e. absolute `Height` and `Time`).
2024-02-27 10:40:52 +11:00
Tobin C. Harding 4d762cb08c
Remove the FromHexStr trait
The `FromHexStr` trait is used to parse integer-like types, however we
can achieve the same using inherent methods.

Move the hex parsing functionality to inherent methods, keeping the same
behaviour in regard to the `0x` prefix.
2024-02-27 10:09:20 +11:00
Tobin C. Harding 026537807f
Remove mention of packed
We removed the `PackedLockTime`, remove all mentions of the word packed.
2024-02-27 10:09:20 +11:00
Andrew Poelstra 87f4091a65
Merge rust-bitcoin/rust-bitcoin#2506: Update bech32 dependency
4e557fa4e6 Update bech32 dependency (Tobin C. Harding)

Pull request description:

  Update `bech32` to the newly released version `0.11.0`.

ACKs for top commit:
  apoelstra:
    ACK 4e557fa4e6
  Kixunil:
    ACK 4e557fa4e6

Tree-SHA512: bbf19876553b7b27191610a68da60a7d1c5246646c0109dd9bc4909259244ca79f624e0c8a6fc205d93fcdacfd3a82201cda6cf09e0c233cceb10e25b3133871
2024-02-26 22:57:49 +00:00
Tobin C. Harding 4e557fa4e6
Update bech32 dependency
Update `bech32` to the newly released version `0.11.0`.
2024-02-26 15:31:51 +11:00
Tobin C. Harding 9d688396c9
base58: Use pub extern crate instead of module
We don't add any implementations to the `base58` types so we can just
`pub extern` the crate instead of using a module and re-exporting.
2024-02-26 08:48:30 +11:00
Andrew Poelstra d85817b880
Merge rust-bitcoin/rust-bitcoin#2497: Add the `FromScriptError` for handling errors in `address`
c2d658ac05 Add `P2shError` for handling errors related to P2sh (harshit933)
5182a8d7a8 Remove unused variants from `Address::Error` (harshit933)
05b24946eb Add the `FromScriptError` for handling errors in `address` (harshit933)

Pull request description:

  This commit adds the `FromScriptError` struct to handle the errors while generating address from any script. It includes :
  - Unrecognized script error.
  - Witness Program error.
  - Witness Version error.

ACKs for top commit:
  tcharding:
    ACK c2d658ac05
  apoelstra:
    ACK c2d658ac05

Tree-SHA512: 891eed787129aaf1b664cc16d325178d5d2f77cc41a0543a3d9d1a5af1b58188daece1f6a653bdc6b76b82db0490a39e9bba7fc090e3727d15ee9b8977733698
2024-02-24 15:59:45 +00:00
Andrew Poelstra 94938ea247
Merge rust-bitcoin/rust-bitcoin#2446: Make constructors const
ac88bc03fd Make constructors const (Tobin C. Harding)

Pull request description:

  Audit the codebase for any function that starts with `/// Creates` and see if we can make it const. Inline them at the same time.

ACKs for top commit:
  Kixunil:
    ACK ac88bc03fd
  apoelstra:
    ACK ac88bc03fd

Tree-SHA512: 0c71e38018e74b3ce1aae871fc6208b87655a0970ae6cca7a538b9f896c95542c6905eb4d7e02539847e88d8a22a873039a5734130c2a46efb4d1b2b9ffd9f4a
2024-02-24 15:48:46 +00:00
Andrew Poelstra 6d36c35914
Merge rust-bitcoin/rust-bitcoin#2480: Add a new base58 crate
aa8ba118ae Add a new base58 crate (Tobin C. Harding)

Pull request description:

  Add a new `base58check` crate to the workspace and move the `bitcoin::base58` module to it.

  Done as part of crate smashing, specifically so that we can make `bip32` into a separate crate.

ACKs for top commit:
  Kixunil:
    ACK aa8ba118ae
  apoelstra:
    ACK aa8ba118ae though is this `pub mod` thing equivalent to `pub extern crate`?

Tree-SHA512: a8db975655029b46df3b40ceca064ba708ce2f5fff0cfd6776d691441356c8a58fe6bdae6a1bf495da5112962e73c2b46df740a4041bed56f2559cb3c47ff34a
2024-02-24 14:34:56 +00:00
Martin Habovstiak 08f83898a3 Report the position of an invalid char in amount
It can be helpful to report the exact position where the invalid
character was encountered. This change adds he feature.
2024-02-24 09:42:10 +01:00
Martin Habovstiak 73b325aec5 Report position of the first "too precise" digit
Sometimes people don't remember the exact number of decimal places
supported by denomination or don't want to count (e.g. when converting
fiat to BTC the calculator may yield too precise value). It's helpful to
say in error message at which digit the precision is too high.

This adds `TooPreciseError` struct containing the information and
improves the error message to display it.
2024-02-24 08:55:32 +01:00
Martin Habovstiak 28d83551eb Improve `ParseAmountError::InputTooLarge`
This variant lacked pretty important information: what is the limit. We
could just write it in the error message but it's even better to move it
to a separate struct which also says how many characters exceed the
limit - this helps users know how many need to be deleted.
2024-02-24 08:55:32 +01:00
Martin Habovstiak b7689a7d60 Split up `ParseAmountError::InvalidFormat`
The `InvalidFormat` variant was pretty bad: it didn't make it clear what
exactly is wrong with the input string, especially since it was used
when the denomination was missing. Not only was this unhelpful to the
users who don't know they have to write the denomination when the amount
was otherwise correct but it was also attributed to a problem with the
amount rather than a problem with denomination.

To fix this the variant is replaced by `MissingDigitsError`,
`MissingError` and `InvalidCharError` - all the cases `InvalidFormat`
was originally used in.

`InvalidCharError` is effectively the same as the existing variant but
it was made into a separate error to enable special casing `.` and make
extensions possible. Further this opportunity was used to add a special
case for `-` as well.

`MissingDigitsError` currently contains special casing for empty string
and a string only containing minus sign. It's currently unclear if it's
useful so this change makes this distinction private and only makes it
affect error messages.

As opposed to the previous two variants, `MissingDenominationError` was
added to `ParseError`. The struct is currenly empty and may be extended
in the future with e.g. span information.
2024-02-24 08:55:32 +01:00
Tobin C. Harding ac88bc03fd
Make constructors const
Audit the codebase for any function that starts with `/// Creates` and
see if we can make it const. Inline them at the same time.
2024-02-24 06:04:41 +11:00
harshit933 c2d658ac05 Add `P2shError` for handling errors related to P2sh
Added a new `P2shError` struct for handling errors emmited while
generating addresses from P2sh scripts.
2024-02-23 19:33:44 +05:30
Tobin C. Harding aa8ba118ae
Add a new base58 crate
Add a new `base58` crate to the workspace and move the `bitcoin::base58`
module to it.

Done as part of crate smashing, specifically so that we can make `bip32`
into a separate crate.
2024-02-23 12:54:24 +11:00
Andrew Poelstra 31c0bf8d5f
Merge rust-bitcoin/rust-bitcoin#2491: Make from_hex inherent for byte-like types
1ee887a2fc Make from_hex inherent for byte-like types (Tobin C. Harding)

Pull request description:

  Byte like types naturally display in hex, therefore they should havean inherent method `from_hex` and not implement `FromHex`.

ACKs for top commit:
  Kixunil:
    ACK 1ee887a2fc
  apoelstra:
    ACK 1ee887a2fc

Tree-SHA512: fc69168f6111e402ffca6e861a9fdd50742d8faf361929c620d94c8f5598fb7d6920cab4529d69a7cce2a5ff112849aa77517d230fa580ad11b62e6eb7f4a8d3
2024-02-22 23:54:03 +00:00
harshit933 5182a8d7a8 Remove unused variants from `Address::Error` 2024-02-23 03:36:35 +05:30
harshit933 05b24946eb Add the `FromScriptError` for handling errors in `address`
This commit adds the `FromScriptError` struct to handle the errors
while generating address from any script. It includes :
- Unrecognized script error.
- Witness Program error.
- Witness Version error.
2024-02-23 02:21:11 +05:30
yu 41e8fb0863 Support signing taproot in psbt 2024-02-22 10:42:44 +08:00
Tobin C. Harding 1ee887a2fc
Make from_hex inherent for byte-like types
Byte like types naturally display in hex, therefore they should have
an inherent method `from_hex` and not implement `FromHex`.
2024-02-22 09:16:31 +11:00
Andrew Poelstra 975ada3570
Merge rust-bitcoin/rust-bitcoin#2488: Fix CI new build warnings
9187bf3a65 Fix new nightly warnings/errors (Tobin C. Harding)

Pull request description:

  The latest nightly toolchain introduced a whole bunch of new warnings and errors, mostly to do with import statements - fix them all.

ACKs for top commit:
  apoelstra:
    ACK 9187bf3a65

Tree-SHA512: 205a100cd3b4cd9489c660b1699711cb1ff8c2eefa0ad6c7fefc3da34856be6dfd194e912b591abffeb0b6bca1756a13677a178961890464fac1758ad43250dc
2024-02-21 14:40:07 +00:00
Tobin C. Harding 9187bf3a65
Fix new nightly warnings/errors
The latest nightly toolchain introduced a whole bunch of new warnings
and errors, mostly to do with import statements - fix them all.
2024-02-21 14:13:49 +11:00
Andrew Poelstra 14e3bc6620
Merge rust-bitcoin/rust-bitcoin#2485: io: Bump version to 0.1.1
cf602583bd io: Bump version to 0.1.1 (Tobin C. Harding)

Pull request description:

  We attempted to release with the current 0.1.0 version forgetting that we had previously released an empty crate with that version to reserve the name on crates.io.

  Bump the version to 0.1.1 and release the actual code.

ACKs for top commit:
  Kixunil:
    ACK cf602583bd
  apoelstra:
    ACK cf602583bd

Tree-SHA512: 2efd4c72c135ba3e593a9854d459bacfd8ce1d8c1c18afad9288206cf5d2db6f6c77499912d9c1da40a93ebc8ae463e5cd15b5234bfc09b13f57923767a1f5dd
2024-02-18 14:20:25 +00:00
Tobin C. Harding cf602583bd
io: Bump version to 0.1.1
We attempted to release with the current 0.1.0 version forgetting that
we had previously released an empty crate with that version to reserve
the name on crates.io.

Bump the version to 0.1.1 and release the actual code.
2024-02-18 09:39:28 +11:00
Andrew Poelstra 422404f644
Merge rust-bitcoin/rust-bitcoin#2441: Release tracking PR: `io v0.1.0`
a464ec66a7 io: Add changelog (Tobin C. Harding)

Pull request description:

  In preparation for an initial release; add a changelog file. The version number is already set to `v0.1.0`.

ACKs for top commit:
  apoelstra:
    ACK a464ec66a7 woohoo
  Kixunil:
    ACK a464ec66a7

Tree-SHA512: 87cacbb4b615d57d9e0038a5e1b3f8f840641408b014d7592af25d47104f7e77d515bba77bb97623e419d99557589ead1c7457207340bc4e8a89cbe972d8aecb
2024-02-16 01:16:25 +00:00
Andrew Poelstra bf29a76d89
Merge rust-bitcoin/rust-bitcoin#2436: Add unchecked variants to Amount and SignedAmount
df1d2f6eb5 Add unchecked variants to Amount and SignedAmount (yancy)

Pull request description:

  The checked variants have worse performance than the unchecked variants due to the additional branching operations.  To improve performance where overflow is either not possible or not a concern, unchecked variants of `Amount` and `SignedAmount` are introduced for addition, subtraction and multiplication.

  Note, it seems the default behavior for the test framework is to panic on overflow, so I haven't figured out a good way to add tests for this.  Marking as a draft for now.

  closes: https://github.com/rust-bitcoin/rust-bitcoin/issues/2434

ACKs for top commit:
  Kixunil:
    ACK df1d2f6eb5
  apoelstra:
    ACK df1d2f6eb5 gonna go ahead and merge this, we can revisit if necessary when we look at `units` overflow behavior in general

Tree-SHA512: 3fbb0ec81a758b350569226c44e25f6ca49e551566bee83c05c1c2b343874ef657d63a36b5f51c41582d8a8e36466275c574ebff6d363ed7c112ac8b4d5376fa
2024-02-15 15:04:28 +00:00
yancy df1d2f6eb5 Add unchecked variants to Amount and SignedAmount
The checked variants have worse performance than the unchecked variants
due to the additional branching operations.  To improve performance where
overflow is either not possible or not a concern, unchecked variants
of Amount and SignedAmount are introduced.
2024-02-13 23:46:51 +01:00
Andrew Poelstra 668df1d22d
Merge rust-bitcoin/rust-bitcoin#2467: taproot: add TapNodeHash getter method on TapTree and NodeInfo
1384330029 taproot: add TapNodeHash getter method on TapTree and NodeInfo (conduition)

Pull request description:

  Submitting this to fix what I think is an API hole. Please correct me if I'm mistaken here and there is an easier way to do what I'm after.

  ## Problem

  From what I can tell of the existing 0.31.1 API, there doesn't seem to be any way for a consumer to build a taproot tree using `TaprootBuilder` and then simply output the resulting tap tree merkle root `TapNodeHash`.

  Instead, the API forces me to do `TaprootBuilder::finalize(secp_ctx, internal_key)` first to get a `TaprootSpendInfo`, and then call `TaprootSpendInfo::merkle_root()` to get the root `TapNodehash`. This requires ECC point addition/multiplication for the tweak operation (inside `TaprootBuilder::finalize`), so it is a lot less performant than the simple hashing operations needed to build a taproot tree.

  Obviously if I want to spend the taproot tree, I'll need to tweak an internal key. But if all I want is to examine the merkle root hashes of taproot trees (e.g. for quick validation), there should be a faster and more direct option for me.

  ## Suggested Solution

  My suggestion, demonstrated in this PR, would be to add a couple of simple getter methods:

  - `TapTree::node_hash() -> TapNodeHash`
  - `NodeInfo::node_hash() -> TapNodeHash`

  These rhyme with the existing `LeafNode::node_hash()` method. These provide a roundabout way for downstream consumers to extract a taptree merkle root `TapNodeHash` while still using the safe API provided by `TaprootBuilder`. I would simply use `TaprootBuilder` to build a `TapTree` or `NodeInfo`, and then invoke the `node_hash` method on that object. No point addition required.

  ## Footguns

  This does open up more opportunities for consumers to footgun themselves by, for example, committing a P2TR script pubkey to a leaf node by accident, instead of the root node. I'd argue this possibility already exists in the form of `LeafNode::node_hash()`. We're not making that problem much worse here.

  If the caller is using `TaprootBuilder` to construct their tree, the only way they'll be able to get a `NodeInfo` or `TapTree` in the first place would be to finalize the builder into it, which seems like an acceptable and intuitive-enough usage path to me.

ACKs for top commit:
  apoelstra:
    ACK 1384330029
  tcharding:
    ACK 1384330029

Tree-SHA512: 9a3c7313fcf281e6439241d0cdc9ea018329ecb5e8b959cba88b0e36d4f1f0df54e09e5318073e1067618e85aea991d5ac7c50fa336a91782896c9cb3c98a973
2024-02-13 20:18:43 +00:00
conduition 1384330029
taproot: add TapNodeHash getter method on TapTree and NodeInfo
Fixes a gap in the API of the taproot module. Callers can now use
TapTree::root_hash or NodeInfo::node_hash to extract the taproot
tree merkle root hash for fast validation without any ECC overhead.
2024-02-12 23:47:33 +00:00
Andrew Poelstra 8f7cc4d6b3
Merge rust-bitcoin/rust-bitcoin#2462: feat: implement TryFrom trait to `SignedAmount` and `Amount`
251579f4ef feat: implement TryFrom trait to SignedAmount and Amount (Sumit Kumar)

Pull request description:

  Closes: #2245

  Adds `TryFrom<SignedAmount> for Amount` and `TryFrom<Amount> for Amount` in units module

ACKs for top commit:
  tcharding:
    ACK 251579f4ef
  Kixunil:
    ACK 251579f4ef
  apoelstra:
    ACK 251579f4ef

Tree-SHA512: 3e58d7a891019ccd272417eadc977037167439e3385a7b47c060fe93eba9c47fc37cdc0ca5551174ef2d93b256b2804ad7c01f5f2470ef9e9b7b912877aed11c
2024-02-12 23:11:41 +00:00
Tobin C. Harding a464ec66a7
io: Add changelog
In preparation for an initial release; add a changelog file.

The version number is already set to `v0.1.0`.
2024-02-13 09:48:45 +11:00
Andrew Poelstra 4544f5d3c2
Merge rust-bitcoin/rust-bitcoin#2453: io: Remove blanket trait impls
db888fa4cc io: Remove blanket trait impls (Tobin C. Harding)

Pull request description:

  Remove the blanket impls of `Read`, `BufRead`, and `Write`. Replace them with just the impls required to get `rust-bitcoin` building.

  Note, the `TcpStream` stuff is used in `examples/handshake.rs`.

  Fix: #2432

ACKs for top commit:
  Kixunil:
    ACK db888fa4cc
  apoelstra:
    ACK db888fa4cc

Tree-SHA512: 24a3196e740f7e16a493c2f54fb9bf875fceab66c8973ffe28c7cfc9e1a440e14a36d919cc1d8055ac9da8cd4ffb0fc26fff058b8dbb9da4768d7cf4c07ec48a
2024-02-12 20:07:44 +00:00
Andrew Poelstra bac493153a
Merge rust-bitcoin/rust-bitcoin#2471: units: Implement ops::Neg for SignedAmount
7d538c830d units: Implement ops::Neg for SignedAmount (Tobin C. Harding)

Pull request description:

  Its useful to be able to do `let x = -btc_amount;`

  Implement `core::ops::Neg for SignedAmount`, returning a `SignedAmount`.

  Fix: #2470

ACKs for top commit:
  Kixunil:
    ACK 7d538c830d
  apoelstra:
    ACK 7d538c830d

Tree-SHA512: 168808c34513ccf7773ba03abe9375f3bed0fa92b320af5538620142552fecda671b75295a8ba6720f1aead3c722869d8dcffeeaab565c370973d2bcb8b59d1b
2024-02-12 19:59:40 +00:00
Sumit Kumar 251579f4ef
feat: implement TryFrom trait to SignedAmount and Amount 2024-02-13 01:22:36 +05:30
Andrew Poelstra 9bdac92e1a
Merge rust-bitcoin/rust-bitcoin#2464: Remove broken kani test
7e1ba7895f Remove broken kani test (Tobin C. Harding)

Pull request description:

  This test is failing. I do not want to dive back into kani right now, just remove it.

  This is what I originally did in #2454 but changed directions and tried to fix it. Running kani test takes ages and I'd need to dig back to refresh my memory to work with kani. I don't have the motivation to do that at the moment. Just remove the test.

  FTR I added the test recently without fulling thinking it through and it has never passed so we are not loosing any coverage. Doing this was the original mistake I should not have made.

ACKs for top commit:
  Kixunil:
    ACK 7e1ba7895f
  apoelstra:
    ACK 7e1ba7895f

Tree-SHA512: cb76807173b637be9d5ce790b015e711ca76add95ce0f0acfdc56947c075f57ea89774c09c4314dbc89086dcf7a8e21053552bfae805fd5dc9c91051cd53c468
2024-02-12 14:23:33 +00:00
Andrew Poelstra 4523034ba3
Merge rust-bitcoin/rust-bitcoin#2463: Add conditional check for debug_assertions
1d13020129 test: Add conditional check for debug_assertions (yancy)

Pull request description:

  Currently running `cargo test --release` blows up because of the tests that panic.  This PR adds a conditional check `debug_assertions` which causes those tests to not be run in release mode.  Besides fixing `cargo test --release` this PR sets the stage for a larger PR to test arithmetic tests that are `unchecked` (will overflow in release mode instead of panic) started here https://github.com/rust-bitcoin/rust-bitcoin/pull/2436.  Also I think we ought to add `cargo test --release` to CI.

ACKs for top commit:
  Kixunil:
    ACK 1d13020129
  apoelstra:
    ACK 1d13020129

Tree-SHA512: 8964af57d20e314f491261b280ade053de03f5cb6a2857208b3cc16a9b39fa37fa4044cec84a46e35eac2a4b2637ebbd1c250817aab397b8a30f620eb61725fc
2024-02-12 13:37:55 +00:00
Tobin C. Harding 7d538c830d
units: Implement ops::Neg for SignedAmount
Its useful to be able to do `let x = -btc_amount;`

Implement `core::ops::Neg for SignedAmount`, returning a `SignedAmount`.

Fix: #2470
2024-02-12 13:06:34 +11:00
Tobin C. Harding 7e1ba7895f
Remove broken kani test
This test is failing. I do not want to dive back into kani right now,
just remove it.
2024-02-11 06:58:50 +11:00
Tobin C. Harding db888fa4cc
io: Remove blanket trait impls
Remove the blanket impls of `Read`, `BufRead`, and `Write`. Replace them
with a set of sane impls.

Note, we add code to the `impl_write` macro to implement both
`crate::Write` and `std::io::Write` when "std" feature is
enabled.

Fix: #2432
2024-02-11 06:46:27 +11:00
yancy 1d13020129 test: Add conditional check for debug_assertions
Adding debug_assertions where the test case panics allows the test suite
to run in release mode successfully.
2024-02-10 12:37:50 +01:00
Andrew Poelstra 53461f71c9
Merge rust-bitcoin/rust-bitcoin#2457: Inline private ScriptBuf::p2wpkh function
10cf51c4c5 Inline private ScriptBuf::p2wpkh function (Tobin C. Harding)

Pull request description:

  This function is a bit unclear and is only called once, just inline it.

  Refactor only, no logic changes.

ACKs for top commit:
  apoelstra:
    ACK 10cf51c4c5
  Kixunil:
    ACK 10cf51c4c5

Tree-SHA512: 3907923f2258089a5fc1cc1e1d0b34e99457d69a5822cefa7bf90405d7ac05d570fb2855f62e2b5b4b871485e349e8dc09eb8f14c0676a8bdd70593e345b9b41
2024-02-08 16:20:17 +00:00
Andrew Poelstra 814b72779f
Merge rust-bitcoin/rust-bitcoin#2352: io: Cleanup
f317d87ee6 io: Enable "alloc" from "std" (Tobin C. Harding)
1d00d47b32 io: Add Changelog (Tobin C. Harding)
83397c465c io: Add documentation to all public types and functions (Tobin C. Harding)
2810b08b0d io: Add code comment to feature gate (Tobin C. Harding)
4cf2bf4b40 io: Make Take::read_to_end public (Tobin C. Harding)

Pull request description:

  Do some cleanups to the new `io` crate.

  - Make `Take::read_to_end` public
  - Add CI script
  - Add documentation
  - Add changelog

ACKs for top commit:
  apoelstra:
    ACK f317d87ee6
  Kixunil:
    ACK f317d87ee6

Tree-SHA512: 6c7bc0d629a8995d985f8d8a245579ecdac6d0c10fa885c9a3550cc313a933c05ba087340fa3a638a9b631998157f86d439d17e56208f2457ee9ada9741f203d
2024-02-07 20:07:45 +00:00
Andrew Poelstra 241e78934c
Merge rust-bitcoin/rust-bitcoin#2335: Improve error handling in errors emmited by `keys`
d3d5ee1047 Improve error handling in errors emmited by `keys` (harshit933)

Pull request description:

  For now I have tried to group those functions which can produce more than one error and changed the functions which were  generating single error from `Key::Error` to the respective error. Let me know if this needs to be changed.

  Also in `psbt/error.rs` I have changed the `InvalidPublicKey(crate::crypto:🔑:Error)` to `InvalidPublicKey(crate::crypto:🔑:FromSliceError)`. What should be done here?

  Changes -
  - in `from_slice` changed the `error` to `FromSliceError`.
  - in `verify` changed to `secp256k1::Error` as it can return only one error.
  - in `from_str` changed to `FromSliceError`.
  - in `CompressedPublicKey` changed `verify` from `Error` to `secp236k1::Error` as it only returns one error.
  - introduces CompressedPublicKeyError
  - Removes impl from `bip32.rs`

  Potential fix #2291

ACKs for top commit:
  Kixunil:
    ACK d3d5ee1047
  tcharding:
    ACK d3d5ee1047

Tree-SHA512: 21681bbf87c37eb0caaefe4b356a8a5e1d9b17de3207a0c9294de66b367ab348a7dda1916eb866fe4382e852af14ccab7b9f25a279291cd5beb56bb60b2523c2
2024-02-07 20:01:10 +00:00
Andrew Poelstra 94c6526dbe
Merge rust-bitcoin/rust-bitcoin#2451: Remove m prefix requirement
ccbd09d5fb Remove unnecessary m/ prefix requirement (josibake)

Pull request description:

  `m` in BIP0032 is a variable, not a constant. Requiring it as a constant here is confusing and can lead to erroneous conclusions if using this library as a means of understanding BIP0032.

  Fixes #2449

ACKs for top commit:
  Kixunil:
    ACK ccbd09d5fb
  apoelstra:
    ACK ccbd09d5fb

Tree-SHA512: b641679f958f20a51c1890b23bbaa0153716802d6180dfd1f649e104f291c5a99143e02b75d292b22254201b28e5c53a04ecd7b6a88ff6f964073106419c5ec1
2024-02-07 19:52:16 +00:00
Andrew Poelstra 48dd9842ef
Merge rust-bitcoin/rust-bitcoin#2454: Remove broken kani test
47569302fc Fix broken kani test (Tobin C. Harding)

Pull request description:

  Recently we added a kani test that doesn't work because of `debug_assert` calls in ops traits.

  Instead of opening the can of worms that is correct panic behaviour in ops lets just remove the test.

ACKs for top commit:
  Kixunil:
    ACK 47569302fc
  apoelstra:
    ACK 47569302fc

Tree-SHA512: f4a862d99173c1502e70fe4c2b9085a1f23dd4501f2ae25dc8a92e3edda7804b42b0580ef32fef2a3d5ea0d98e16b6f0fdba456cf4f0926c5b051ec8a6e54c78
2024-02-07 15:42:24 +00:00
josibake ccbd09d5fb
Remove unnecessary m/ prefix requirement
In BIP0032, m is used as a variable for the root extended key. It is not
meant to be used as a constant prefix when serializing paths.

Update the DerivationPath parser to no longer require the m prefix.
Remove the m prefix from the unit tests and the bip32, ecdsa-psbt,
and taproot-psbt examples.

close #2449
2024-02-07 12:17:45 +01:00
Tobin C. Harding 10cf51c4c5
Inline private ScriptBuf::p2wpkh function
This function is a bit unclear and is only called once, just inline it.

Refactor only, no logic changes.
2024-02-07 10:09:02 +11:00