Merge rust-bitcoin/rust-bitcoin#1736: Improve README
2f7bf1e7be
readme: Document that we do not support altcoins (Tobin C. Harding)5d66f72e5c
readme: Enforce 100 column width (Tobin C. Harding) Pull request description: Improve the readme by doing: - Patch 1: Enforce column width to 100 - Patch 2: Update policy on altcoin support (or lack of) Excuse the OCD leading to patch one, its formatting only no content change. ACKs for top commit: Kixunil: Enthusiastic ACK2f7bf1e7be
apoelstra: ACK2f7bf1e7be
Tree-SHA512: e63a2fba5a2334742bd6f701b04d37af8ffcc85de71e0ca40457a1198eff2d26b673a718a352ba2129e5168c69ee723c78dc45ecd3dda9eaed9446ae7f4df2e0
This commit is contained in:
commit
d5f47912fe
101
README.md
101
README.md
|
@ -31,43 +31,37 @@ Supports (or should support)
|
||||||
For JSONRPC interaction with Bitcoin Core, it is recommended to use
|
For JSONRPC interaction with Bitcoin Core, it is recommended to use
|
||||||
[rust-bitcoincore-rpc](https://github.com/rust-bitcoin/rust-bitcoincore-rpc).
|
[rust-bitcoincore-rpc](https://github.com/rust-bitcoin/rust-bitcoincore-rpc).
|
||||||
|
|
||||||
It is recommended to always use [cargo-crev](https://github.com/crev-dev/cargo-crev)
|
It is recommended to always use [cargo-crev](https://github.com/crev-dev/cargo-crev) to verify the
|
||||||
to verify the trustworthiness of each of your dependencies, including this one.
|
trustworthiness of each of your dependencies, including this one.
|
||||||
|
|
||||||
## Known limitations
|
## Known limitations
|
||||||
|
|
||||||
### Consensus
|
### Consensus
|
||||||
|
|
||||||
This library **must not** be used for consensus code (i.e. fully validating
|
This library **must not** be used for consensus code (i.e. fully validating blockchain data). It
|
||||||
blockchain data). It technically supports doing this, but doing so is very
|
technically supports doing this, but doing so is very ill-advised because there are many deviations,
|
||||||
ill-advised because there are many deviations, known and unknown, between
|
known and unknown, between this library and the Bitcoin Core reference implementation. In a
|
||||||
this library and the Bitcoin Core reference implementation. In a consensus
|
consensus based cryptocurrency such as Bitcoin it is critical that all parties are using the same
|
||||||
based cryptocurrency such as Bitcoin it is critical that all parties are
|
rules to validate data, and this library is simply unable to implement the same rules as Core.
|
||||||
using the same rules to validate data, and this library is simply unable
|
|
||||||
to implement the same rules as Core.
|
|
||||||
|
|
||||||
Given the complexity of both C++ and Rust, it is unlikely that this will
|
Given the complexity of both C++ and Rust, it is unlikely that this will ever be fixed, and there
|
||||||
ever be fixed, and there are no plans to do so. Of course, patches to
|
are no plans to do so. Of course, patches to fix specific consensus incompatibilities are welcome.
|
||||||
fix specific consensus incompatibilities are welcome.
|
|
||||||
|
|
||||||
### Support for 16-bit pointer sizes
|
### Support for 16-bit pointer sizes
|
||||||
|
|
||||||
16-bit pointer sizes are not supported and we can't promise they will be.
|
16-bit pointer sizes are not supported and we can't promise they will be. If you care about them
|
||||||
If you care about them please let us know, so we can know how large the interest
|
please let us know, so we can know how large the interest is and possibly decide to support them.
|
||||||
is and possibly decide to support them.
|
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
Currently can be found on [docs.rs/bitcoin](https://docs.rs/bitcoin/).
|
Currently can be found on [docs.rs/bitcoin](https://docs.rs/bitcoin/). Patches to add usage examples
|
||||||
Patches to add usage examples and to expand on existing docs would be extremely
|
and to expand on existing docs would be extremely appreciated.
|
||||||
appreciated.
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Contributions are generally welcome. If you intend to make larger changes please
|
Contributions are generally welcome. If you intend to make larger changes please discuss them in an
|
||||||
discuss them in an issue before PRing them to avoid duplicate work and
|
issue before PRing them to avoid duplicate work and architectural mismatches. If you have any
|
||||||
architectural mismatches. If you have any questions or ideas you want to discuss
|
questions or ideas you want to discuss please join us in
|
||||||
please join us in
|
|
||||||
[#bitcoin-rust](https://web.libera.chat/?channel=#bitcoin-rust) on
|
[#bitcoin-rust](https://web.libera.chat/?channel=#bitcoin-rust) on
|
||||||
[libera.chat](https://libera.chat).
|
[libera.chat](https://libera.chat).
|
||||||
|
|
||||||
|
@ -100,18 +94,20 @@ review them.
|
||||||
|
|
||||||
## Installing Rust
|
## Installing Rust
|
||||||
|
|
||||||
Rust can be installed using your package manager of choice or
|
Rust can be installed using your package manager of choice or [rustup.rs](https://rustup.rs). The
|
||||||
[rustup.rs](https://rustup.rs). The former way is considered more secure since
|
former way is considered more secure since it typically doesn't involve trust in the CA system. But
|
||||||
it typically doesn't involve trust in the CA system. But you should be aware
|
you should be aware that the version of Rust shipped by your distribution might be out of date.
|
||||||
that the version of Rust shipped by your distribution might be out of date.
|
Generally this isn't a problem for `rust-bitcoin` since we support much older versions than the
|
||||||
Generally this isn't a problem for `rust-bitcoin` since we support much older
|
current stable one (see MSRV section).
|
||||||
versions than the current stable one (see MSRV section).
|
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
The cargo feature `std` is enabled by default. At least one of the features `std` or `no-std` or both must be enabled.
|
The cargo feature `std` is enabled by default. At least one of the features `std` or `no-std` or
|
||||||
|
both must be enabled.
|
||||||
|
|
||||||
Enabling the `no-std` feature does not disable `std`. To disable the `std` feature you must disable default features. The `no-std` feature only enables additional features required for this crate to be usable without `std`. Both can be enabled without conflict.
|
Enabling the `no-std` feature does not disable `std`. To disable the `std` feature you must disable
|
||||||
|
default features. The `no-std` feature only enables additional features required for this crate to
|
||||||
|
be usable without `std`. Both can be enabled without conflict.
|
||||||
|
|
||||||
The library can be built and tested using [`cargo`](https://github.com/rust-lang/cargo/):
|
The library can be built and tested using [`cargo`](https://github.com/rust-lang/cargo/):
|
||||||
|
|
||||||
|
@ -127,12 +123,13 @@ You can run tests with:
|
||||||
cargo test
|
cargo test
|
||||||
```
|
```
|
||||||
|
|
||||||
Please refer to the [`cargo` documentation](https://doc.rust-lang.org/stable/cargo/) for more detailed instructions.
|
Please refer to the [`cargo` documentation](https://doc.rust-lang.org/stable/cargo/) for more
|
||||||
|
detailed instructions.
|
||||||
|
|
||||||
### Building the docs
|
### Building the docs
|
||||||
|
|
||||||
We build docs with the nightly toolchain, you may wish to use the following
|
We build docs with the nightly toolchain, you may wish to use the following shell alias to check
|
||||||
shell alias to check your documentation changes build correctly.
|
your documentation changes build correctly.
|
||||||
|
|
||||||
```
|
```
|
||||||
alias build-docs='RUSTDOCFLAGS="--cfg docsrs" cargo +nightly rustdoc --features="$FEATURES" -- -D rustdoc::broken-intra-doc-links'
|
alias build-docs='RUSTDOCFLAGS="--cfg docsrs" cargo +nightly rustdoc --features="$FEATURES" -- -D rustdoc::broken-intra-doc-links'
|
||||||
|
@ -168,25 +165,24 @@ then run with `RUSTFLAGS='--cfg=mutate' cargo +nightly mutagen`.
|
||||||
|
|
||||||
### Code verification
|
### Code verification
|
||||||
|
|
||||||
We have started using [kani](https://github.com/model-checking/kani), install with `cargo install
|
We have started using [kani](https://github.com/model-checking/kani), install with `cargo install --locked kani-verifier`
|
||||||
--locked kani-verifier` (no need to run `cargo kani setup`). Run the tests with `cargo kani`.
|
(no need to run `cargo kani setup`). Run the tests with `cargo kani`.
|
||||||
|
|
||||||
## Pull Requests
|
## Pull Requests
|
||||||
|
|
||||||
Every PR needs at least two reviews to get merged. During the review phase
|
Every PR needs at least two reviews to get merged. During the review phase maintainers and
|
||||||
maintainers and contributors are likely to leave comments and request changes.
|
contributors are likely to leave comments and request changes. Please try to address them, otherwise
|
||||||
Please try to address them, otherwise your PR might get closed without merging
|
your PR might get closed without merging after a longer time of inactivity. If your PR isn't ready
|
||||||
after a longer time of inactivity. If your PR isn't ready for review yet please
|
for review yet please mark it by prefixing the title with `WIP: `.
|
||||||
mark it by prefixing the title with `WIP: `.
|
|
||||||
|
|
||||||
### CI Pipeline
|
### CI Pipeline
|
||||||
|
|
||||||
The CI pipeline requires approval before being run on each MR.
|
The CI pipeline requires approval before being run on each MR.
|
||||||
|
|
||||||
In order to speed up the review process the CI pipeline can be run locally using
|
In order to speed up the review process the CI pipeline can be run locally using
|
||||||
[act](https://github.com/nektos/act). The `fuzz` and `Cross` jobs will be
|
[act](https://github.com/nektos/act). The `fuzz` and `Cross` jobs will be skipped when using `act`
|
||||||
skipped when using `act` due to caching being unsupported at this time. We do
|
due to caching being unsupported at this time. We do not *actively* support `act` but will merge PRs
|
||||||
not *actively* support `act` but will merge PRs fixing `act` issues.
|
fixing `act` issues.
|
||||||
|
|
||||||
### Githooks
|
### Githooks
|
||||||
|
|
||||||
|
@ -201,16 +197,12 @@ Alternatively add symlinks in your `.git/hooks` directory to any of the githooks
|
||||||
|
|
||||||
## Policy on Altcoins/Altchains
|
## Policy on Altcoins/Altchains
|
||||||
|
|
||||||
Patches which add support for non-Bitcoin cryptocurrencies by adding constants
|
Since the altcoin landscape includes projects which [frequently appear and disappear, and are poorly
|
||||||
to existing enums (e.g. to set the network message magic-byte sequence) are
|
designed anyway](https://download.wpsoftware.net/bitcoin/alts.pdf) we do not support any altcoins.
|
||||||
welcome. Anything more involved will be considered on a case-by-case basis,
|
Supporting Bitcoin properly is already difficult enough and we do not want to increase the
|
||||||
as the altcoin landscape includes projects which [frequently appear and
|
maintenance burden and decrease API stability by adding support for other coins.
|
||||||
disappear, and are poorly designed anyway](https://download.wpsoftware.net/bitcoin/alts.pdf)
|
|
||||||
and keeping the codebase maintainable is a large priority.
|
|
||||||
|
|
||||||
In general, things that improve cross-chain compatibility (e.g. support for
|
Our code is public domain so by all means fork it and go wild :)
|
||||||
cross-chain atomic swaps) are more likely to be accepted than things which
|
|
||||||
support only a single blockchain.
|
|
||||||
|
|
||||||
|
|
||||||
## Release Notes
|
## Release Notes
|
||||||
|
@ -224,6 +216,5 @@ Release notes are done per crate, see:
|
||||||
|
|
||||||
## Licensing
|
## Licensing
|
||||||
|
|
||||||
The code in this project is licensed under the [Creative Commons CC0 1.0
|
The code in this project is licensed under the [Creative Commons CC0 1.0 Universal license](LICENSE).
|
||||||
Universal license](LICENSE). We use the [SPDX license list](https://spdx.org/licenses/) and [SPDX
|
We use the [SPDX license list](https://spdx.org/licenses/) and [SPDX IDs](https://spdx.dev/ids/).
|
||||||
IDs](https://spdx.dev/ids/).
|
|
||||||
|
|
Loading…
Reference in New Issue