Latest Release

  • Repository: vinteumorg/Floresta
  • Published on: 2025-07-14 16:49:45 UTC
  • Version Tag: v0.8.0
  • By: Davidson-Souza
  • On GitHub: vinteumorg/Floresta/releases

Notable changes

This release comes with support for BIP-0324 (P2P V2) and BIP-0094 (testnet4). Starts our saga to implement a Bitcoin Core-equivalent JSON-RPC, to help integrations. We've improved our testing infrastructure, with functional and integration tests as well as fuzzing. We've also added support for DNS-over-HTTPS if we are using a proxy, improving our privacy by not leaking to our ISP that we are using Bitcoin. There was several improvements on our documentation, including an MD book, manpages and module-level documentation. Finally, we add a support for Prometheus, so you can monitor your node and the Bitcoin Network with metrics straight from your node.

New Features and notable changes

  • 306 adds a new clean-data just recipe that will delete test-generated data. This is useful for developers that needs to run all tests during development.

  • 319 adds support to Prometheus, a metrics protocol to expose useful data about florestad. We have a sample docker-compose that start florestad, a Prometheus server and Graphana. #372 Adds more metrics like average block processing times and message latency.

  • 319 introduced a pre-contributing just recipe that will run something akin to CI. It is intended to be used before pushing some commits, to make sure it will pass.

  • 309, #329, #340, #398, #401, #402, #452 improves our python test framework, and adds integration tests for several RPCs. The goal is to make sure our RPCs are API-compatible with Bitcoin Core. We aim at API-compatibility to allow users to replace Core with Floresta, without changing their applications.

  • 320 adds a script that calls cargo test, on all features combinations. It is built with cargo-hack, a tool to permutate all features combinations in a crate. This script is also called on CI to make sure Floresta works on any feature combination. #437 uses the same logic for clippy as well.

  • 323, #336 starts splitting our JSON-RPC server implementation, following core's documentation categories. This will make implementation easier to read, as each category is implemented in one file.

  • 331 integrates the functional tests with the justfile and nix to make running them easier.

  • 349 added issue/PR templates to better organize our repository.

  • 351 added CONTRIBUTING.md to outline our conventions, and assist new developers that wishes to contribute with Floresta.

  • 356 adds a sample systemd service that can be used by users and distributions to run Floresta as a system package.

  • 353 adds the fuzz targets to CI-CD, so we make sure we won't unadiverntly break it. #432 uses corpora data to call our fuzzing using already initialized corpus data.

  • 346 creates some very basic mempool stuff. We now have the machinery for accepting transactions, keeping mempool proofs, and removing transactions after they are mined. We don't have transaction relay or actual validation of transactions yet.

  • 380 links to floresta-docs, a md-book that explains the inners of Floresta for developers that wants to get more information about the code architecture.

  • 385 added the benchmark workflow in CI. We run it on CI to make it will build properly after that change.

  • 384 adds some coinbase-specific checks, like whether it has one input and if the script has valid amounts.

  • 395 simplifies how we represent errors in floresta-chain.

  • 387 adds functional tests for oversized scripts, making sure we won't accept any malformed script.

  • 405 introduces a new way to express hash literals (like block hashes) by adding a proc-macro that parses it at compile-time. This makes sure that we find invalid hashes before even running the test.

  • 373 adds support for BIP324 "P2PV2" to Floresta. This is the new encrypted transport protocol for the P2P layer, and was integrated using the rust-bip324 library.

  • 383 improves our connection and requests logic to make sure Floresta can make progress and keep up with the network.

  • 408 returns the txid for script validation errors, and simplifies it. Knowing which tx was invalidated is useful for understanding why a block is invalid.

  • 399 and #412 improves the node handle, making it more reliable.

  • 376, #430, #447, #446, #433, #460 and #484 improves our module-level documentation.

  • 407 adds listdescriptors RPC that returns all descriptors we had previously added to our watch-only wallet.

  • 414 does the same as #405 but for utreexo accumulator hashes.

  • 215 implements the backfill feature. This works similarly to Bitcoin Core's assumeutreexo behaviour. If you use the --assume-utreexo CLI option (on by default), your node will start validating historic blocks on background. You can disable it with --no-backfill.

  • 417 improves the process_proof function, and adds tests to it.

  • 422 added functional tests to the SSL/TLS implementation of our Electrum Server.

  • 419 is a follow-up for #373, which adds the protocol version to the CLI getpeerinfo and logs.

  • 425 added a cli-option to generate a self-signed certificate to use with your Electrum Server.

  • 440 creates a UtxoData struct with all the context needed to validate a UTXO. Then checks for coinbase maturity using the creation height. #444 adds some sample data for chain-state tests. #457 added tests for coinbase maturity.

  • 429 moves most of our documentation to a doc folder, making our README more succinct.

  • 455 adds the option to change which version of utreexod and bitcoind you'll use in your tests. This will be useful to make sure we keep compatibility with all the maintained version of such daemons.

  • 436 added more nix flake development tools and checks.

  • 468 simplifies scriptpubkey reconstruction and improves naming.

  • 462 and #507 improves our DNS seeds, by making the request async and allowing using DoH if --proxy is provided, for better privacy.

  • 471 removes unwraps and better handles errors for ChainStateBuilder.

  • 473 removes an internal Network enum we had, and use bitcoin::Network instead. This avoids duplication.

  • 476 adds debug data with assert, to help debugging test failures.

  • 469 improves just recipes for better integration with functional tests.

  • 478 denies unwraps in floresta-chain. We should let consumers figure out what to do after an error, instead of just panic-ing. If we can prove that an error would never happen, we should use expect with an appropriate error message.

  • 481 adds the two BIP30 violations in a deny list. Therefore, if we ever see them, we can reject the transaction.

  • 482 creates a just open-doc command that opens our cargo docs with your default browser.

  • 251 adds a new optimized chainstore to foresta-chain. This sped-up header-sync time, reduced heap-usage and memory allocations. #493 improves it by applying some optimizations. #479 adds corruption detection.

  • 491 adds a fuzz target for addrman.

  • 472 add the blockhash argument to gettxoutproof, making it Bitcoin Core-compatile.

  • 490 adds Bitcoin Core to integration tests, along with utreexod.

  • 495 improves the main floresta-chain traits, grouping them in some common ways to avoid overly-complex bounds for consumers.

  • 465 makes the addnode RPC compatible with Bitcoin Core.

  • 494 adds support for BIP-0094 (testnet4).

  • 509 adds the ping RPC command.

  • 501 makes floresta-wire prefer V2 connections by default.

  • 515 allow users to select which functional test they want to run, by name or pattern.

  • 519 uses FlatChainStore as default in tests.

  • 520, #517, #532 fixes and tests some RPCs to make sure they are core-compatible.

  • 532 further simplifies the FlatChainStore.

  • 527 makes the FlatChainStore the default for florestad.

  • 535 adds support for tokio-subscriber, used by tokio-console.

  • 523 uses unique ports for the Electrum Server.

  • 539 improves leaf reconstruction error handling.

  • 556 renames rescan to rescanblockchain, which is how core calls it.

  • 521 adds template to RPC commands documentation and adds tooling to build manpages out of our documentation.

