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 startflorestad
, 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 forclippy
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 forchain-state
tests. #457 added tests for coinbase maturity. -
429 moves most of our documentation to a
doc
folder, making ourREADME
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
infloresta-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 useexpect
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 togettxoutproof
, 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 forflorestad
. -
535 adds support for
tokio-subscriber
, used bytokio-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 andflorestad
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 offloresta_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
andwire
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
andmetrics
. (#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