Commit Graph

5171 Commits

Author SHA1 Message Date
merge-script 4fa5732486
Merge rust-bitcoin/rust-bitcoin#3417: Update CHANGELOG files
4d18624435 Update CHANGELOG files (Tobin C. Harding)

Pull request description:

  When we create point releases we merge the release tracking PR directly into the version branch, including the changelog entries. This means the changes never end up on `master`. We need to make a mental note to patch `master` anytime we merge a point release PR.

  Audit all crates with a non-zero current point release and check we have the changelog entries on `master`.

ACKs for top commit:
  apoelstra:
    ACK 4d18624435 successfully ran local tests

Tree-SHA512: 826a5e5a565237d4f499dd56471b01ee7970b04125931f5a49355099507e24ae4452108004276939884e338201dd3ae7b66fd68439523b6bb1b07b83d3759ae4
2024-10-15 17:23:33 +00:00
Jamil Lambert, PhD 88b53a471e
Unify deprecated note field format
All the deprecated note fields have been changed to be lower case and in
the format "use `a` instead".
2024-10-15 15:16:01 +01:00
Jamil Lambert, PhD 49914c50f4
Remove `allow_unused` flag in serde
In serde `#[allow(unused_variables)]` has been dropped and the unused
variables "used" when `debug_assertions` is off.
2024-10-15 14:40:54 +01:00
Jamil Lambert, PhD 8696cb4b07
Fix unused import warning
An import was only used behind a feature gate.  The feature gate has
been added to the use statement to remove the warning.
2024-10-15 14:05:19 +01:00
Jamil Lambert, PhD fbc7aa7fd5
Remove unnecessary lifetimes
New lint warnings from recent nightly toolchain show some explicit
lifetimes that can be omitted.

The unnecessary lifetimes have been removed.
2024-10-15 14:02:56 +01:00
Nick Johnson a5f5c795f5 Add the ChaCha20Poly1305 AEAD crate
* The ChaCha20 stream cipher and the Poly1305 message authenticator
are used in BIP324's encrypted P2P transport protocol.
2024-10-14 20:55:03 -07:00
Chris Hyunhum Cho 88a35c8918
test: add test for new sign fn 2024-10-15 12:51:47 +09:00
Shing Him Ng 4a8e2c3704 Add tests for sequence 2024-10-14 22:41:23 -05:00
Steven Roose f2564b86d0
Make changelogs more discoverable
Add links to the README and also add a workspace root dummy CHANGELOG
file with the same links.

This is Steven's patch from #3169 shepherded in by me.

Co-developed-by: Steven Roose <steven@stevenroose.org>
2024-10-15 14:07:41 +11:00
merge-script da462d67ef
Merge rust-bitcoin/rust-bitcoin#3354: Enable attribute `deprecated_in_future`
e68da281ff Warn on future deprecations (Tobin C. Harding)
2cc944578d Fully deprecate Hash::from_slice (Tobin C. Harding)
8bc3b2e2c4 Stop using deprecated to_vec (Tobin C. Harding)

Pull request description:

  This is a bit curly because of current `serde` logic, fixed in patch 4. All the other patches are trivial.

ACKs for top commit:
  apoelstra:
    ACK e68da281ff successfully ran local tests

Tree-SHA512: f78b3f91923e3278bdec09c321c57f2c25fc92a6e2a3daa8acd60dc1f454dfc5f092424fee113e4e03ac01d80d27a959f346068ecad7bc7894ebb15d98228a40
2024-10-15 02:20:50 +00:00
Tobin C. Harding ff64fa3c46
Move block::Header to primitives
Introduce an extension trait and move the `block::Header` type to
`primitives`.

Nothing surprising here.
2024-10-15 11:04:00 +11:00
Tobin C. Harding 65925117a0
Manually implement block::Header::block_hash
We want to move the `block_hash` function to `primitives` but it uses
`Encodable` which currently lives in `bitcoin`. Just implement it
manually.

We added a regression test already in a previous commit to check that
this is correct.
2024-10-15 10:46:28 +11:00
Tobin C. Harding b02ab25342
Add regression test for block_hash function
In preparation for manually implementing `Header::block_hash` add a
regression test.
2024-10-15 10:38:50 +11:00
Tobin C. Harding 5614694b69
block: Remove wildcard re-export
Use explicit re-exports for `primitives` types when re-exporting from
the `block` module.
2024-10-15 10:01:03 +11:00
Tobin C. Harding e68da281ff
Warn on future deprecations
We use `TBD` in our `deprecated` string and it was discovered that there
is an exception on this string so as not to warn because it is used
internally by the Rust language. However there is a special lint to
enable warnings, lets use it.

