Commit Graph

2528 Commits

Author SHA1 Message Date
Tobin C. Harding cda097dda8 Add ci check for duplicate dependencies
Add a call to `cargo tree --duplicates` in the ci script to ensure that
we do not have any duplicated dependencies.

Kudos to Martin for the idea.
2022-07-22 09:25:21 +10:00
Andrew Poelstra f6e2d959cc
Merge rust-bitcoin/rust-bitcoin#1118: Use infallible conversions: `Hash` -> `secp256k1::Message`
aeede12604 Infallible conversions: `Hash` -> `Message` (Arturo Marquez)

Pull request description:

  Replaces all instances of `secp256k1::Message::from_slice(_).expect(_)` with `secp256k1::Message::from(_)`. This also implements `ThirtyTwoByteHash` for `TapSighashHash`.

  Closes https://github.com/rust-bitcoin/rust-bitcoin/issues/824

ACKs for top commit:
  Kixunil:
    ACK aeede12604
  tcharding:
    ACK aeede12604
  apoelstra:
    ACK aeede12604

Tree-SHA512: cd392f0e93e2560680c579a889a46f7e4484380058b2d8d03b6ecec351d880efa9beea5e3be128158e9e26243b7dfcef1f48a448028d9155958a5af62bcc9ec2
2022-07-21 22:37:39 +00:00
Arturo Marquez aeede12604
Infallible conversions: `Hash` -> `Message`
Replace all instances of
`secp256k1::Message::from_slice(_).expect(_)` with
`secp256k1::Message::from(_)`.

Also adds an implementation of ThirtyTwoByteHash for
TapSighashHash.

Solves https://github.com/rust-bitcoin/rust-bitcoin/issues/824
2022-07-21 11:26:53 -05:00
Andrew Poelstra 2256d4634c
Merge rust-bitcoin/rust-bitcoin#1041: Remove extern crates
21a1cc791c Use pub(crate) for macros instead of macro_use (Tobin C. Harding)
23ee0930c7 Remove extern crate (Tobin C. Harding)
da8b1b5439 Remove unused extern crate test (Tobin C. Harding)
01a8cc6848 Remove extern crate bitcoin_hashes (Tobin C. Harding)

Pull request description:

  Do some clean up of `extern crate` statements now we have edition 2018.

  4 separate but very similar patches, separated to ease review.

ACKs for top commit:
  sanket1729:
    utACK 21a1cc791c
  apoelstra:
    ACK 21a1cc791c

Tree-SHA512: fba33ed8fd261cc756dad8dd94f186a5b38aaf20cf31c3a83ad7633e7bb60a390681c39ebfd913e9e242fffed3b502491d067250d72ebfe666b4d03e93c8b945
2022-07-20 17:31:01 +00:00
Andrew Poelstra 148b56a370
Merge rust-bitcoin/rust-bitcoin#1110: Upgrade to secp v0.24.0
df73576515 Upgrade to secp v0.24.0 (Tobin C. Harding)

Pull request description:

  We just released a new version of `rust-secp256k1`, lets use it.

  This also fixes a bug where we upgraded our `bitcoin_hashes` dependency
  before secp had done theirs.

ACKs for top commit:
  sanket1729:
    utACK df73576515
  apoelstra:
    ACK df73576515

Tree-SHA512: 614eb096203753a6581e444aa11d41c7060342afd7ad103f6118c64bccf604850819ec2852730d1ac83fdea193770fe7600ea70c082a19afaef7ad3e8016d0e4
2022-07-20 17:18:08 +00:00
Andrew Poelstra e8b58fbcb1
Merge rust-bitcoin/rust-bitcoin#1107: Run the formatter
c1d74a3eae Run the formatter (Tobin C. Harding)

Pull request description:

  We recently merged a PR that enables the formatter on the `examples/` directory, at the same time we merged `examples/ecdsa-psbt.rs` but it had formatting issues under the new formatter config.

  Run `cargo +nightly fmt` to format the `examples/` directory.

