Floresta is a lightweight and embeddable Bitcoin client designed for users and applications that
want strong validation guarantees without the operational overhead of traditional full nodes.
It can be run as a standalone fully validating node or embedded as a library, allowing developers
to reuse the same client components across different applications and deployments.
## Name
Floresta is the Portuguese word for forest. It is a reference to the Utreexo accumulator,
which is a forest of Merkle trees. It's pronounced _/floˈɾɛstɐ/_.
## Architecture
Floresta is written in Rust and implements modern Bitcoin validation techniques such as
[Utreexo](https://eprint.iacr.org/2019/611),
[PoW Fraud Proofs](https://blog.dlsouza.lol/2023/09/28/pow-fraud-proof.html), and pruning,
to significantly reduce resource requirements while preserving trust and security.
Floresta is composed of two main components: `libfloresta` and `florestad`.
[`libfloresta`](https://github.com/getfloresta/Floresta/tree/master/crates) is a collection of
reusable components that can be integrated into Bitcoin applications.
[`florestad`](https://github.com/getfloresta/Floresta/tree/master/bin/florestad) builds on top of
[`libfloresta`](https://github.com/getfloresta/Floresta/tree/master/crates) to provide a full node
daemon, including a watch-only wallet and an Electrum server.
If you only want to run a node, you can use
[`florestad`](https://github.com/getfloresta/Floresta/tree/master/bin/florestad) by building it from
source, following the instructions for [Unix](doc/build-unix.md) or [MacOS](doc/build-macos.md).
## Consensus Implementation
One of the most challenging parts of working with Bitcoin is keeping up with the consensus rules.
Given its nature as a consensus protocol, it's very important to make sure that the implementation
is correct and on par with Bitcoin Core. Instead of reimplementing a Bitcoin Script interpreter,
we use [`rust-bitcoinkernel`](https://github.com/TheCharlatan/rust-bitcoinkernel/), which is a
wrapper around [`libbitcoinkernel`](https://github.com/bitcoin/bitcoin/issues/24303),
a C++ library that exposes Bitcoin Core's validation engine. It allows validating blocks,
transaction outputs and reading block data with the same API as Bitcoin Core.
## Developing
Detailed documentation for [`libfloresta`](https://github.com/getfloresta/Floresta/tree/master/crates)
is available [here](https://docs.getfloresta.sh/floresta/). Additionally, the
[floresta-docs](https://getfloresta.github.io/floresta-docs/) `mdBook` provides an
in-depth look at the libraries' architecture and internals.
Further information can be found in the [documentation folder](/doc).
Contributions are welcome. Feel free to open an issue or a pull request. Check out our
[Contribution Guidelines](CONTRIBUTING.md) for more information on best practices.
If you want to contribute but don't know where to start, take a look at the
[Good First Issues](https://github.com/getfloresta/Floresta/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22).
## Roadmap
Floresta's technical direction is guided by six strategic themes:
- Reliability & Security
- Sync & Transaction Relay
- Bitcoin Ecosystem Support
- Modular Architecture
- Testing & Validation
- Community Adoption & User Experience
For the full 2026 roadmap and ongoing priorities, see [doc/roadmap-2026.md](doc/roadmap-2026.md).
Active workstreams are tracked on the [Project Board](https://github.com/orgs/getfloresta/projects/2).
## Community
If you want to discuss this project, you can join the [Discord Server](https://discord.gg/5Wj8fjjS93).
To report security vulnerabilities, please see the [Security Policy](SECURITY.md).
## License
Licensed under either of
- MIT license ([LICENSE-MIT](LICENSE-MIT) or