Add `#![warn(deprecated_in_future)]` to the coding conventions section
of all crates except `fuzz`.
2024-10-15 07:56:06 +11:00
Tobin C. Harding 2cc944578d
Fully deprecate Hash::from_slice
We had an initial go at this but we didn't do the `Hash` trait method.
In order to do so we need to hack the serde code a fair bit, note the
public visitor types.
2024-10-15 07:56:05 +11:00
Tobin C. Harding 8bc3b2e2c4
Stop using deprecated to_vec
Recently we deprecated `to_vec` in favour of `to_bytes` however we
continued to use `to_vec` in a few places. This wasn't noticed because
of our usage of `TBD` in the `deprecated` attribute.

Use `to_bytes` instead of `to_vec`.
2024-10-15 07:49:48 +11:00
merge-script 299754c2c2
Merge rust-bitcoin/rust-bitcoin#3460: Add tests for block version
0e0192c025 Add tests for block version (Shing Him Ng)

Pull request description:

  Add unit tests for block `Version`

ACKs for top commit:
  tcharding:
    ACK 0e0192c025
  apoelstra:
    ACK 0e0192c025 successfully ran local tests

Tree-SHA512: 15b9d69d44335f6b2c75a9a8950588915247e3b1108624f8d797e5d8b6037e9e927bab97dba8283021da5d223b84e6b9cf94c34eb5204c5da060f42590634833
2024-10-14 14:04:55 +00:00
Shing Him Ng 0e0192c025 Add tests for block version 2024-10-13 22:07:31 -05:00
merge-script 1b23d1c66c
Merge rust-bitcoin/rust-bitcoin#3431: Move script types to `primitives`
d649c06238 Move script types to primitives (Tobin C. Harding)
ec4635904b Inline bytes_to_asm_fmt into Script::Display impl (Tobin C. Harding)

Pull request description:

  First patch removes `bytes_to_asm_fmt` as requested by Kix here: https://github.com/rust-bitcoin/rust-bitcoin/pull/3194#discussion_r1756557768

  Second patch does the move. The move is minimal but there is quite a bit of code moved in `script/mod.rs` - I believe it is as minimal as required as well.

ACKs for top commit:
  apoelstra:
    ACK d649c06238 successfully ran local tests

Tree-SHA512: 329a23948ac5617402a724b734d81cde8ab1f57ddd4860f858880618e260ea8b5cc89315de1fd93ae32787d5e8508fd604a41f003b1f5772a773b5b1648d382c
2024-10-14 00:31:38 +00:00
Tobin C. Harding d649c06238
Move script types to primitives
Move the `Script` and `ScriptBuf` types to `primitives`, nothing else.
2024-10-14 09:02:39 +11:00
Tobin C. Harding ec4635904b
Inline bytes_to_asm_fmt into Script::Display impl
This function does not need to exist anymore because it is exactly the
same as what is produced by the `Display` impl.
2024-10-14 09:02:26 +11:00
merge-script 48b2975870
Merge rust-bitcoin/rust-bitcoin#3456: feat: add sign fn for sign_message
c41a6e9b1b feat: add sign fn for sign_message (ChrisCho-H)

Pull request description:

  While it's not hard to create the signature using `secp256k1` modules with `signed_msg_hash`, it's much more convenient and safe to provide one-way function to generate signed signature(even without the understanding about the semantics of bitcoin message signing).

ACKs for top commit:
  apoelstra:
    ACK c41a6e9b1b successfully ran local tests
  tcharding:
    ACK c41a6e9b1b

Tree-SHA512: 84caea275059381040c71100badb54556dd105722f79ac43d2df7eb0e5428cf8e7acc2d7f262625dd008837099a928c3c8be858f9ab11838c2eec1786e9f1844
2024-10-13 21:13:39 +00:00
merge-script cc5b46bfc7
Merge rust-bitcoin/rust-bitcoin#3462: Automated nightly rustfmt (2024-10-13)
f1733309e0 2024-10-13 automated rustfmt nightly (Fmt Bot)

Pull request description:

  Automated nightly `rustfmt` changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

ACKs for top commit:
  apoelstra:
    ACK f1733309e0 successfully ran local tests

