This is an announcement of a bug in how NBitcoin handles BIP39. If you backed up a seed, restored it and added some spurious spaces in the seed, the restore would derive a completely different wallet. This test explains the problem. This impact notably Wasabi Wallet, NBXplorer and NBitcoin.
In practice I don’t think anybody has been impacted by this bug, but I need to disclose it in case somebody get impacted.

NBitcoin is used by Wasabi Wallet, NBXplorer and BTCPay Server.


Prior to NBitcoin 5.0.54 you could replicate this bug in the following way:

  • Generate a new seed
  • Restore…

While my previous blog post show you how to create a proper installer for windows reliably, let’s see how to do it for Mac OS.

Peculiarities to Mac OS

There is several issues with Mac OS. The main problem lie in the fact that the majority of tutorials rely on XCode.

However XCode is very broken tool which change at every release with new bugs. Not only this, but you don’t know to have to do manual steps to distribute your app. You want the process to be integrated through CI. A simple git tag should be enough to create a new release.


Windows installer


In my previous blog post I talked about what I learnt by leaving the Microsoft bubble, and choices I faced when I considered some cross platform UI Frameworks.

Whichever your choice, you will end up having to solve one issue: How do you distribute your app to your users?
This part was actually 80% of the work, and I will talk about how I tackled it here so you don’t have to suffer as much.

I am distributing the following:

  • setup.exe for windows
  • .dmg for mac
  • .tar.gz for linux nerds
  • .deb for debian users

Self contained dotnet publish

Dotnet has this very useful command…

Packages for several targets

A windows developer’s journey to Linux

Days are gone when .NET was only a Windows thing. The only thing that keep .NET windows is not technical but cultural: The majority of .NET devs have always been windows centric, and you don’t change a culture fast.

.NET Core is more than a good cross platform environment, it is great one, one of the best choice you can make. The exception is for utility tooling: Either do that in bash or in Go. I think .NET will end up having a “no runtime” option in the future with a real single file deployment. (The current single file deployment…

Writing code very often help you to restructure your thoughts in such way that once you are finished, you suddenly realize that you can achieve the same features with less code and in a way easier to understand.

We call this refactoring. And actually, after reading your comments, and sleeping on what I published, I also noticed some bugs in my reasoning, so I need to refactor some parts.

So this article is about changes to my previous previous article about The Ethics of Money and Bitcoin.

Mining fees are impacting the divisibility of Bitcoin

I actually mentioned in the Nature of Money that mining fees was impacting…

Once you are done reading this article, check out some correction I made on this follow up article.

When I am bored coding, I read about coding. But once in a while, I read something else, and Rothbard is often a good bet to not bore me.

For those who never read Rothbard, his thoughts are always derived logically from very simple premises, it is almost like following a mathematical demonstration, but one that you can actually understand. It is hard to disagree with him as you need to find a flaw in his logical reasoning or you need to…

I tried to explains on this previous article why I don’t like Neutrino.
Long story short, the only point I liked was:

  • Increased privacy over BIP37
  • Setting up a mobile node without middle ware like Electrum

This new article is written because, I need to explain:

  • Why I was wrong on the middle ware part
  • The common misconception of people not spending enough time reading my argument and instead misrepresent it as a straw man, so I will reformulate

I will refer as SPV wallets any wallet relying on BIP37 (Bloom filter) or BIP157 (Neutrino) and relying on miners to…

or why it is celebrated for the wrong reason


Neutrino’s goal is to have a simple way for light bitcoin clients to synchronize the state of their wallet, without leaking your wallet information. The downside is that Bitcoin rules are not validated. It is a similar goal to BIP 37 but in a way more pragmatic, efficient, and privacy preserving way. And it is also way more easy to build a wallet on it.

Neutrino makes BIP 37 obsolete. And we should rejoice about it, BIP37 was fundamentally broken, and need to become just an archaeological curiosity. …

…keep coding

I started BTCPay Server in August 2017. BTCPay grew organically with merchants gradually coming to the project.

Halong Mining and Coincards were among the first very high volume users, and brought me tons of bug and feature requests as I was trying to fill the gap between Bitpay and BTCPay, while Rockstardev was initially helping bridging my gaps in CSS/HTML/JS. (along with major contributions like LND support)

BTCPay would not have gone far without them and other early merchants. Not being a merchant myself, it is more difficult to taste my own food as I do with NBXplorer or NBitcoin.

As some of my BTCPay users know, I am very dedicated to make it as simple as possible to anyone to accept Bitcoin with or without Lightning Network. (And also a bunch of altcoins)

BTCPay Server does not sacrifice ease of use against flexibility. If you are a technical person, you are able to easily use the docker deployment for your need on any host that you want.

However, what I want to focus now is User experience of a non technical user interested into running BTCPay Server with lightning network support. …

Nicolas Dorier

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store