After 112 commits coming from 6 different contributors, we are excited to announce the release of BasicSwap version 0.14.2, along with an update to its user interface, now at version 3.1.

This substantial update represents weeks of dedicated effort, incorporating numerous improvements, bug fixes, and new features. The changes stem from extensive testing by both contributors and community members, resulting in a significant step forward for user experience and platform stability.

This update welcomes Bitcoin Cash and implements several key improvements across all aspects of the platform, including changes to the codebase, the user interface, and to individual coin integrations such as Monero.

Notably, a key technical change is the complete replacement of SQLAlchemy with manbearpigSQL, our custom-built hybrid database system. This transition simplifies BasicSwap's data management processes while solidifying security by eliminating potential vulnerabilities

We extend special thanks to Ofrnxmr, Mbacoinin, and mainnet_pat for their code contributions this month, as well as to our dedicated community members who have helped identify bugs and areas for improvement through thorough testing and feedback. This update would not have been possible without their valuable efforts and support!

For a comprehensive list of all changes, please refer to the final section of this blog post.


Install the Latest BasicSwap Update 🖥️


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 the git pull command,
  • In the /docker folder, run the docker-compose build --no-cache command,
  • Once the process completes, launch BasicSwap again using the docker-compose up command.

Non-Docker

If you've installed BasicSwap follow the non-Docker method...
  • Shutdown BasicSwap properly,
  • From the ~/coinswaps/basicswap folder, type the git 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 📝

New Coins

  • Bitcoin Cash (BCH)

API

  • Rates and prices are now updated in one single API call instead of one call per coin
  • Fixed Bitcoin Cash (BCH) market rate calculation via API
  • Added set_max_concurrent_bids helper
  • Optionally display events with states

UI Code

  • Refactored the javascript code of the Offers page
  • Refactored the javascript code of the Wallets page

UI

  • The new offer page remembers the last SMSG address used
  • Added a modal to review and confirm a bid's parameters before submitting
  • When publishing an offer on the public order book, rate variable is forced to false
  • When publishing an offer on the public order book, amount variable is forced to true
  • When publish an offer on the public order book, auto-accept is forced to true
  • Fixed various issues with Wownero chart and rates
  • Added a smart refresh button to offers table
  • Fixed caching system for Wallets page
  • Improved the show/hide functionality of the Wallets page (now also applies to cryptocurrencies, not just fiat values)
  • Fixed a UI issue that caused bids to be sent twice
  • Fixed a UI issue that caused connection reset problems
  • Fixed caching system for order book
  • Added better filtering functionality to order book tables
  • Order book and price charts caching system now set to 5 minutes
  • After successfully placing a bid, the user is now automatically redirected to the bid page
  • Order book filters now include "Revoked" and "Expired"
  • Fixed a bug that prevented a deposit address to be properly copied
  • Allow js_offers limit to be set above PAGE_LIMIT
  • Correct date now on displayed chart
  • Wallet blocks and depth requirements now displayed in Wallets page

Core Functionality

  • basicswap-prepare script forces version to respect withcoins
  • basicswap-prepare script now applies disablecoin/addcoin for manage_wallet_daemon
  • basicswap-prepare script doesn't start daemon if coin config exists in basicswap.json anymore
  • Removed incomplete feature from market making companion script
  • Market making script now parses more than one page of offers
  • Allow startup of XMR wallet with a busy daemon
  • Improve XMR startup speed and remove extra wallet open and refresh processes
  • Improve XMR state saving
  • Fixed the functionality that checks for expired offers
  • Set state for expired reverse bids
  • Vastly improved the auto-accept functionality (eliminates a wide variety of possible errors and failures)
  • Fixed the functionality that checks for Particl balances across different states
  • Adjust wallet names for Particl anon and Particl blind interfaces
  • getUnspentByAddr now correctly retrieves unspent Particl blind UTXOs
  • Add debugind to prevent spending coin A lock transaction
  • Fixed unbound error when no wallet data is cached
  • Bypass .local domains when Tor is enabled
  • Reformat entire codebase according to "Black" standard (code aesthetic and format standardization. Not a new functionality or feature.)
  • Allow for the setting of a reserve "below increment" when using the market making script
  • Increased the minimum and meximum order sizes in chainparams
  • Added display_name to chainparams
  • Fixed missing wallets page entries
  • Changed "Offer expired" from an error to a debug message to avoid confusion
  • Shutdown of BasicSwap via SIGHUP signal now handled properly across all platforms
  • Fixed websocket URL in Docker container
  • Added "Failed to get output distribution" as a transient error
  • Set default swap type to Adaptor Signatures if coin_from or coin_to it scriptless
  • Fixed recoverNoScriptTxnWithKey for reverse bids
  • Added Selenium webdriver options to tests
  • Tests now catch when local key is provided to recovertNoScriptTxnWithKey
  • Code update to detect "mercy transactions" from Bitcoin Cash (BCH) swaps
  • Add a new event type when a "mercy transaction" is published
  • Updated Docker tmeplates to include Bitcoin Cash (BCH)

Database

  • Removed sqlalchemy entirely and replaced it with manbearpigSQL
  • Let SQLite handle all query parameters
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.

YouTube Twitter Reddit

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.

Useful Particl links