Tree-SHA512: 465336b92d9b8a61afbc8e8d0560f3b41a732e3245d764447cc2a5429f693e29172bebeca756a91b5a1f3a16d42728960a526111bbd92316f72b46b420373641
2024-10-13 16:40:17 +00:00
merge-script 7a5816ce0b
Merge rust-bitcoin/rust-bitcoin#3461: Remove unused import
8f79a0560e Remove unused import (yancy)

Pull request description:

  Ran `./maintainer-tools/ci/run_task.sh stable` without error locally, so I don't think this import is needed.

ACKs for top commit:
  tcharding:
    ACK 8f79a0560e
  apoelstra:
    ACK 8f79a0560e successfully ran local tests

Tree-SHA512: 255b97066eb8b75bf33a0846ecda739695441273ff98703516b46983a9fe5c76e76c79ab2548bd64fd654dd8659ea5392b8079142b447e67a6a31d75883aa8d1
2024-10-13 15:24:27 +00:00
merge-script 4717f4d1af
Merge rust-bitcoin/rust-bitcoin#3459: feat: replace ENABLE_RBF_NO_LOCKTIME with ENABLE_LOCKTIME_AND_RBF
3565f70df9 feat: replace ENABLE_RBF_NO_LOCKTIME with ENABLE_LOCKTIME_AND_RBF (ChrisCho-H)

Pull request description:

  follow up https://github.com/rust-bitcoin/rust-bitcoin/pull/3455.
  Replace all `ENABLE_RBF_NO_LOCKTIME`(deprecated) with `ENABLE_LOCKTIME_AND_RBF`

ACKs for top commit:
  apoelstra:
    ACK 3565f70df9 successfully ran local tests
  tcharding:
    ACK 3565f70df9

Tree-SHA512: 4c6c6ad9ac89efe042cf239ce68594e715dbc827c1ae430819e2f16d2191f82d81f1e55b348f8176fc21454cf9d25fc9da1a414982cd3483d5f9f39834441f6c
2024-10-13 14:09:42 +00:00
Fmt Bot f1733309e0 2024-10-13 automated rustfmt nightly 2024-10-13 01:20:28 +00:00
yancy 8f79a0560e Remove unused import 2024-10-12 19:20:11 -05:00
merge-script 65e290a0ce
Merge rust-bitcoin/rust-bitcoin#3450: Add version three variant to transaction version
9e6b8faf84 feat: add version three variant to transaction version (Rob N)

Pull request description:

  Topologically restricted transactions are now considered standard as of Bitcoin 28.0.

ACKs for top commit:
  apoelstra:
    ACK 9e6b8faf84 successfully ran local tests
  tcharding:
    ACK 9e6b8faf84

Tree-SHA512: 289b986304e206802f04cee6607087167f6d91d8a81d4fc49ed01c430f4f6ad00b44646fbefdd000148fc5bfe2d257f92b386bfaf4405c482e4e438d830ab586
2024-10-12 17:55:21 +00:00
merge-script ae2358610d
Merge rust-bitcoin/rust-bitcoin#3457: Fix unused import
a250c8eee4 Fix unused imports (Shing Him Ng)

Pull request description:

  Found some unused imports while working on something unrelated

ACKs for top commit:
  apoelstra:
    ACK a250c8eee4 successfully ran local tests
  tcharding:
    ACK a250c8eee4

Tree-SHA512: ffa4fcddb91c849df7885a6d734405ab704e0353293fa3462a981e179ea49091990df4482eee2324e7b5ef250a0890b2e8983d53ec288ca6e8ada77e30c102dc
2024-10-12 14:56:48 +00:00
Andrew Poelstra 76f022d380 Merge rust-bitcoin/rust-bitcoin#3438: Implement Arbitrary for Block
0c824c9c68 Implement Arbitrary for Block (Shing Him Ng)

Pull request description:

  Implementing `Arbitrary` for `Block` and its child types

ACKs for top commit:
  apoelstra:
    ACK 0c824c9c68 successfully ran local tests
  tcharding:
    ACK 0c824c9c68

