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 ofblockchain.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 theirxpub
ordescriptor
- 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
andjustfile
(#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: v0.5.1...0.6.0