Fixing NodeJS breaking systems

The most important change in this update is a fix for users that are booting up a RoninDojo system for the first time. In a previous blogpost we've explained how this is a procedure that automatically installs RoninDojo software onto the system and starts it.

In one of the components being installed, there's a docker dependency called node:alpine that had an update and unfortunately, it broke a lot of different systems in the wide world out there, including ours. Given that we value uptime for our users, we spoke with with a developer from the SamouraiWallet team. Together, we opted to fix the situation on our end as opposed to waiting for NodeJS to push a new release. In short, the SamouraiWallet team have pushed a change in Dojo to pin the NodeJS container version in the one service that broke (Explorer), making sure the system uses a version that works, and we have now ported this fix to RoninDojo.

Connecting users to peers that accept privacy transactions

Another change was pushed in SamouraiWallet's Dojo, that is now also part of RoninDojo. It no longer supports connecting with the Knots client fork of Bitcoin Core. Additionally, periodically (every 10 minutes) there will be a check on the peers that the bitcoin node is connected to and this procedure will ban any peers advertising themselves as a Knots client. SamouraiWallet has a blog post for this update here: https://blog.samourai.is/dojo-1-22-0-released/.

There's been several talks that explain their reasoning, both technical and political, which we completely stand behind. In short: we do not accept it if anyone decides to censor the (privacy) transactions that SamouraiWallet makes, nor can we support connecting to clients that will reject the transactions SamouraiWallet makes.

If you're interested, you can find these resources here:

Removing support for Bisq

Lastly, we have removed support for Bisq. There's technical problems with Bisq's implementation for connecting to a bitcoind client, which leaves users frustrated in how unstable this connection is. While we are not the only system users have reported having these exact Bisq connection problems with, Bisq incorrectly retains the position that it is our implementation that is faulty and without any investigation sends its users to our chatroom to seek support there.

The field of "things that connect to a server for bitcoin data" nowadays generally expects an indexer in the form of an electrum server implementation to be present in the user's self-hosted server stack. We have this indexer server option available in RoninDojo in the form of either electrs or fulcrum, that users can choose from. We proudly support Sparrow Wallet for example, to connect to either indexer option over tor, or connect over the local network to fulcrum specifically.

However, this modern connection method is not present in Bisq, who to this day have stuck with their SPV connection implementation. This has been an option in the general bitcoin related software ecology for some time, for the type of setup where the client software developers don't host a bitcoin node themselves for clients to connect to, so clients can connect to random bitcoin nodes out in the wild.

This is problematic in the case of a chain-split due to a hard-fork situation, leaving the user with no clue which chain they are connected to. Back when the S2X hard-fork attack happened, SamouraiWallet displayed the power to reject this attack and keep users on the right chain.

On top of that, this SPV connection method depends on a bitcoin node to be configured activating a feature called "peerbloomfilters". These are heavily discouraged for security reasons and the whole feature stands to be phased out in due time (explanation here). Given that we value our users enjoying uptime on their RoninDojo nodes, we cannot in good conscience have this risk active on the bitcoin node in RoninDojo.

There's any number of factors possible why the connection is unstable. We do not have the time nor resources to debug Bisq's software to investigate this general connection issue on their end. Given that we are dealing with a counterparty acting in bad faith, as well as that there is no solution possible to fix the problem on our end, we were forced to take a stance on the situation. From RoninDojo v2.1.2 onwards, we will no longer support Bisq connecting to RoninDojo.

We must stress that users of Bisq must be aware of the consequences of running Bisq without connecting to their own node. There are significant privacy considerations documented by Bisq here if you were to connect to a node you don't trust: https://bisq.network/blog/privacy-in-bitsquare/ (see the chapter "Privacy in the Bitcoin network").

This is hereby a call to all RoninDojo users and any proponents of RoninDojo and SamouraiWallet, to come to us and tell us about any alternatives to Bisq, so that we can inform our users of the best options out there for them to exchange their bitcoin privately using the right decentralized exchanges.

Changelog

RoninDojo v2.1.2

  • Removed Bisq support
  • Updated RoninDojo's Dojo fork to v2.1.2 (based off upstream Dojo v1.22.0)
  • Fixes the Explorer container not building since alpine 3.19 released
  • Bitcoind now bans Knots clients as peers
  • Credits: DojoCoder, dammkewl, BTCxZelko, BrotherRabbit, KYC3, Wave, Din, Numbers
Share this post