Tree-SHA512: 407acd4155ca7496bf7c59af19f103b22b4c74dd013c2e2c42aae690ba7264ecd42ed034355cf8895f2532f8cef77dfdbeac250301a6973afd5f3920be7e4310
2024-10-12 14:15:28 +00:00
ChrisCho-H 3565f70df9 feat: replace ENABLE_RBF_NO_LOCKTIME with ENABLE_LOCKTIME_AND_RBF 2024-10-12 12:42:43 +09:00
ChrisCho-H c41a6e9b1b feat: add sign fn for sign_message 2024-10-12 12:37:04 +09:00
Rob N 9e6b8faf84
feat: add version three variant to transaction version 2024-10-11 06:38:58 -10:00
merge-script 0f887707ea
Merge rust-bitcoin/rust-bitcoin#3455: Use new Sequence::ENABLE_RBF_AND_LOCKTIME
5e0a07e74f Use new Sequence::ENABLE_RBF_AND_LOCKTIME (Tobin C. Harding)

Pull request description:

  We just renamed this and forgot to use the new name. This should have been caught by CI.

ACKs for top commit:
  apoelstra:
    ACK 5e0a07e74f successfully ran local tests

Tree-SHA512: 0830184f3afa7b42d53460444637d16bace98438fac14a53e3c6f2fdb5b801847f3864d104be2e5311131b2db432e7ef8dd20ad833420ea05303fc93bd4dc68c
2024-10-11 14:59:57 +00:00
merge-script 03715872cd
Merge rust-bitcoin/rust-bitcoin#3432: fmt: Use style_edition = 2021
323e706113 Add rustfmt config option style_edition (Tobin C. Harding)
2e4179ed0f Run the formatter (Tobin C. Harding)
2c40b4f4ec Configure formmater to skip read_compact_size (Tobin C. Harding)

Pull request description:

  `rustfmt` is emitting:

   Warning: the `version` option is deprecated. Use `style_edition` instead.

  As suggested add a config option and set it to 2021.

  - Patch 1: Manually configure rustfmt to skip some code
  - Patch 2: Run the formmater with current configuration
  - Patch 3: Add the new config option (remove old one), introduces no new formatting requirements

ACKs for top commit:
  apoelstra:
    ACK 323e706113 successfully ran local tests

Tree-SHA512: 7f80cc89f86d2d50936e51704344955fa00532424c29c0ee3fae1a6836e24030f909b770d28da13e1c5efde3d49ad7d52c6d909d120fb09c33abf1755f62cd38
2024-10-11 12:48:50 +00:00
Shing Him Ng a250c8eee4 Fix unused imports 2024-10-10 23:42:51 -05:00
Shing Him Ng 0c824c9c68 Implement Arbitrary for Block 2024-10-10 23:30:39 -05:00
Tobin C. Harding 5e0a07e74f
Use new Sequence::ENABLE_RBF_AND_LOCKTIME
We just renamed this and forgot to use the new name. This should have
been caught by CI.
2024-10-11 11:46:34 +11:00
merge-script fe62d94ff7
Merge rust-bitcoin/rust-bitcoin#3296: Remove the `SliceIndex` implementation from hash types
3b7ba4f977 Remove the SliceIndex implementation from hash types (Tobin C. Harding)

Pull request description:

  If folk really want to index into a hash they can us `as_byte_array` then index that.

  Includes a bump to the version number of `hashes` to `v0.15.0` - this is because otherwise `secp` won't build since we are breaking an API that is used in the current release of secp.

  Fix: #3115

ACKs for top commit:
  apoelstra:
    ACK 3b7ba4f977 successfully ran local tests

Tree-SHA512: 0ba93268cd8133fe683183c5e39ab8b3bf25c15bfa5767d2934d67a5f6a0d2f65f6c9304952315fe8a33abfce488d810a8d28400a28facfb658879ed06acca63
2024-10-10 22:39:21 +00:00
merge-script d5ebb19543
Merge rust-bitcoin/rust-bitcoin#3437: Move `block::Version` to primitives
70264bfcec Move block::Version to primitives (Tobin C. Harding)
819d8d72e8 Stop using private Version constructor (Tobin C. Harding)

Pull request description:

  This is a straight up move of the whole type because there are only three methods, a getter, a setter, and `is_signalling_soft_fork`.

  If we use an extension trait for `is_signalling_soft_fork` then we have to make the two private associated consts public which is in my opinion worse.

  Patch 1 is preparation, use getter/setter, patch 2 does the move.

ACKs for top commit:
  apoelstra:
    ACK 70264bfcec successfully ran local tests

