Skip to content

Releases: vinteumorg/Floresta

v0.6.0

20 Aug 18:51
726dc74
Compare
Choose a tag to compare

Notable changes

New features

  • expose some unexposed values for jsonrpc(#103): Lets the user select between getting a serialized block or a json. The json should mimic core's output for the equivalent getblock rpc.
  • Bring our functional tests to life (#112): attempts to build some basis for the Python-based tests. Now we have utils to spawn an Utreexod node, build blocks, transactions and send/receive network messages. Those utils aren't used yet in any serious test.
  • feat: async add new address to electrum(#113): Now, if you subscribe to an address that we don't follow yet, we'll start following it. Note that this currently only works for the experimental blockchain.scriptpubkye.subscribe endpoint.
  • Implement tagged hashes for the leafhashes (#118): This futures-proof the leaf commitment scheme from future modifications of the committed data, and it's now part of the utreexo protocol
  • feat: -connect cli option (#119): This option lets you connect exclusively to one specific node, given its IP address
  • [WIP]: Create a json-rpc lib (#121): Now the json-rpc has a Rust lib that can be used by other projects to call florestad's json-rpc interface
  • Rework internal node structure(#128): Use our actors model to build optmized nodes for each phase of the startup process: Headers sync, downloading blocks and normally running node.
  • Add AssumeValidArg enum and correct verify_script (#131): This adds a new AssumeValidArg to make communicating the desired assume-valid more ergonomic. It can either be disabled, using the hard-coded value or user-provided.
  • feature: batch request for electrum (#134): Now electrum lets users perform multiple requests at once, rather than sending one at the time. This has some small bandwidth and CPU savings.
  • feat: PoW fraud proof(#133, #147): Implement pow fraud proofs for our node and enable it on signet for testing. This is not enabled on mainnet yet.
  • feature: log to file (#136): Now you can write the logs to a file. This is specially useful if running florestad as a background process
  • florestad: Add lib.rs (#124, #149): florestad is also a lib now, it can be used on other applications and. To see an example of how to use it in other languages that is not Rust, check out this repo.
  • download and store filters from the network (#161, #190, #207): Now we can download BIP-158 Compact Block Filters and use them to recover historical transactions without downloading the whole blockchain.
  • Cache headers on ibd (#169): Hold headers in memory and save all-at-once, because the database can optimize some writing operations
  • electrum: new experimental electrum endpoints (#173): This adds some experimental (and not used by any wallet) endpoints to the electrum server blockchain.scriptpubkey. They are an exact copy of blockchain.scripthash but uses scripts insted of script hashes. The reson why those exists is to make it possible to rescan for wallet addresses without having the user to manually inform their xpub or descriptor
  • Nixify (#176): Adds a nix-based build system and some developer tools to floresta
  • Unit tests for all modules (#168, #202, #200): An ongoing project to unit-test all modules
  • Assume utreexo + bugfixes (#181): make assumeutreexo work on mainnet
  • actually use the -debug option (#184): The option actually always existed, but there wasn't any handling for it. Now using -d or --debug will make the node print debug information to the terminal. This doesn't affect the log file though.
  • Transaction Consensus Rules (#165): Expands floresta's consensus rules implementation, implementing some missing rules for transactions, specially regarding scripts sizes.
  • Test utils for floresta-wire/p2p-wire
  • Improve just file (#204): Adds some useful dev-related comands like lint
  • florestad: rework cli by (#209, #216): Remove some unused options, document all options and improve how we handle versions

Bug fixes and documentation

  • Download blocks if lagging behind (#163)
  • Bugfix: recover from utreexo nodes hangup (#100)
  • If we stay long without recieving any message, send out a ping (#101)
  • small refactor + comments (#105)
  • add our discord to readme (#109)
  • style: add .rustfmt.toml and justfile (#111)
  • bump all rust-bitcoin crates (#108)
  • don't ban on the first violation (#114)
  • Update readme.md (#122)
  • Improve reindex_chain readability and small fixes (#125)
  • Fix the CI error with clippy (#129)
  • Return when there's a tx validation error (#130)
  • wire: hunt down some minor bugs on running_node (#132)
  • fixed adding florestad to path while building (#137)
  • CI:fixes the linting error (#140)
  • chore: update deps (#141)
  • Document how to test (#154)
  • chore: remove duplicated CI checkout (#152)
  • Declared version normalization (#159)
  • Fix/create datadir if missing (#164)
  • fix an incompatibility between our implementation of is_unpendable and utreexo's (#170)
  • bump rustreexo (#171)
  • Improve ibd stability (#174)
  • Potential bug fix in floresta-wire/chain_selector.rs (#179)
  • Bug fix: chain_selector (#182)
  • Node.rs minor fixes (#183)
  • Fix/creating too much conn (#185)
  • fix a small incompatibility with electrum implementation (#189)
  • Broken Link on README (#192)
  • Fix warnings (#193)
  • floresta-electrum: Increase test timeout (#196)
  • add witness and network to fixed peers (#195)
  • fix: force utreexo peers (#201)
  • bug fix: remove inflights of banned peers (#203)
  • fix a crash with node.rs (#208)
  • improve readme (#210)
  • chain-select-node: ban peers on invalid tips (#213)

Full Changelog: Davidson-Souza/Floresta@v0.5.1...0.6.0

Floresta v0.5.1

21 Nov 17:13
31657ac
Compare
Choose a tag to compare

This is a new release with a few bugfixes, as well some minor features. We invite everyone to test, report bugs and give feedbacks.

What's changed

New features

Allow to add manual connections to the node (#77 and #78): Now you can use the addnode RPC to manually connect with a given peer

Socks5 Support (#76): Now we can connect with peers over multiple transports, including socks5. This allows running florestad behind a socks proxy like Tor.

Update a few RPCs to show more useful data (#82): Some RPCs like getblockchaininfo and getrawtransaction got updated to return more useful data. They are now close to what Core returns in their respective RPC, but you shouldn't expect a 1-1 equivalence. getblockchaininfo now returns Utreexo-related data.

Add a ZMQ block notification (#93): Now you can subscribe over ZMQ to receive new blocks as they are accepted by our chainstate

Build and store BIP-158 Compact Block Filters (#89): We now create and store Compact Block Filters for easy wallet rescan and finding UTXOs inside the chain. Currently, we only build the filters and expose them over a new rpc getfilter. This implementation doesn't download the filters from p2p, we build them locally and let users pick what is stored, reducing disk usage. A multiphase approach where we use the p2p-provided ones to sync-up user's wallet during IBD and only store the locally computed ones should bring the best of both worlds.

Refactor and Bugfixes:

Don't die if we lose all Utreexo peers (#79): losing all utreexo peers may put our node in an undefined state, since we need those peers to get proofs. This PR hardens our node against it, and improves our recovery logic.

Don't invalidate block if proof is invalid (#81): Since proofs aren't committed by PoW, a misbehaving peer might send an invalid proof without changing the block hash. Therefore, if we get an invalid proof, just ban this peer and try to get the proof from someone else.

Refactor the node struct and rework trait bounds (#83): UtreexoNode is the biggest struct inside this codebase, and it's generic over many attributes. This PR is an attempt to simplify those bounds. Furthermore, making internal methods private.

improve Error enum names so we can remove clippy::enum_variant_name (#85): Some enum members ended with the enum's name (e.g. SomethingError), this would trigger a clippy warning. This pr reworks invariant naming, so now we satisfy that linting.

Rework block notification (#92): Once chainstate validates a new block, it sends that block to some subscribers. Before this PR, a subscriber would pass the Sender end of a channel, and we would use this channel to send new blocks. The problem here is that some modules aren't services (i.e. they don't have an always running loop) and can't work with this channel model. Now, anything implementing the BlockConsumer trait may subscribe by passing an Arc-ed instance of self to chainstate. For modules using the old model, this pr implements a simple Single Producer, Single Consumer channel that implements BlockConsumer.

Make database more robust (#95): Our default chainstore database had many issues with unclean shutdowns, leading to a broken state. This pr is another attempt to make our DB more robust against unexpected scenarios.

Make dockerfile build florestad (#96): After #58 our Dockerfile wasn't working. Now we keep official docker images on docker hub.

v0.5.0: "I promise I'll use semversioning more often"

29 Aug 00:44
df0fd83
Compare
Choose a tag to compare

This is the first release after the crate reorg, which. For now on, the GitHub releases will reflect florestad, and every subcrate has its version.

What's Changed

Full Changelog: Davidson-Souza/Floresta@v0.4.0...v0.5.0

v0.4.0

16 Jun 18:21
123d733
Compare
Choose a tag to compare

New major version of Floresta, with some bugfixes and new features like a json-rpc, rescan, output descriptors env var support and more...

What's Changed

Full Changelog: Davidson-Souza/Floresta@0.3.0...v0.4.0

p2p module

23 Mar 00:25
ac6a1de
Compare
Choose a tag to compare

This release is the first version with p2p code merged in. There's still numerous things to change, but should be able to run on its own by now.

What's Changed

Full Changelog: Davidson-Souza/Floresta@0.1.0...0.3.0

v0.2.1

13 Feb 22:34
e05f12d
Compare
Choose a tag to compare

Some minor bugfixes from previous release.

v0.2.0-alpha

08 Feb 18:21
3d8b3e3
Compare
Choose a tag to compare
v0.2.0-alpha Pre-release
Pre-release

New release with a more stable code, also some cleanups. Some major improvements over the last release:

  • Update upstream to use reqwest for json-rpc requests, add support to TLS and keep-alive connections
  • Add headers-first sync, so we can know almost everything about a potential tip before we validate. This will be specially useful when the p2p code is merged
  • Clean-up command line args and introduce config file.
  • Add a asumevalid option for faster IBD
  • Various bug-fixes

What's Changed

Full Changelog: 0.1.0...0.2.0_alpha

v0.1.0

30 Dec 23:44
7a6a603
Compare
Choose a tag to compare

First release with compiled binaries for people to test out.