ACKs for top commit:
  sanket1729:
    utACK c1d74a3eae
  apoelstra:
    ACK c1d74a3eae

Tree-SHA512: 645bf01c7cbb21e2eec23e6fa9c2f5d26e03566059d906e1985af5a9c0186470ef8a0c295f7be0a5226e2f948e2a94aa336de4b3704a31fd8715764f1625737d
2022-07-20 16:23:50 +00:00
Tobin C. Harding df73576515 Upgrade to secp v0.24.0
We just released a new version of `rust-secp256k1`, lets use it.

This also fixes a bug where we upgraded our `bitcoin_hashes` dependency
before secp had done theirs.
2022-07-20 15:44:19 +10:00
Tobin C. Harding c1d74a3eae Run the formatter
We recently merged a PR that enables the formatter on the `examples/`
directory, at the same time we merged `examples/ecdsa-psbt.rs` but CI
had already run so the formatter was not run.

Run `cargo +nightly fmt` to format the `examples/` directory.
2022-07-20 11:32:54 +10:00
Tobin C. Harding 21a1cc791c Use pub(crate) for macros instead of macro_use
For internal macros used only in this crate we do not need to use
`macro_use` and pollute the top level namespace now that we have edition
2018. We can add a `pub(crate) use` statement to each and then path
imports work for the macros like normal types.
2022-07-20 11:25:54 +10:00
Tobin C. Harding 23ee0930c7 Remove extern crate
Now we have edition 2018 we do not need to use `macro_use` or `extern
crate`; `pub use` works with macros. Notable exceptions are `alloc` and
`test`. Also leave the serde rename because touching it opens a can of
worms.
2022-07-20 11:25:54 +10:00
Tobin C. Harding da8b1b5439 Remove unused extern crate test
Recently we removed the "unstable" feature, I missed the duplicate
`extern crate test` when doing so :(

Since we no longer have the "unstable" feature this line of code is
never compiled in.

Remove the unused ``extern crate test`, we have the correct line further
up the file `#[cfg(bench)] extern crate test;`.
2022-07-20 11:24:33 +10:00
Tobin C. Harding 01a8cc6848 Remove extern crate bitcoin_hashes
Now we have edition 2018 we do not need to use `macro_use` or `extern
crate`; `pub use` works with macros.

Remove the extern crate statement and replace it with a pub use
statement. Requires fixing up various imports statements and also
requires importing `sha256t_hash_newtype` macro directly instead of
using a qualified path to it.
2022-07-20 11:23:59 +10:00
sanket1729 e2b038bf3d
Merge rust-bitcoin/rust-bitcoin#1098: Add cargo crev reminder to readme
ded1a32a59 Add cargo crev reminder to readme (Tobin C. Harding)

Pull request description:

  As suggested by the `cargo-crev` project; add a comment to the readme reminding people to use `cargo-crev` to check their dependencies.

  ### Notes

  Today I explored `cargo-crev`, it was new to me before today. I completed proofs for `bech32`, `rust-bitcoinconsenus`, `bitcoin_hashes`, `rust-secp256k1`, and `rust-bitcoin`. I published the proofs to https://github.com/tcharding/crev-proofs.

  If I'm understanding correctly proofs are only useful if the author is connected to a web of trust. So far I only found @dpc within the active rust-bitcoin devs with a `crev-proofs` repo (that includes an ID). Since he wrote `cargo-crev` its not surprising he has one :) Two other devs have `crev-proofs` repos but they are both incomplete (no ID) so I was unable to climb onto their web, so to speak. I am not a particularly well know dev so I imagine it would be more useful if some of you more well know fellas publish proofs as well.

  If we can get a web of trust between all the regular hackers here then we can start doing reviews/proofs of our dependencies and publishing them.

ACKs for top commit:
  Kixunil:
    ACK ded1a32a59
  apoelstra:
    ACK ded1a32a59
  sanket1729:
    ACK ded1a32a59

Tree-SHA512: c2d3b195a522095fcabcf51bb956b339f3a421541652f646f8e56286ebf850aa106d4acbf4defd344b5b0f57dd9626d1dbafe50c9d54b1436fd9e2c8b434fc07
2022-07-19 14:47:04 -07:00
sanket1729 e5acc07789
Merge rust-bitcoin/rust-bitcoin#1040: Introduce rustfmt in a non-invasive manner
ee9a3ec6a1 Enable formatter for "src" (Tobin C. Harding)
743b197124 Add use for Unexpected (Tobin C. Harding)
fd217e72c3 Use f instead of formatter (Tobin C. Harding)
7b50a96ade Do not format prelude module (Tobin C. Harding)
01471f7e65 Shield hash_newtypes from rustfmt (Tobin C. Harding)
65d19d9044 Refactor compile_error message (Tobin C. Harding)
6461e2db8d Run formatter on examples/ (Tobin C. Harding)
fd1c6589ba Add a rustfmt configuration file with explicit ignores (Tobin C. Harding)

Pull request description:

  Looks like we are getting to a place that rustfmt _might_ be able to be used. In an effort to introduce `rustfmt` without requiring devs to do excessively mundane reviews introduce `rustfmt` in a non-invasive manner. What this means is

  - Add a fully fleshed out `rustfmt` config file that explicitly ignores all the source files
  - Enable sections of code one by one so review is easier (including preparatory patches before doing each section).

  This PR currently does `examples` and all the source files at the root level of the crate (i.e. excludes all directories in `src/`). The other directories can then be done one at a time.

  Please see discussion on: https://github.com/rust-bitcoin/rust-bitcoin/pull/959 for more context.

ACKs for top commit:
  sanket1729:
    ACK ee9a3ec6a1
  apoelstra:
    ACK ee9a3ec6a1

Tree-SHA512: f4ff3c031b5d685777e09bac2df59ed8217576b807da7699f44fe00aa509d0b7fe47617a8b3eff00d3125aeece3e010b8f9dd8733d315ccb2adc0e9a7d7f07e3
2022-07-19 13:38:28 -07:00
sanket1729 d6d5415ae4
Merge rust-bitcoin/rust-bitcoin#940: Add psbt watch-only/cold-storage example
cd2369b4f9 Run ecdsa-psbt example in test script (Tobin C. Harding)
6967c0ed6f Add psbt example (Tobin Harding)

Pull request description:

  Add an example PSBT workflow. The workflow we simulate is that of a setup using a watch-only online wallet (contains only public keys) and a cold-storage wallet (contains the private keys).

  We create and update a PSBT using the watch-only wallet then pass the PSBT to the cold-storage wallet to sign.

  Partially resolves #892 (more done in #935).

  ## Note

  This PR includes a sub-module in `examples/psbt.rs` that implements ECDSA signing. This will hopefully eventually be merged into the main crate by way of https://github.com/rust-bitcoin/rust-bitcoin/pull/957.  We have three PRs that add examples/tests of PSBTs that need to do signing, in order to help us design a good AP in #957 I think it would be beneficial to complete and merge these three PRs.

  1. This PR (PSBT ECDSA example)
  2. PBST ECDSA integration test: https://github.com/rust-bitcoin/rust-bitcoin/pull/935
  3. PSBT taproot example: https://github.com/rust-bitcoin/rust-bitcoin/pull/999

  Note to self, this will need a change to `test.sh` if #1079 merges.

ACKs for top commit:
  apoelstra:
    ACK cd2369b4f9
  sanket1729:
    ACK cd2369b4f9. The example is clean, you can address the comments in followups.

Tree-SHA512: c4fb8ec631bf8bfc30534e8974b1f6c4bb7cc6def165a4ee2bb7aa73f5aa7fdc11d2000ca25792a4b534b2c5bf1592efe542ada14a9d702c7dfacbaa808f3aea
2022-07-19 11:50:15 -07:00
Tobin C. Harding ee9a3ec6a1 Enable formatter for "src"
Remove the ignore for the "src" directory, this enables the formatter
for all source files in the `src/` directory.
2022-07-19 13:43:12 +10:00
Tobin C. Harding 743b197124 Add use for Unexpected
In preparation for running the formatter on `src/` and a function local
use statement for `$crate::serde:🇩🇪:Unexpected`, this shortens the
line of code that uses this type preventing the formatter for later
munging that line.
2022-07-19 13:43:12 +10:00
Tobin C. Harding fd217e72c3 Use f instead of formatter
The local variable `formatter` can be shortened to `f` with no loss of
clarity since it is so common.

Done in preparation for running `rustfmt` on `src`.
2022-07-19 13:43:12 +10:00
Tobin C. Harding 7b50a96ade Do not format prelude module
In preparation for running the formatter on all source files at the root
of the crate; skip formatting `prelude` module because we use
unconventional import statements so they to save writing a million
compiler attributes.
2022-07-19 13:43:12 +10:00
Tobin C. Harding 01471f7e65 Shield hash_newtypes from rustfmt
In preparation for running the formatter on root level modules and a
submodule that holds all the macro calls in `hash_types` so we can
configure rustfmt to skip formatting them.
2022-07-19 13:43:12 +10:00
Tobin C. Harding 65d19d9044 Refactor compile_error message
In preparation for enabling rustfmt on `lib.rs` refactor the
`compile_error` call so that the formatter does not touch it.
2022-07-19 13:43:12 +10:00
Tobin C. Harding 6461e2db8d Run formatter on examples/
Remove "examples" from the rustfmt ignore list.
2022-07-19 13:43:12 +10:00
Tobin C. Harding fd1c6589ba Add a rustfmt configuration file with explicit ignores
Add a configuration file but explicitly ignore all source files. The aim
of this is that we can then un-ignore files a few at a time and deal
with issues in a small isolated manner.
2022-07-19 13:43:12 +10:00
Andrew Poelstra 0c22359618
Merge rust-bitcoin/rust-bitcoin#1001: Remove leading colons
73bc2bb058 Remove leading colons from ::core::cmp::Ordering (Tobin C. Harding)
bffe0e840d Remove _most_ leading double colons (Tobin C. Harding)

Pull request description:

  Leading double colons are a relic of edition 2015. Attempt to remove _all_ leading double colons (assuming I didn't miss any).

  - Patch 1 is done mechanically so it can be repeated by reviewers, just search-and-replace ' ::' with '::' (note the leading space).
  - Patch 2 does a single other instance of leading `::`

ACKs for top commit:
  apoelstra:
    ACK 73bc2bb058
  sanket1729:
    utACK 73bc2bb058.

Tree-SHA512: 8f7aafdda1aed5b69dcc83f544e65085dfec6590765839f0a6f259b99872805d1f00602fd9deac05c80a5cac3bc222d454dde0117dff4484e5cd34ea930fdfa1
2022-07-19 01:39:04 +00:00
Tobin C. Harding cd2369b4f9 Run ecdsa-psbt example in test script
We just added a PSBT example file, run it from CI for all test runs.
2022-07-19 11:02:20 +10:00
Tobin Harding 6967c0ed6f Add psbt example
Add an example PSBT workflow. The workflow we simulate is that of a
setup using a watch-only online wallet (contains only public keys) and a
cold-storage wallet (contains the private keys).

We create and update a PSBT using the watch-only wallet then pass the
PSBT to the cold-storage wallet to sign.

Co-authored-by: Dan Gould <d@ngould.dev>
2022-07-19 10:59:48 +10:00
Andrew Poelstra 371407ab7c
Merge rust-bitcoin/rust-bitcoin#1101: Remove the Pay-to-Contract reference from README.
0a0934af16 Remove the Pay-to-Contract reference from README. (sanket1729)

Pull request description:

  Removed in https://github.com/rust-bitcoin/rust-bitcoin/pull/871

ACKs for top commit:
  apoelstra:
    ACK 0a0934af16
  tcharding:
    ACK 0a0934af16

Tree-SHA512: eed4e2f381effba8976668574bb2a19e524cf8d9fff305e1cde2bd09f52ae0100b8d06dc289bb0953433757c15301e89b88f71fa1255e0f18e695bb6e4f4af14
2022-07-18 23:07:20 +00:00
Andrew Poelstra cd790dc7e9
Merge rust-bitcoin/rust-bitcoin#1068: Implement human-readable serde for `Witness`
a1df62a3d9 Witness human-readable serde test (Dr Maxim Orlovsky)
68577dfb50 Witness human-readable serde (Dr Maxim Orlovsky)
93b66c55b3 Witness serde: test binary encoding to be backward-compatible (Dr Maxim Orlovsky)
b409ae78a4 witness: Refactor import statements (Tobin C. Harding)
e23d3a815c Remove unnecessary whitespace (Tobin C. Harding)
ac55b1017e Add whitespace between functions (Tobin C. Harding)

Pull request description:

  This is dr-orlovsky's [PR](https://github.com/rust-bitcoin/rust-bitcoin/pull/899) picked up at his permission in the discussion thread.

  I went through the review comments and implemented everything except the perf optimisations. Also includes a patch at the front of the PR that adds a unit test that can be run to see the "before and after", not sure if we want it in, perhaps it should be removed before merge.

  This PR implicitly fixes 942.

  To test this PR works as advertised run `cargo test display_transaction --features=serde -- --nocapture` after creating a unit test as follows:
  ```rust

      // Used to verify that parts of a transaction pretty print.
      // `cargo test display_transaction --features=serde -- --nocapture`
      #[cfg(feature = "serde")]
      #[test]
      fn serde_display_transaction() {
          let tx_bytes = Vec::from_hex(
              "02000000000101595895ea20179de87052b4046dfe6fd515860505d6511a9004cf12a1f93cac7c01000000\
              00ffffffff01deb807000000000017a9140f3444e271620c736808aa7b33e370bd87cb5a078702483045022\
              100fb60dad8df4af2841adc0346638c16d0b8035f5e3f3753b88db122e70c79f9370220756e6633b17fd271\
              0e626347d28d60b0a2d6cbb41de51740644b9fb3ba7751040121028fa937ca8cba2197a37c007176ed89410\
              55d3bcb8627d085e94553e62f057dcc00000000"
          ).unwrap();
          let tx: Transaction = deserialize(&tx_bytes).unwrap();
          let ser = serde_json::to_string_pretty(&tx).unwrap();
          println!("{}", ser);
      }
  ```

  Fixes: #942

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

Tree-SHA512: d0ef5b8cbf1cf8456eaaea490a793f1ac7dfb18067c4019a2c3a1bdd9627a231a4dd0a0151a4df9af2b32b909d4b384a5bec1dd3e38d44dc6a23f9c40aa4f1f9
2022-07-18 19:06:39 +00:00
sanket1729 0a0934af16 Remove the Pay-to-Contract reference from README.
Removed in https://github.com/rust-bitcoin/rust-bitcoin/pull/871
2022-07-18 10:36:10 -07:00
Andrew Poelstra 5d9f564510
Merge rust-bitcoin/rust-bitcoin#1093: Add new type for sequence
e34bc538c3 Add new type for sequence (Noah Lanson)

Pull request description:

  #1082

  Created a new type for txin sequence field with methods to create sequences with relative time locks from block height or time units.

ACKs for top commit:
  Kixunil:
    ACK e34bc538c3
  tcharding:
    ACK e34bc538c3
  apoelstra:
    ACK e34bc538c3

Tree-SHA512: 6605349d0312cc36ef9a4632f954e59265b3ba5cfd437aa88a37672fe479688aa4a3eff474902f8cc55848efe55caf3f09f321b3a62417842bfc3ec365c40688
2022-07-17 23:04:16 +00:00
Andrew Poelstra bd8d9af18a
Merge rust-bitcoin/rust-bitcoin#1092: Create configuration conditional "bench"
f3b2120ec9 Create configuration conditional bench (Tobin C. Harding)
f60c92ca58 Add informative error message to DO_BENCH (Tobin C. Harding)
c6d5a12b60 Add cargo/rustc sanity calls (Tobin C. Harding)
34d5a3141d Put triple ticks on their own line (Tobin C. Harding)

Pull request description:

  Currently we are unable to build with all features enabled with a non-nightly toolchain, this is because of the use of

      `#![cfg_attr(all(test, feature = "unstable"), feature(test))]`

  which causes the following error when building:

   error[E0554]: `#![feature]` may not be used on the stable release channel

  The "unstable" feature is used to guard bench mark modules, this is widely suggested online but there is a better way.

  When running the bench marks use the following incantation:

      `RUSTFLAGS='--cfg=bench' cargo bench`

  This creates a configuration conditional "bench" that can be used to guard the bench mark modules.

  ```
  #[cfg(bench)]
  mod benches {
      ...
  }
  ```

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

Tree-SHA512: 7ec2a501a30bfe2ce72601077cd675cf5e5ac2f0f93f97fc7e83cb7401606b69ae909b35bfc0ace8bd1ea771ca4fba70e2ad9ac9ba26f2b6e371494cf694c0a8
2022-07-17 23:03:37 +00:00
Andrew Poelstra 06a777d02d
Merge rust-bitcoin/rust-bitcoin#990: Derive Hash on a bunch of types
ef7fef001c Derive Hash on a bunch of types (Tobin C. Harding)

Pull request description:

  In preparation for being able to derive `Hash` on all types in `miniscript`, derive `Hash` on all of the required types.

  This PR includes all the changes in https://github.com/rust-bitcoin/rust-bitcoin/pull/933/files and hence supersedes it.

  ref: https://github.com/rust-bitcoin/rust-miniscript/issues/226

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

Tree-SHA512: 1a1db8b4df2ea8f9e176434bb6fdee5b96f47dcdc6395ebc59e5f5ac5eb13a66fb61e1d90cdbbf12a027f7685fdff21060338c5f27b9d9bf5e9fee452c7c7e83
2022-07-17 22:55:55 +00:00
Andrew Poelstra 2ba759e269
Merge rust-bitcoin/rust-bitcoin#1100: Document PSBT roles and limitation
896ca42a53 Document PSBT roles and limitation (DanGould)

Pull request description:

  The READEME claims rust-bitcoin supports PSBT finalization, but really needs rust-miniscript for that. I think we should make this clear in this crate's PSBT examples as well.

  > > Understanding scripts and witnesses doesn't scream rust-miniscript to me. Miniscript crate is not the first place I'd look, since it's additional.
  >
  > We should probably add it to the README here or something. If I needed to deal with scripts or witnesses in any way beyond reserializing them or hashing scriptpubkeys into addresses, I'd immediately turn to Miniscript. You basically can't work on scripts without it, unless you are doing something very specific.
  >
  > >Anywhere there's PSBT code I expect a finalizer, even if it had documented limitations.
  >
  > Not to be too glib, but suppose we had a finalizer that just always returned an error, and was documented not to finalize any transactions. Would that meet your expectations? It is hard to do much more without Miniscript.
  >

  _Originally posted by apoelstra in https://github.com/rust-bitcoin/rust-bitcoin/issues/630#issuecomment-1175316689_

ACKs for top commit:
  apoelstra:
    ACK 896ca42a53
  tcharding:
    ACK 896ca42a53

Tree-SHA512: e71a65b8c04134d9b3406ea76bb915fa116e4a961f9f6cb24350422f9d550cba26a630e02f9ba352fae63076926532bc4bf2d1001488666a05f18d7774ddda9e
2022-07-17 22:50:36 +00:00
Noah Lanson e34bc538c3 Add new type for sequence 2022-07-16 10:49:03 +10:00
DanGould 896ca42a53
Document PSBT roles and limitation 2022-07-15 14:45:43 +08:00
Tobin C. Harding ef7fef001c Derive Hash on a bunch of types
In preparation for being able to derive `Hash` on all types in
`miniscript`, derive `Hash` on all of the required types.
2022-07-15 10:00:32 +10:00
Andrew Poelstra 9cfa9bd9df
Merge rust-bitcoin/rust-bitcoin#1049: Implement std::error::Error for ParseAmount
5ce34011f2 Implement std::error::Error for ParseAmount (Tobin C. Harding)

Pull request description:

  The `ParseAmountError` does not implement `std::error::Error`, must have been missed when we did the rest.

  Implement `std::error::Error` for `ParseAmount`.

ACKs for top commit:
  Kixunil:
    ACK 5ce34011f2
  apoelstra:
    ACK 5ce34011f2

Tree-SHA512: 8dafc472b7c23b54d856344e786e0f22e8e179f30f6c1011fbf5f8f0c6b1b5d74ed8e4f2638e5f8246f04dbb429e60027db6fe584d51a78957a6e904feb9e8a3
2022-07-14 13:24:35 +00:00
Tobin C. Harding ded1a32a59 Add cargo crev reminder to readme
As suggested by the `cargo-crev` project; add a comment to the readme
reminding people to use `cargo-crev` to check their dependencies.
2022-07-14 13:51:07 +10:00
Tobin C. Harding f3b2120ec9 Create configuration conditional bench
Currently we are unable to build with all features enabled with a
non-nightly toolchain, this is because of the use of

    `#![cfg_attr(all(test, feature = "unstable"), feature(test))]`

which causes the following error when building:

 error[E0554]: `#![feature]` may not be used on the stable release
 channel

The "unstable" feature is used to guard bench mark modules, this is
widely suggested online but there is a better way.

When running the bench marks use the following incantation:

    `RUSTFLAGS='--cfg=bench' cargo bench`

This creates a configuration conditional "bench" that can be used to
guard the bench mark modules.

    #[cfg(bench)]
    mod benches {
        ...
    }
2022-07-14 10:21:01 +10:00
Tobin C. Harding f60c92ca58 Add informative error message to DO_BENCH
If CI script is run with `DO_BENCH=true` and `TOOLCHAIN` set to a
non-nightly toolchain the build will fail with a less than meaningful
error. To assist runners of the script output an informative error
message if an attempt is made at using the wrong toolchain.
2022-07-14 09:53:31 +10:00
Tobin C. Harding c6d5a12b60 Add cargo/rustc sanity calls
Add trivial calls to `cargo` and `rustc` as sanity checks before
starting the script proper.
2022-07-14 09:47:27 +10:00
Andrew Poelstra ed00c2aab9
Merge rust-bitcoin/rust-bitcoin#1065: Upgrade `bitcoin_hashes` dependency
1e46eeaa88 Upgrade to bitcoin_hashes v0.11.0 (Tobin C. Harding)

Pull request description:

  We just released a new version of `bitcoin_hashes`, upgrade the dependency to v0.11.0

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

Tree-SHA512: 32173349c280c255681ebf15a1aa98a28b7016bb813ca907ac55a9797d9d17e1da344e2d8e74c02c2c80d2e6873a03f522c2d55b289b65d7ac55f402b19d689b
2022-07-13 15:46:22 +00:00
Andrew Poelstra 758dbfa1da
Merge rust-bitcoin/rust-bitcoin#1084: Add PublicKey::to_sort_key method for use with sorting by key
24f0441d54 Add PublicKey::to_sort_key method for use with sorting by key (junderw)

Pull request description:

  Replaces #524

  See previous PR for reasoning.

  This solution is a little more straightforward. The name and documentation should be enough to prevent misuse.

  We can also impl a to_sort_key for any CompressedKey added later. (or just impl Ord in a BIP67 compliant way)

  TODO:

  - [x] Add more sorting test vectors. Ideas of edge cases to test are welcome.

ACKs for top commit:
  apoelstra:
    ACK 24f0441d54
  tcharding:
    ACK 24f0441d54
  Kixunil:
    ACK 24f0441d54

Tree-SHA512: 92d68cccaf32e224dd7328edeb3481dd7dcefb2f9090b7381e135e897c21f79ade922815cc766c5adb7ba751b71b51a773d103af6ba13fc081e1f5bfb846b201
2022-07-13 13:02:00 +00:00
Tobin C. Harding 34d5a3141d Put triple ticks on their own line
In markdown triple ticks go on a line of their own. This change does not
effect the rendering in GitHub which is managing to parse this section
correctly already.
2022-07-13 10:10:41 +10:00
Tobin C. Harding 1e46eeaa88 Upgrade to bitcoin_hashes v0.11.0 2022-07-13 09:38:05 +10:00
Dr Maxim Orlovsky a1df62a3d9 Witness human-readable serde test 2022-07-13 09:28:14 +10:00
Dr Maxim Orlovsky 68577dfb50 Witness human-readable serde
Previous implementations of Witness (and Vec<Vec<u8>>) serde serialization
didn't support human-readable representations. This resulted in long unreadable
JSON/YAML byte arrays, which were especially ugly when pretty-printed (a line
per each byte).

Co-authored-by: Tobin C. Harding <me@tobin.cc>
2022-07-13 09:28:14 +10:00
Dr Maxim Orlovsky 93b66c55b3 Witness serde: test binary encoding to be backward-compatible
This also removes tests for JSON backward-compatible encoding. Human-readable 
encoding will be changed in the next commit and this will break backward 
compatibility, thus that part of the test is removed.
2022-07-13 09:23:50 +10:00
Andrew Poelstra a24b223ae4
Merge rust-bitcoin/rust-bitcoin#1094: Remove extern crate core statement
35edcaa4ca Remove extern crate core statement (Tobin C. Harding)

Pull request description:

  Now that we have an MSRV of 1.41.1 we no longer need `extern crate core`, remove it.

ACKs for top commit:
  apoelstra:
    ACK 35edcaa4ca
  Kixunil:
    ACK 35edcaa4ca

Tree-SHA512: 0efa0f05d3e9f797c493757fce6ca7703dd8439dbce4e9ff8113494fc71691ab4171c6f0fb5239b57ff5f0e223d48b057265a3df79898a399ca455040580aab2
2022-07-12 23:00:12 +00:00
Andrew Poelstra 4965495354
Merge rust-bitcoin/rust-bitcoin#1066: Upgrade to secp256k1 v0.23.0
36f29d4357 Upgrade to secp256k1 v0.23.0 (Tobin C. Harding)

Pull request description:

  We recently released a new version of `rust-secp256k1`, upgrade to use it.

ACKs for top commit:
  apoelstra:
    ACK 36f29d4357
  Kixunil:
    ACK 36f29d4357

Tree-SHA512: 46a909dec8bc59daa78acdb76824d93f4f1da0e9736cf6ca443d3bbadfa43867e720293bb7c4919cb0658e75ec59daeffea080611f0e7eed4df439ddac0305de
2022-07-12 14:03:49 +00:00