Notable changes and new features
- Async-std To Tokio (#172): This ends a major milestone of replacing
async-stdwithtokioas 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
florestadas a lib, you can pass theassumeutreexovalues yourself, so your application is the source of truth for this. Another useful use-case would be to start a mobileflorestadfrom an already-running instance somewhere else, by scanning a QR code with theassumeutreexovalues, so the process is still trustless, you're just skipping redundant work. - Feature: daemonize (#225): On *NIX enviremonets, you may want
florestadto run in the background as a daemon. This PR adds a clean way of doing this, by adding a--daemonoption that daemonizesflorestadright 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
florestausingcargo fuzzwith a few targets (LocalAddressandUtreexoBlockdeserialization) - wallet: make it work without the Electrum Server (#233): This is part of a project that tries to make the inners of
florestawork 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,florestadwill 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
gettxoutrpc 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 thefindtxoutrpc. - 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, becausereqwestis too much for this simple code. Now we usejsonrpcwhich 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-stdbuild in the future. - Add criterion benches and restructure testdata (#259): This adds benchmarks to
florestausingcriterion. Currently, we mostrly have benchmark for block validation times. - rpc: cache addresses on loaddescriptor (#268):
loaddescriptorsdidn'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
justcommand to easily test feature combinations locally. - feat: allow hostnames where we take addresses (#286): Now, every option that takes in an address (like
--connector--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-cliinside 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
errortowarnmessage 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