Notable changes and new features
- Async-std To Tokio (#172): This ends a major milestone of replacing
async-std
withtokio
as the async runtime, given that the former isn't well maintained and lacks features like work stealing and doesn't have as much tooling as the latter. This project was part of 2024 Summer Of Bitcoin intership. - florestad: expose assumeutreexo in lib mode (#211): If you are using
florestad
as a lib, you can pass theassumeutreexo
values yourself, so your application is the source of truth for this. Another useful use-case would be to start a mobileflorestad
from an already-running instance somewhere else, by scanning a QR code with theassumeutreexo
values, so the process is still trustless, you're just skipping redundant work. - Feature: daemonize (#225): On *NIX enviremonets, you may want
florestad
to run in the background as a daemon. This PR adds a clean way of doing this, by adding a--daemon
option that daemonizesflorestad
right after we parse configuration related data. - Wire: handle block filters out-of-order (#226): Before that, we would assume that filters would arrive in order, but this may not be true due to network conditions or even multiprocess request handling by our peers. After #226 filters can arrive in any order, and we'll sort them and make sure our storage is consistent
- ssl init (#223): Adds support for SSL to our Electrum Server. Now you can connect with Floresta's Electrum Server using a secure and private connection using SSL encryption. This might be useful for e.g. public networks where people may sniff your traffic.
- Add fuzz to floresta(#227, #228): Adds fuzz to
floresta
usingcargo fuzz
with a few targets (LocalAddress
andUtreexoBlock
deserialization) - wallet: make it work without the Electrum Server (#233): This is part of a project that tries to make the inners of
floresta
work independently. Before #233, the wallet needed a running Electrum Server to update it, but now you can run the watch-only wallet without an Electrum Server, if you don't want one. In the future,florestad
will be able to run without an Electrum Serve, the wallet and a json-rpc, making all optional. - chain/wire: remove the explicit rescan code (#234): This was a feature that allowed users to rescan by downloading all blocks in a range, but this is no longer useful since we have compact block filters, that are way more efficient.
- Improve connection (#235): Many small changes to how we open new connections with the goal of improving our resilience and making sure we won't stall by not having utreexo peers.
- Update getutxo (#237): Now the
gettxout
rpc only returns UTXOS that are cached by the wallet (and only if they are unspent). If you want to use compact block filters to find a UTXO, use thefindtxout
rpc. - deps: remove unused deps (#239): Remove dependencies that are no longer used. Those were found by using
cargo-udep
- cli: replace reqwest with jsonrpc (#240): Changes the http lib used for requests in
floresta_cli
, becausereqwest
is too much for this simple code. Now we usejsonrpc
which has a small code footprint and almost no cross-dependencies. - Improve CI caching (#247): Now CI build artifacts are cached. Unless they are changed by the PR, we don't need to build it again, making CI more efficient and faster.
- No_std support for
floresta-common
(#254): nowfloresta-common
(a subcrate that defines some useful primitives to all other crates) can be built withno-std
. We also test it to make sure we won't break theno-std
build in the future. - Add criterion benches and restructure testdata (#259): This adds benchmarks to
floresta
usingcriterion
. Currently, we mostrly have benchmark for block validation times. - rpc: cache addresses on loaddescriptor (#268):
loaddescriptors
didn't derive addresses when called, only saved the descriptor to our database. After #268 it'll actually derive and cache addresses as expected. - CI: Test all feature combinations (#277): Tests all feature combinations on CI for a PR. Making sure that a change won't silently break non-standard builds.
- Add test-features recipe to justfile (#276): Similar to #276, but add a
just
command to easily test feature combinations locally. - feat: allow hostnames where we take addresses (#286): Now, every option that takes in an address (like
--connect
or--rpc-address
) will also take a hostname (e.g. localhost orfloresta-container
) and resolve with the system resolver. - Add floresta-cli to Docker image (#281): Now you can use
floresta-cli
inside a docker container.
Notable bugfixes and documentation updates
- minor improvement when printing height (#218)
- readme: fix mention of --assume-utreexo option (#219)
- Added prerequisite to README (#220)
- Only keep extra peers if they give us a new block (#221)
- Update copyright notices and use the copyright ident on every public interface file (#224)
- docs: Update the repo url (#232)
- rpc: don't try to run some rpcs if in ibd (#229)
- Fix local seeds (#244)
- Correct Cargo categories (#243)
- Fix our dockerfile (once again) (#245)
- Remove unused maybe_reindex (#246)
- fix:including requests on requirements.txt (#249)
- Fixing path to config.toml.sample (#256)
- Feat: refactor nix files. (#255)
- Update read me (#264)
- changed from
error
towarn
message on logging the ssl cert load (#265) - Fix clippy warnings (#267)
- Add full block data for testing and benchmarking (#263)
- Improve README formatting (#269)
- Fix electrum tests (#271)
- Fix cli tests and florestad panic messages (#272)
- update rust bitcoin to upstream 0.32.4 (#270)
- Organize ignore files and add IDE configurations (#273)
- Actually run CI linting with nightly (#274)
- Fix compile errors for all feature combinations (#275)
- README: Add badges and fix headers (#278)
- fix: asserting acc length only one time on load_acc (#279)
- feat: Specifying rustfmt and clippy to match github actions (#283)
- Remove an externally reachable unwrap (#285)
- docs: correct typos in docstrings within florestad/src (#288)
- Fix on allow-hostnames (#289)
- Fix shutdown save peers utreexo (#280)
- flush more often on ibd (#291)
- Group NodeCommon fields (#292)
- Update chain_state.rs (ChainStateInner struct changes) (#297)
- fix: specify version on just commands to avoid incorrect versions being used (#299)
Full Changelog: 0.6.0...0.7.0