
IMPORTANT: This update is mandatory. Due to changes in the data structure of BasicSwap-related SMSG messages, previous instances of the DEX are not forward-compatible with this new version. This means that offers posted from updated instances will not appear on older instances. All users must update to maintain full network connectivity.
After 171 commits over 164 files changed coming from 6 different contributors, we are excited to announce the release of a significant BasicSwap update (v0.14.4) along with an update to its user interface, now at version 3.2.1.


This substantial update represents weeks of dedicated effort, incorporating numerous improvements, bug fixes, new features, and significant refactors of different core components of the system. The changes stem from extensive testing by both contributors and community members, resulting in a significant step forward for user experience and platform stability.
Noteworthy Updates 💡
While this update is massive in scope, many changes are backend changes to improve efficiency, stability, and cross-compatibility. However, several significant user experience enhancements are worth highlighting.
Various Coin Core Updates ✅
We've made several updates to the various coins available on BasicSwap DEX. Whether these updates involve new core versions or integration improvements, we highly recommend updating your node versions as soon as possible.
Significant UI Refactor 🖥️
A major refactoring of the user interface code has occurred over the last couple of weeks. While these changes primarily involve code organization and better practices that aren't immediately apparent to end users, we've also implemented numerous UI upgrades, including:
- Local reputation tracking
- Enhanced order book formatting with additional information
- New Bids page
- Improved Swaps in Progress page
- Better Offer pages
- More responsive and dynamic page behavior
- Better rate fetching
- Much more...
The interface changes since our last version (v0.14.4) are substantial, and you'll miss out on many new features and improvements if you don't update.
Client Authentication 🔐
We've added the ability to configure your BasicSwap instance with client authentication. This feature protects both the webUI and API port access with a password of your choosing.
This is vital if you're running BasicSwap on a cloud server or using the market-making companion script in a network environment you don't completely trust. To set up client authentication, please refer to the installation documentation.
Multi-Net Support 🌐
We've pushed to master
the preliminary code for upcoming multi network support for BasicSwap. We've deployed the first phase of a significant infrastructure update to our networking architecture. This new feature, currently called "multi-net," enables BasicSwap to distribute swap, offer, and bid messages across multiple messaging networks beyond SMSG when the primary network experiences high load.
Since all messages adhere to a unified encryption and formatting standard, even non-decentralized networks (such as Telegram or email) could be utilized without compromising user privacy or security.
This new functionality delivers several key benefits:
- Improved platform scalability and resilience
- Greater flexibility for third-party integrations, allowing partners to use their preferred compatible networks for message relay
- Cross-network message compatibility, eliminating the need for users to operate on the same network during swaps
While the foundation is now in place, further development is still needed before the implementation becomes fully usable. The current proof of concept using Simplex broadcasts messages to the entire group rather than targeting specific recipients — an inefficiency we're addressing given Simplex's limitations.
The core architecture is designed to extend SMSG functionality across various networks. All messages maintain SMSG encryption and message IDs for consistency, although additional work is required to ensure full compatibility of Python SMSG messages across all networks and to add convenience functions for submitting pre-formed SMSG messages. Currently, this new system pushes to the core through P2P connections (for SMSG testing) but doesn't yet join the SMSG and Simplex networks.
Not to be overlooked is the important advantage of this approach in its flexibility regarding network requirements. Since messages are (or will be) fully valid SMSG entities, they can be transmitted over plaintext networks like Telegram, Delta, or even Pastebin. Email systems supporting POP3/IMAP protocols are particularly well-suited for more decentralization-focused users. It's worth noting that centralized options, including Simplex, may still expose some information pseudonymously about which accounts are communicating with each other.
Acceptance Strategy Knowledge 🧠
When publishing a new offer, the SMSG messages relaying its details to the rest of the network now carry information about whether the offer is set to automatically accept bids. This information is also displayed on an offer's page before submitting a bid, helping you make better-informed decisions about which offers to bid on.
Please note that this change means previous instances of BasicSwap will not be able to properly resolve offer messages from up-to-date instances. Updating your BasicSwap instance is mandatory to receive all offers from the network. However, offer messages from older instances remain compatible with the new version, so upgrading now carries no downside.
Docs 📚️
We've migrated BasicSwap's documentation from the Particl Academy (which uses ReadTheDocs) to a more maintainable and flexible platform (Docusaurus) at docs.basicswapdex.com. While we'll maintain the BasicSwap documentation on the Particl Academy, all new updates will be provided at the new location.
Install the Latest BasicSwap Update 🖥️
Due to a significant change in what data is carried in BasicSwap-related messages, it is mandatory to update the DEX. Failure to do so will result in your instance not picking up messages from up-to-date instances.
To install the new update, which includes both the codebase and user interface updates, simply update BasicSwap through the usual process (video walkthrough) and launch the DEX again.
Docker
If you've installed BasicSwap following the Docker method...
- Shutdown BasicSwap properly and stop the Docker image (
docker-compose stop
), - From the
basicswap
folder, type thegit pull
command, - In the
/docker
folder, run thedocker-compose build --no-cache
command, - Once the process completes, launch BasicSwap again using the
docker-compose up
command.
Note: Depending on your Docker version, adding a dash betweendocker
andcompose
may not be necessary and may instead throw an error.
Non-Docker
If you've installed BasicSwap following the non-Docker method...
- Shutdown BasicSwap properly,
- From the
~/coinswaps/basicswap
folder, type thegit pull
command, - Execute the following command:
pip install --require-hashes -r requirements.txt
, - Execute the following command:
pip3 install .
, - Launch BasicSwap as usual.
Install Script
If you've installed BasicSwap using Nahuhh's Github installation script...
- Execute the update command twice:
bsx-update && bsx-update
.
Changelog 📝
Coin(s)
- Bitcoin — Added support for Bitcoin descriptor wallets
- Bitcoin — Update Bitcoins' fast sync blockchain file
- Bitcoin — Add a workaround to prevent Bitcoin wallets' seeds changing after enabling encryption
- Bitcoin Cash — Upgraded Bitcoin Cash node to version 28.0.1
- Bitcoin Cash — Refresh BCH keypool
- Monero — Upgrade Monero node to version 0.18.4.0
- Monero — Corrupt Monero wallets are now detected
- Monero — Remove inaccurate fee rates for Monero and hide sweep all checkbox
- Monero — Make Monero's fork height a transient error
- Monero — Sets Monero's
trusted_daemon
setting totrue
by default - Litecoin — Fixed a bug with MWEB wallet generation
- PIVX — Fixed issues with PIVX
- Namecoin — Large array of fixes and improvements to the Namecoin integration
- Wownero — Fixed Wownero's Windows download URL
- Fixed a reseed wallet regression error
API
- Better handling of errors with the API
- Fixed bug with Firo's API
- Simplified API requests
- Identities API updated
- Use CryptoCompare
pricemulti
endpoint for multiple coins - Reduced
lookupFiatRates
debug message
UI Code
- Fixed various memory leaks and improved memory efficiency
- Major UI refactor; splitting components in individual classes and significant improvements to code organization
- Fixed Javascript's HTTP error 429
- Improved websockets by reducing their delays -> tables now load faster
- Set default fallback wsport
- Updated wallets with backend coin price caching
UI
- Fixed manual refresh button
- General code cleanup
- Added tooltips for rates and markets
- Better status feedback (offers, swaps, bids)
- Improved SMSG identity fetching
- Fixed overflow bar on offer pages
- Offer pages now more responsive
- Better logic for sorting order book table
- New, revamped Bids page (unified and dynamic with websockets)
- New, revamped Swaps in Progress page (dynamic with websockets)
- Added ability to export Bids data/history in a .csv file
- Moved Amount and Rate Variable to
debug_ui
mode - Fixes to how the order book fetches rates
- Offer pages now display whether the offer is set to automatically accept bids or not
Core Functionality
- Added
--upgradecores
tobasicswap-prepare
script - Added an estimated transaction fee amount check when posting a bid
- Add
wallet_name
option tobasicswap.json
- Avoid reentrant error in
signal_handler
- Periodically prune old state data
- Import signing pubkeys from local filesystem
- Change `ADD_PUBKEY_URL to a per coin process
basicswap-prepare
can now use original UTXO snapshot signaturebasicswap-prepare
now compare full PGP fingerprintbasicswap-prepape
now properly work with encrypted walletsbasicswap-prepare
now makes the setup config permament- Silence Python deprecation warning
- Fixed
checkWallets
regression (must rename watchonly wallet also) - Add
safe_logs
option to anonymize logs and protect sensitive data - Deduplicate
getCoinIdFromTicker
- Cache coin rates in the backend
- Added log rotation to avoid bloat and oversizing
- Fixed
can_accept
upgraded databases - Fixed
addcoin
script - Hide
BrokenPipeErrors
- Added warning if local PGP key cannot be found
- Set
expect_seed
after wallet creation - Added the ability to enable client authentication to protect the webUI and API port access with a password
- Whether an offer is set to automatically accept bids or not is now included in SMSG messages
- Added preliminary multi-net support for BasicSwap, allowing for load balancing and the use of alternative data layers other than SMSG
- Simplex network added as a proof of concept for the above-mentioned multi-net support
- Improved
checkSplitMessages
Dependencies
- Bumped python-gnupg from 0.5.3 to 0.5.4
- Bumped pyzmq from 26.2.0 to 26.2.1
- Bumped black from 24.10.0 to 25.1.0
- Bumped jinja2 from 3.1.5 to 3.1.6
- Updated guix packed version
Tests
- Fixed
test_xmr_persistent
with Bitcoin v28.0 - Fixed CI caching
- Interecept signals in
test_scripts.py
- Run Selenium test in CI
- Add log prefix to
BaseTestWithPrepare
- Run Black in CI
- Updated
test_prepare
and added it to CI - Completed
test_swap_direction
test - Changes applied to flake8 7.2
- Fixed
test_btc_xmr
on Windows
You can inspect all changes by verifying the 0.14.2 comparison page here.
The Open-Source Revolution
We're on a mission to create a private, independent, and pro-liberty digital economy that is fair and open to all. Learn more about what we do at any of the following links.
Be a part of the movement and join us in the fight for our freedoms by meeting the community and spreading the word far and wide!
Discord Telegram Element / Matrix
Learn more about Particl with these in-depth resources.
Website BasicSwap DEX Academy Wiki
Follow the link below to get a list of all other useful Particl-related links you may find helpful.