# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [0.8.4] - 2023-01-16 ### Changed - Swapd: Refactor key manager init by @TheCharlatan in - Fix: filter by network all deal list responses by @h4sh3d in - Fix(grpc): list Monero funding addresses by @h4sh3d in - Fix(state report): accordant lock used arbitrating params by @h4sh3d in - Syncer: Bump Monero to ring size 16 by @TheCharlatan in - Fix(tsm): swaps restoring by @h4sh3d in ## [0.8.3] - 2023-01-02 ### Changed - Swapd: Don't add color coding to progress message by @TheCharlatan in - Farcasterd: Add delay between xmr auto-funding reattempts by @Lederstrumpf in - Swapd: Simplify key manager encoding by @TheCharlatan in - Swapd: Simplify commitment creation by @TheCharlatan in - Doc: Update diagrams by @TheCharlatan in and - Swapd: Some simple refactors by @TheCharlatan in - Config: Improved deal validation by @h4sh3d in - TSM: Log with SwapLogging trait by @TheCharlatan in - Chore: update core to version 0.6.4 by @h4sh3d in ## [0.8.2] - 2022-12-28 ### Changed - Syncer(monero): Disregard unlock time transactions by @TheCharlatan in - Syncer: Lower the time spent sleeping on the syncer receiver by @TheCharlatan in - Swapd: Refactor retrieving txs in syncer client by @TheCharlatan in - Errors: Wrap error types in Error enum instead of converting to Farcaster::Error by @TheCharlatan in - Syncer: Some Refactors for better logging and ergonomics by @TheCharlatan in - Cli: health check ignore local by default by @h4sh3d in - Grpcd: Add helper function for executing health check by @TheCharlatan in - Logs: move syncer state transitions logs to debug level by @h4sh3d in - Swapd: Use transaction directly from transaction confirmations by @TheCharlatan in - Swapd: Cache all transaction related syncer events by @TheCharlatan in - Swap: If punish only end when punish final, and Bob check punish too by @Lederstrumpf in - Swapd: Complete swap key manager refactor by @TheCharlatan in - Refactor: temporal safety renaming and cleaning by @h4sh3d in - Swapd: Fix broken build by @TheCharlatan in - Swapd: Only make accesses to swap key manager mut that need to be by @TheCharlatan in - Swapd: Remove local trade role from SwapKeyManager by @TheCharlatan in - Syncer: Remove Boolean type and replace with raw type by @TheCharlatan in - Swapd: Always abort all tasks on swap end by @TheCharlatan in - Swap: Move transactions from Runtime to State machine by @TheCharlatan in - Swap: Move AccLockHeight from Runtime to State by @TheCharlatan in - Core: update to version 0.6.2 by @h4sh3d in - Swap: Add swap logging to syncer client by @TheCharlatan in ## [0.8.1] - 2022-12-21 ### Changed - Swapd: Logging improvements by @TheCharlatan in - Deps: Run cargo update by @TheCharlatan in - Bob verifies Alice's Reveal eagerly by @Lederstrumpf in - Feat: log errors outside of farcaster too by @h4sh3d in - Syncer health patch by @TheCharlatan in - Swap state: Don't emit Bob aborted swap message twice by @TheCharlatan in - Syncer State Machine: Handle Task Aborted by @TheCharlatan in - Syncer: Support Incoming and Outgoing AddressTransaction events by @TheCharlatan in - Swap State Machine: Remove Alice Punish state by @TheCharlatan in - Service: Implement Reporter trait by @TheCharlatan in - Deal or No Deal? by @TheCharlatan in - Chore: fix url for ci badge by @h4sh3d in - Chore: Handle some clippy findings by @TheCharlatan in - Swapd: Handle re-orgs and possible mempool drops of broadcasted txs. by @TheCharlatan in - Grpc: Add deal suffix to selector by @TheCharlatan in - Grpc: Handle handler drops (usually on client disconnect) by @TheCharlatan in - Database: Cleanup Open Deals as well on CleanDanglingDeals by @TheCharlatan in - Feature: Add and consume trade role and status in deal history by @TheCharlatan in ## [0.8.0] - 2022-12-15 ### Changed - Swap state machine by @TheCharlatan in - Deps: Bump monero-rpc to latest version (v0.3.2) by @TheCharlatan in - Grpc: Added decoded OfferInfo field to returned offers by @TheCharlatan in - TSM: Remove unneeded peerd check by @TheCharlatan in - Monero syncer: Use creation height when checking balance by @TheCharlatan in - Database: Improve error handling by @TheCharlatan in - Remove `swapd.runtime.syncer_state.{bitcoin,monero}_amount` by @Lederstrumpf in - Monero socks proxy by @TheCharlatan in - Grpc: Add network selectors to data queries by @TheCharlatan in - Alice: broadcast cancel tx eventually even if Alice overfunded by @Lederstrumpf in - Grpcd: Remove commented dead code block by @TheCharlatan in - Deps: Update core to v0.6 by @TheCharlatan in - Swapd: state refactors by @Lederstrumpf in ## [0.7.0] - 2022-12-13 ### Changed - Swap wallet by @TheCharlatan in - Config: expose swap finality parameters by @h4sh3d in - Tests: Add retries to grpc progress message test by @TheCharlatan in - Grpc: Handle recoverable server runtime panics by @TheCharlatan in - Feat: Use creation height when sweeping Monero by @TheCharlatan in - Relisten maker restore by @TheCharlatan in - Syncer: Chunk Txs to overcome strict encoding limitation by @TheCharlatan in - Chore: update headers and housekeeping by @h4sh3d in ## [0.6.0] - 2022-12-06 ### Changed - Grpc: Add retries when retrieving the funding info by @TheCharlatan in - Auto-restore checkpoint on startup by @TheCharlatan in - Busses: Remove transcoders from bridge bus senders by @TheCharlatan in - Syncer: Logic for conditional broadcast by @TheCharlatan in - Cli: Implement endpoint for listing funding addresses by @TheCharlatan in - Config: Define global static bind address by @TheCharlatan in - Farcaster: Handle take offer failure by @TheCharlatan in - Grpc/Server: Add network args to health check by @TheCharlatan in ## [0.5.0] - 2022-12-05 ### Changed - Refactor: Improve reliability of peerd connections by @TheCharlatan in - Add richer data to the progress messages by @TheCharlatan in - Swapd: Simplify checkpoint encoding by @TheCharlatan in - Swapd: Some patches and improvements by @TheCharlatan in - Farcaster: Cleanup dangling swap info on restart by @TheCharlatan in - Database: Change secret key encoding by @TheCharlatan in - Tests: Use retries until swap id is available in grpc test by @TheCharlatan in - Cli: Implement endpoint for checking syncer health by @TheCharlatan in ## [0.4.0] - 2022-11-30 ### Changed - doc: move documentation to wiki by @h4sh3d in - Add Support for electrum client Tor proxy by @TheCharlatan in - swapd: improve PendingRequests and add associated fn defer_request by @zkao in - fix(nix): fix git revision and format file according to statix by @LeoNero in - ci: remove nightly usage by @h4sh3d in - Deps: Bump to core 0.5.1 by @TheCharlatan in - ci: bumps containers in tests by @h4sh3d in - Walletd: Remove funding information by @TheCharlatan in - Swap: Remove log used while debugging by @TheCharlatan in - Syncers: Add better controls to task receiver loop by @TheCharlatan in - Small improvements by @LeoNero in - syncerclient: rm unneeded mut by @zkao in - Syncer: Remove polling switch by @TheCharlatan in - wallet: improve wallet permission by @zkao in - Some clippy fixes by @TheCharlatan in - Swap: Remove unused/dead storage by @TheCharlatan in - Support TLS monerod servers and fix warning in functional-swap test by @LeoNero in - docs(lnp): remove old lnp docs by @LeoNero in - Add shell completions for databased and grpcd by @LeoNero in - Remove configure_me from project by @LeoNero in - Docs: Correct s/checkpoint/database/ in sequence diagram by @TheCharlatan in - refactor: display for rpc msg by @h4sh3d in - Add few comments with some explanations for some decisions by @LeoNero in - Fix /compose and Dockerfile by @LeoNero in - Disallow dead code and unused imports by @LeoNero in - Swapd: Update peer service id on reconnect if it has not been set yet by @TheCharlatan in - Farcasterd: Warm-up phase by @TheCharlatan in - Lint: Remove unused imports to fix compilation by @TheCharlatan in - Request: Encode PublicOffer as itself, not as a String by @TheCharlatan in - refactor: shell completion generation by @h4sh3d in - Farcasterd: Add 10 retries for Monero auto-funding by @TheCharlatan in - Functional tests: Add bitcoin manual sweep test by @TheCharlatan in - Some tests improvements (fix warnings, etc) by @LeoNero in - Fix some typos and comments by @LeoNero in - Fix warning in functional-swap test by @LeoNero in - Improve formatting by @LeoNero in - Small style improvements (formatting, removing comments, etc) by @LeoNero in - Doc/wiki sync and diagrams by @h4sh3d in - electrs failures: reattempt `script_get_history(...)` by @Lederstrumpf in - Syncer: normalize treatment between different failure cases when polling transactions by @TheCharlatan in - Farcasterd state machines by @TheCharlatan in - Sweep address streamline by @TheCharlatan in - fix sweep failures on intermittent daemon irresponsiveness by @Lederstrumpf in - Refactor: introduce sync and rpc buses by @h4sh3d in - tests: remove --rpc-ssl on monerod container by @LeoNero in - chore(deps): bump actions/checkout from 2 to 3 by @dependabot in - bump electrum-client to 0.11.0 by @Lederstrumpf in - Swap: Force transition to buy state if Buy transaction is retrieved by @TheCharlatan in - Restore swap refactor by @TheCharlatan in - Farcasterd connect refactor by @TheCharlatan in - State machines: Add Executor trait by @TheCharlatan in - feat: log as info level p2p msg sent and received per swap by @h4sh3d in - Feat: improve swap-cli commands by @h4sh3d in - Style: improve logs and colors by @h4sh3d in - chore(deps): bump Swatinem/rust-cache from 2.0.0 to 2.0.1 by @dependabot in - chore(deps): bump Swatinem/rust-cache from 2.0.1 to 2.0.2 by @dependabot in - Refactor: implement strict bus usage and message type by @h4sh3d in - Restore key entry by @TheCharlatan in - Bugfix: Use refund address for sweeping bitcoin through walletd by @TheCharlatan in - Fix(syncer_client): remove dangerous unwrap in handle tx confs by @h4sh3d in - Cli: Return exit code 1 on error by @TheCharlatan in - chore(deps): bump Swatinem/rust-cache from 2.0.2 to 2.1.0 by @dependabot in - chore(deps): bump Swatinem/rust-cache from 2.1.0 to 2.2.0 by @dependabot in - Feature: Extend Grpc implementation by @TheCharlatan in - Syncer: Check for dust amount in sweep bitcoin method by @TheCharlatan in - Cli: Handle routing errors when routing through farcasterd by @TheCharlatan in - Database (Bugfix): Correct delete checkpoint info by @TheCharlatan in - Grpc: Wait longer for swap id to show up by @TheCharlatan in - Test: Wait 10s more for lock in grpc test by @TheCharlatan in - Database: Remove spammy debug log by @TheCharlatan in - Refactor: reunite reveal messages by @h4sh3d in - Swap: Check empty funding before funding Alice by @TheCharlatan in - Peerd: Use message receipts to confirm receival by @TheCharlatan in - Enforce msg and bus coupling by @TheCharlatan in - Ci: update containers by @h4sh3d in - Feat: new grpc config options by @h4sh3d in - Cli: send encoded funding info by @TheCharlatan in - Grpc: Support list offers endpoint by @TheCharlatan in - Grpc improve error handling by @TheCharlatan in - Add richer data to the swap info by @TheCharlatan in - Database: Add NodeInfo to CheckpointEntry by @TheCharlatan in ## [0.3.0] - 2022-08-10 ### Changed - fix typos by @Lederstrumpf in - Reduce log level of Docker Compose and add container name declarations for each container by @sethforprivacy in - Taker Command: Display exchange rate when reviewing offer by @TheCharlatan in - Bitcoin syncer: Unblock event loop by @TheCharlatan in - Peerd: Handle remote shutdown by @TheCharlatan in - Peerd single port multi connections by @TheCharlatan in - Relax existing listening address warning to debug level by @TheCharlatan in - farcasterd: only accepts TakerCommit from peerd by @zkao in - Fee estimation by @TheCharlatan in - Lws support by @TheCharlatan in - Lws logging by @TheCharlatan in - Config: Add lws to example config file by @TheCharlatan in - Merge syncer address tests by @Lederstrumpf in - Close and delete wallet after sweep by @TheCharlatan in - Monero Syncer: Require a minimum sweep balance by @TheCharlatan in - Peer info: Use remote address to assemble internal id by @TheCharlatan in - Farcasterd: Simplify LaunchSwap peer ServiceId recreation by @TheCharlatan in - add userpass auth option for bitcoin rpc by @Lederstrumpf in - State clean up by @zkao in - Align dependencies with lnp-node e81e693d1a92fc5aef10c423648db43e4b755e97 by @TheCharlatan in - Cli: Fix make command failure reporting by @TheCharlatan in - Make offer / take offer cli yaml serializable by @TheCharlatan in - GRPCD: A service daemon for a farcaster grpc api by @TheCharlatan in - Reconnect peerd if connection is dropped during running swap by @TheCharlatan in - Peerd: Remove UpdateSwapId request handling by @TheCharlatan in - Functionality: Add ability to revoke offers by @TheCharlatan in - Make progress serializable - alternative by @h4sh3d in - Peerd: Only send whitelisted Msg's over the bridge by @TheCharlatan in - feature: make progress waiting on new messages by @h4sh3d in - Farcasterd: Check if peerd listen launched successfully by @TheCharlatan in - Swapd runtime refactor: extract self contained data structures into their own files -- syncer client extraction by @zkao in - Syncer: Only farcaster is allowed to terminate by @TheCharlatan in - Grpc: Correct bridge address s/syncer/grpc/ by @TheCharlatan in - extract from Swapd runtime temporal safety by @zkao in - extract from swapd runtime State by @zkao in - State recovery by @Lederstrumpf in - Cli: Add endpoint to print information about a passed-in offer by @TheCharlatan in - State Recovery management implementation by @TheCharlatan in - Syncer: Sweep Btc by @TheCharlatan in - State Recovery Swapd Implementation by @TheCharlatan in - Persist funding address secret key by @TheCharlatan in - Cancel swap by @TheCharlatan in - Persist offer history by @TheCharlatan in - Offer history by @TheCharlatan in - Swap: Allow cancel for alice refundsig before arb lock by @TheCharlatan in - Cli: Implement sweep address call by @TheCharlatan in - Swap: Ensure a checkpoint is only set once and in the correct order by @TheCharlatan in - Fix Checkpoint race condition by @TheCharlatan in - Swap: Add public offer to GetInfo by @TheCharlatan in - Syncer: Cache estimate fee values by @TheCharlatan in - Swap: Handle monero under- and overfunding by @TheCharlatan in - Swap: Handle bitcoin under- and overfunding by @TheCharlatan in - Swap: Remove extra 0.02 XMR funding amount by @TheCharlatan in - Bug(Wallet): persist funding address secret key for Bob Taker by @TheCharlatan in - Persist monero addresses by @TheCharlatan in - swapd: fee estimate from syncer (electrum) by @zkao in - syncer trivial: replace match by map by @zkao in - swapd: removing nesting by @zkao in - do not use ping from ligthing peer message by @zkao in - Syncer: Add explicit retry flag to the sweep tasks by @TheCharlatan in - farcasterd: launch syncers before launching swapd, not after by @zkao in - Swapd: create better API for handling PendingRequests by @zkao in - farcaster-swapd-syncer race-free initiation interplay: improve sequence of msgs by @zkao in - Manual monero sweep by @TheCharlatan in - Configuration: Change Monero stagenet node by @TheCharlatan in - Syncer: Rename EstimateFee to WatchEstimateFee by @TheCharlatan in - Swap: Only report abort back to client by @TheCharlatan in - Database: Expand to full path for lmdb file location by @TheCharlatan in - Database: Log debug, not error, when removed entry does not exist by @TheCharlatan in - Use `RUST_LOG` to configure loggers instead of `--verbose` flag by @h4sh3d in - use syncer types and associated fns to avoid race condition between swapd, monero syncer and bitcoin syncer by @zkao in - Update core to version 0.5.0 by @h4sh3d in - Checkpointing: Remove multipart message chunking by @TheCharlatan in - Monero strict encoding types by @TheCharlatan in - Types: Use bitcoin secret key wherever possible by @TheCharlatan in - Refactor: Sweep monero rename by @TheCharlatan in - Refactor: Use core's Blockchain instead of syncer's Coin type by @TheCharlatan in - Peer: Use Brontozaur for session encryption by @TheCharlatan in - Types: Use core's network conversion by @TheCharlatan in - Grpc: Fix test and binding address by @TheCharlatan in - Farcasterd: Improve report by @TheCharlatan in ## [0.2.0] - 2021-12-15 Internal stress-testing bugfixes. Preparation for external release. - Support running parallel swaps over different peer connections through different ports ## [0.1.0] - 2021-12-10 Initial version of Farcaster Node :tada: ### Added - Bitcoin SegWit v0 support as arbitrating chain - Monero support as accordant chain - Bitcoin and Monero syncers - Swap daemon to manage single swap execution - Peer daemon to manage p2p connection during swaps - Farcaster daemon to orchestrate the micro-services - Swap cli to control farcasterd and other services [Unreleased]: https://github.com/farcaster-project/farcaster-node/compare/v0.8.4...HEAD [0.8.4]: https://github.com/farcaster-project/farcaster-node/compare/v0.8.3...v0.8.4 [0.8.3]: https://github.com/farcaster-project/farcaster-node/compare/v0.8.2...v0.8.3 [0.8.2]: https://github.com/farcaster-project/farcaster-node/compare/v0.8.1...v0.8.2 [0.8.1]: https://github.com/farcaster-project/farcaster-node/compare/v0.8.0...v0.8.1 [0.8.0]: https://github.com/farcaster-project/farcaster-node/compare/v0.7.0...v0.8.0 [0.7.0]: https://github.com/farcaster-project/farcaster-node/compare/v0.6.0...v0.7.0 [0.6.0]: https://github.com/farcaster-project/farcaster-node/compare/v0.5.0...v0.6.0 [0.5.0]: https://github.com/farcaster-project/farcaster-node/compare/v0.4.0...v0.5.0 [0.4.0]: https://github.com/farcaster-project/farcaster-node/compare/v0.3.0...v0.4.0 [0.3.0]: https://github.com/farcaster-project/farcaster-node/compare/v0.2.0...v0.3.0 [0.2.0]: https://github.com/farcaster-project/farcaster-node/compare/v0.1.0...v0.2.0 [0.1.0]: https://github.com/farcaster-project/farcaster-node/compare/6c42e2892c18d600d4597356a9f827d58026b54a...v0.1.0