Tree-SHA512: b61e853b4b96cb1cc56c7bfb67cc6c3ba7c631cb9e540393eb780dcf63bd2d934058794f2ac0145b4b5404a6a68887c3a1d225b2d87b57415474c05d3ef2811f
2024-10-10 21:28:44 +00:00
merge-script 27f6f17974
Merge rust-bitcoin/rust-bitcoin#3430: Add checked div by weight to amount
a0c58a4a8b Add checked weight division to Amount (yancy)
8def40a991 Add assertions to checked_weight_mul test (yancy)
16ce70d3a6 Add div_by_weight test to fee_rate (yancy)

Pull request description:

  Adds the checked variant of `amount / weight`.  I also added a test to the non-checked version for comparison so the reviewer knows they compute the same way (integer division rounded down).

  Also added assertion to `checked_weight_mul test` showing the results are rounded up.

ACKs for top commit:
  tcharding:
    ACK a0c58a4a8b
  apoelstra:
    ACK a0c58a4a8b successfully ran local tests

Tree-SHA512: cf14123ed261d100e3261a720c26f8c10368f05225e32eaa246f25ab766d20515db5feb98335d4e3e08a8146a70db65ff64670da3f75e7764e8f86ef534d2663
2024-10-10 18:19:16 +00:00
merge-script 1784c514b9
Merge rust-bitcoin/rust-bitcoin#3449: Fix fuzztest failure
1f8fdc6ccb Fix type used in bytes_hashed addition (Jamil Lambert, PhD)
d37b8a5dd2 Fix HashEngine.length name change to bytes_hashed (Jamil Lambert, PhD)

Pull request description:

  In #3298 `HashEngine.length` was changed to `HashEngine.bytes_hashed` and changed from `usize` to `u64`.

  Behind a `hashes_fuzz` feature gate there were a couple of occurrences of length that had not been updated and caused a fuzztest failure.  These have been updated to the new name and type.

  Fix #3448

ACKs for top commit:
  tcharding:
    ACK 1f8fdc6ccb
  apoelstra:
    ACK 1f8fdc6ccb successfully ran local tests

Tree-SHA512: 980a1f9ec71d7984a172c2f9439281c3bb3f36cccfb5c83fcf7d61b8cfa753ada56f9cbc6e7495c09bc23aa0451ab1ec7dd2e58c1f2a9b8164b3e03129378251
2024-10-10 17:43:29 +00:00
merge-script aa66992827
Merge rust-bitcoin/rust-bitcoin#3451: Remove unnecessary lifetime
afa4e1ed56 Remove unnecessary lifetime (Tobin C. Harding)

Pull request description:

  Found by `rustc` after update to recent nightly version to `nightly-2024-10-06`.

ACKs for top commit:
  apoelstra:
    ACK afa4e1ed56 successfully ran local tests
  storopoli:
    ACK afa4e1ed56

Tree-SHA512: a4b592f243d7f63c6abe12acfb872068f309af4a6ee130cc3a454235b1d2a5f2ef9219ee64927aa39cff978535b1b0944a4e19d1c8e30d00e390e982ea4b3574
2024-10-10 17:07:44 +00:00
Tobin C. Harding 2f656f77ba
psbt: Use u64 for key type
Currently we use `u8` for key type but it was pointed out that we should
be using a `u64` and encoding it as a compact type. The reason our code
works now is because the compact type encoding for a `u8` (less than
253) is the same as for a `u8`.

This breaks the `serde` impl, as shown by changes to the regression tests.
2024-10-10 11:37:40 +11:00
Tobin C. Harding 323e706113
Add rustfmt config option style_edition
rustfmt is emitting:

Warning: the version option is deprecated. Use style_edition instead.

As suggested add a config option and set it to 2021.
2024-10-10 10:41:16 +11:00
Tobin C. Harding 2e4179ed0f
Run the formatter
Run `just fmt`, no other manual changes.
2024-10-10 10:39:53 +11:00
Tobin C. Harding 2c40b4f4ec
Configure formmater to skip read_compact_size 2024-10-10 10:39:36 +11:00
Tobin C. Harding afa4e1ed56
Remove unnecessary lifetime
Found by rustc, after update to recent nightly version to
`nightly-2024-10-06`.
2024-10-10 10:18:49 +11:00
Jamil Lambert, PhD 1f8fdc6ccb
Fix type used in bytes_hashed addition
`length` was changed to `bytes_hashed` and the type changed from `usize`
to `u64`.

The addition under the `hashes_fuzz` feature flag has been changed from
`usize` to `u64` to fix the fuzz error.
2024-10-09 16:19:07 +01:00