Skip to content

Floresta v0.7.0

Latest
Compare
Choose a tag to compare
@Davidson-Souza Davidson-Souza released this 04 Dec 15:37
· 7 commits to master since this release
6615959

Notable changes and new features

  • Async-std To Tokio (#172): This ends a major milestone of replacing async-std with tokio 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 the assumeutreexo values yourself, so your application is the source of truth for this. Another useful use-case would be to start a mobile florestad from an already-running instance somewhere else, by scanning a QR code with the assumeutreexo 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 daemonizes florestad 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 using cargo fuzz with a few targets (LocalAddress and UtreexoBlock 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 the findtxout 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, because reqwest is too much for this simple code. Now we use jsonrpc 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): now floresta-common (a subcrate that defines some useful primitives to all other crates) can be built with no-std. We also test it to make sure we won't break the no-std build in the future.
  • Add criterion benches and restructure testdata (#259): This adds benchmarks to floresta using criterion. 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 or floresta-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 to warn 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