Bugfixes and documentation changes

  • Fix mismatch between floresta-cli command and florestad server. (#303)
  • Add comments to explain RPC client code. (#302)
  • Fix all typos. (#313)
  • Update node.rs. (#317)
  • Update lib.rs for floresta-watch-only-wallet. (#315)
  • Update lib.rs. (#316)
  • Update florestad.rs. (#318)
  • Add English translation of tutorial documentation. (#321)
  • json-rpc: use axum for server. (#322)
  • Update florestad.rs. (#325)
  • Update cli.rs. (#324)
  • [Docs] More docs to sync_node.rs. (#310)
  • [Fix] Add names for UtreexoNode fields. (#312)
  • Improving Peer Connection Shutdown Handling. (#327)
  • dnsseed: add a new seed that supports utreexo. (#330)
  • Bump back nix building to 23.11 and remove bitcoin fork. (#334)
  • Return tx validation errors, fix max script size. (#311)
  • Remove mock rpc from functional tests. (#337)
  • Move block weight check to validate_block_no_acc. (#339)
  • chore: add new utreexo seed [seed.bitcoin.luisschwab.com]. (#343)
  • fix,log: remove unresponsive peers, better DNS logging. (#344)
  • fix: build floresta-cli instead of floresta_cli. (#345)
  • ci: use 'published' event for triggering docker.yml workflow. (#347)
  • Fix release and PGP maintainer links in README and CONTRIBUTING. (#355)
  • fix(florestad): don't panic if a lock cannot be obtained to the datadir, RPC and Electrum ports. (#365)
  • doc: make template more concise, add ref to CONTRIBUTING.md on template. (#357)
  • Remove unused cfg attributes. (#361)
  • code quality- Fixing serde clippy warning. (#367)
  • code quality:Fix code simplification clippy warnings. (#371)
  • doc: add floresta-cli PATH installation command to README. (#377)
  • Refactor consensus.rs error mapping. (#382)
  • [Code-quality]: removed few dependencies that are not being used. (#381)
  • Make CI fail on clippy warnings. (#386)
  • Docs: alignment typo. (#388)
  • build: ensure dev tools available on PATH. (#389)
  • Fix CI cache version number. (#392)
  • consensus: fix a problem with script sizes. (#396)
  • Remove output size checks from verify_coinbase. (#400)
  • fix load the SSL key as certificate and add documentation about generate keys. (#410)
  • fix: idb to ibd. (#424)
  • Reform pythontests nixshell. (#391)
  • Hotfix func test scripts. (#431)
  • Fix: description of assume utreexo was backwards. (#435)
  • Fix: raise warn instead of error if anchors arent made yet. (#439)
  • Fix non stop florestad process in functional tests. (#434)
  • fix(wire): don't error if we don't have any utreexo peers to save. (#441)
  • running_node: don't ask for blocks until utreexo peers announce it. (#442)
  • Fix rust lint warnings. (#459)
  • chain: fix a CI break with linting. (#464)
  • Improve the PR template checklist. (#461)
  • wire: Some small hardening and bugfixes on connection logic. (#454)
  • Nix update docs. (#445)
  • wire: fix a small bug with handle_disconnection. (#474)
  • Small refactors to remove unwraps. (#475)
  • [FIX] prepare.sh now override pre-built binaires. (#467)
  • [Fix] Fix doc warnings. (#477)
  • Remove unused florestad and wire features. (#486)
  • Fix clippy warning for load_descriptor in florestad json_rpc server. (#489)
  • Update the log crate. (#485)
  • chore: update tokio-rustls to the latest version. (#483)
  • Use fresh chainstates for each bencher iteration. (#492)
  • [Fix] Import sync_node and chain_selector. (#375)
  • Bugfix: fix two bugs that may happen after an unclean shutdown. (#488)
  • Make ChainStore methods take &mut self. (#500)
  • [FIX] Removed unused code failing lint. (#506)
  • Fix lint lifetime warnings and docstring tests. (#510)
  • [RPC] Implementation detail for addnode: connect to peer after add it. (#505)
  • Use &mut self in FlatChainStore inner methods. (#512)
  • chain: handle accumulator reorg. (#498)
  • Remove the cli_wire module. (#528)
  • Log RPC server info. (#531)
  • remove core2. (#533)
  • Fix action ip:port address for log RPC info. (#534)
  • Fix just lint recipe. (#538)
  • Rename florestad/src/json_rpc/res.rs::Error. (#530)
  • just: don't call black in check mode. (#540)
  • Lint fuzz and metrics. (#541)
  • Fix nix flakes check. (#544)
  • chore: update chain values for release. (#542)
  • Wire: small fixes and improvements. (#537)
  • Florestad: refactor data_dir path creation. (#547)
  • Add missing checkTransaction rules. (#549)
  • Benchmark checksums and chainstore creation. (#553)
  • florestad: fix --connect. (#552)
  • floresta-chain: fix a test feature problem. (#557)
  • Florestad: refactor setup wallet data 555
  • wire: don't spam the logs with PeerNotFound 559
  • Fix electrum tests: read full responses. (#560)
  • chore: remove the futures crate. (#564)
  • Enable feature-gate banners in docs. (#567)
  • Added modifications on methods find_who_is_lying. (#497)
  • common,chain,electrum: remove core2. (#487)
  • fix: re-index didn't apply changes to chainstate. (#562)
  • Added is_running flag. (#508)
  • Man page cli rendering fix on template.md. (#563)
  • refactor: get rid of expect method of Electrum server. (#570)
  • Change create_connection return type on floresta-wire/src/p2p_wire/node.rs. (#502)
  • bump version for release. (#571)

Special thanks for all the contributors that made this release possible

  • Davidson Souza
  • JoseSK999
  • qlrd
  • Shigeru Myamoto
  • Luca
  • Luis Schwab
  • Gudnessuche
  • Nick Johnson
  • siddheshz
  • Guilherme Pereira
  • Mohan Kumar
  • Asmit Kumar Rai
  • Bruno Garcia
  • Erick λ
  • Henrique Sousa
  • Lucas Balieiro
  • vinny-pereira

Data updated on: 2025-08-09 14:47 UTC