Olivier Janssens
7 min readAug 23, 2017

--

First of all I want to applaud you for writing a proper response. Much better than most one-liners you get on twitter. I will take an equal amount of time to properly address your remarks. I think medium will hit it’s limitations on quoting each other soon, and I have put your replies in quotes

like this

and my original text that you quoted

like this

Let’s get to it.

The very first sentence is factually inaccurate:

In the early days of Bitcoin, there was no-such thing as a “non-mining full node”. Every miner was a node and every node was a miner.

Not true. There was always an option to mine or not to mine. I mined for a month and then stopped, since it was burning my lap to run the CPU all the time. After January 2011 my full node was very definitely a non-mining full node.

Sure, you could disable the mining functionality in the Bitcoin software. But that’s not my point. In the white paper, the intent/meaning behind the word “node”, is always a miner.

the moment the majority of miners would start performing fraud, Bitcoin will become worthless and noone will trust it any longer

That’s not true. If the majority of miners start mining invalid blocks, the exchanges and real users (the ones validating the blocks they accept) would reject those blocks. The dishonest miners have effectively resigned from the network and in time the difficulty would adjust, allowing the remaining honest miners to earn more coins per unit hashrate.

First of all, my point still stands: No miner will be crazy enough to destroy their whole investment by performing fraud. Especially not the majority of miners! They know that exchanges, wallet providers and users will retaliate.

But let’s just play along with your extreme case of what would happen if the majority of the miners start performing fraud.

Exchanges and payment providers will reject the transactions. The honest miners that remain will also. But we have a majority of miners that became evil and are performing fraud. So they will keep building the fraudulent chain and some people will accept the transactions while others won’t. It’s absurd to think that everyone in the world needs to or will run a “non-mining full node” to prevent that. Here’s what would happen, no matter how many “non-mining full nodes” or SPV clients there are:

  • You can’t just fork Bitcoin without changing the POW, because the evil miners will probably just come/switch to your new chain.
  • The only recourse is a POW change. I expect that some ASIC-resistant variant will be agreed upon and activated within 12 hours or maximum a day (Bitcoin will be in chaos during this period).
  • Bitcoin will fork to the new POW and reset to the last block that was mined before all miners became evil. This means that even if you did accept fraudulent transactions, they will be reverted. So it debunks the whole point of “people shouldn’t be running SPV nodes because it’s not safe” and/or “everyone should be running a full node”.

Miners know people will retaliate by changing the proof of work system to make the miners’s equipment obsolete.

Not even that. We would simply reject their blocks. We can do this because we are running fully validating nodes.

No, please check my points above. First of all you’d need everyone in the world to run a “non-minding full node”, which is absurd because maybe 1% of Bitcoin users are running full nodes today. Second of all, the chances of a majority of miners destroying their investment is practically zero, and third, in practice you’d have to change the POW today so your argument doesn’t stand.

Neither a “non-mining full node” nor an SPV client will prevent a majority of miners from doing an upgrade through a hard fork.

My non-mining full node can’t stop miners from resigning from the network and going to work on an altcoin. But it can detect when they do so, and reject their invalid blocks. That’s the point. Miners don’t get to set the consensus rules; they get to enforce them. If they don’t enforce the consensus rules, they aren’t mining Bitcoin. They’re mining an altcoin, and my full node will reject their altcoin blocks.

Same point I made above. And it doesn’t matter if you run a “non-mining full node” or an SPV client. If there’s a hardfork (or softfork!) you don’t agree with, you can either fork away or hope there will be enough support from exchanges, payment providers and users (SPV or no SPV) to support you in rejecting the upgrade. It all depends on the community, and your “non-mining full node” plays a very minor part in that. It can help you make a statement, but if miners decide to do the upgrade and no one wants it, we go to a similar scenario as what would happen when miners would perform fraud: We will likely end up with a POW change and a fork.

you will need to update your “non-mining full node” software to keep using the Bitcoin Network

No, that’s not true. I will need to update my node software if I wish to switch to an altcoin. If I want to stick with Bitcoin I don’t need to update anything.

I’ve already rebutted your point above.

Connecting directly to a trusted mining full node is the only way to make sure your transaction has safely arrived

“trusted mining full node” — I think you’re missing the point. We aren’t meant to be trusting third parties. If you want to have to trust third parties I would recommend using PayPal or some other centralized legacy system.

You explicitly *are* trusting the miners to remain honest and not perform fraud. That doesn’t mean they can’t be fired though. And my point remains: only a very small minority needs to check if the miners remain honest. Having everyone run a “non-mining full node” to check the honesty of miners is absurdly inefficient. You can even make a website that sends out an alert if it detects something is off, and there’s millions of other ways the community will immediately detect the fraud and take action.

This makes zero confirmation transactions much safer

Zero confirmation transactions have never been safe, and never will be. Miners are under no obligation to mine the first version of a transaction they see. There is nothing to stop them mining a high-fee double-spend transaction even if it doesn’t bear the “replace by fee” mark.

Again, my point above is that you trust the majority of miners to remain honest, that’s how Bitcoin works. I also discussed the repercussions if they become dishonest. There’s no need to have everyone run a “non-mining full node” to make that happen.

If everyone runs a “non-mining full node” and there’s a hard fork upgrade, a lot of clients would become obsolete

If there’s a hard fork upgrade, by definition there is consensus for it, and so the people running full nodes would update their software. If instead there’s a hard fork corporate takeover attack on the network, the full nodes won’t update their software and will continue to operate on the Bitcoin network, unaffected by the malicious hard fork. This is a good thing.

Again the point I made above: It’s ridiculous to have everyone run a “non-mining full node” to prevent evil upgrades. If an evil upgrade is planned, the community will reject it no matter what software they run.

If most people would run an SPV client instead, they wouldn’t notice anything and just follow the longest chain

That would be a problem. People might find themselves using B2Xcoin without even knowing it. It is a mistake to use SPV clients and trust that the miners won’t switch to the wrong consensus rules without you knowing about it.

Again the point I made above: It’s ridiculous to have everyone run a “non-mining full node” to prevent evil upgrades. If an evil upgrade is planned, the community will reject it no matter what software they run. Case in point: The Segwit soft fork was also rejected and resulted in Bitcoin Cash.

Upgrades could happen faster and with a lot less fuss than today

The same goes for corporate takeovers. It must be inconvenient to have people running their own full nodes getting in the way of big business co-opting Bitcoin. Why don’t we all just trust you and let you twist Bitcoin any way you want to? Double the block rewards? Sure, don’t even bother asking me if I’m OK with it — I’m just an SPV user after all. Roll-back transactions arbitrarily? Don’t mind if you do. I won’t even notice, I’m an SPV user.

No thanks.

Again the point I made above: It’s ridiculous to have everyone run a “non-mining full node” to prevent evil upgrades. If an evil upgrade is planned, the community will reject it no matter what software they run.

But 99% of users can do perfectly fine with an SPV client, and everyone would be better off as a result

For some very specific values of “everyone”.

I think I answered all your questions. In closing, you do realize 99% of users are already running SPV clients or relying on third parties, right? So my case is already made and proven.

--

--