Post
Topic
Board Development & Technical Discussion
Re: Segwit details? N + 2*numtxids + numvins > N, segwit uses more space than 2MB HF
by
JorgeStolfi
on 27/03/2016, 19:19:42 UTC
They are actually NOPs. They mean "do nothing" not "terminate with success".

Thanks.  I don't know the script language, but can't you build a script with those opcodes that fails to validate if the opcode is interpreted as a NOP, but succeeds if it is redefined to something else?  I suppose that the only redefinitons that would allow a soft fork are of the kind "if (condition) then FAIL else NOP", correct?

Quote
Nope, not true. The original Bitcoin Client (v0.1.0) did not having mining enabled by default. When you downloaded 0.1.0 it defaulted to being a non-mining relay node with the option in the GUI to enabled mining if you so desired. In fact Satoshi even said so himself in the original 0.1.0 announcement email: http://www.metzdowd.com/pipermail/cryptography/2009-January/014994.html.

You can examine the source code of 0.1.5 (the earliest available on github) at https://github.com/bitcoin/bitcoin/tree/v0.1.5 and you can get the original 0.1.0 client with the source code from http://satoshi.nakamotoinstitute.org/code/.

OK, I see what you mean.

Back in 2009 there was only one kind of node, the miner-user-relayer.  Every player could mine; not just in theory, but in practice.  Satoshi apparently assumed that mining would be widespread,even if occasional and anonymous.  And he assumed that players would join primarily for the benefits of being users.

Later a second kind of node (already predicted in the whitepaper) was introduced, the simple client.  Still, the simple client was supposed to use the same rules as the miners, but only check a subset of them.  

Today there is a third kind, the dedicated "full but non-mining" relay, aka "node", which apparently has a very distinct role and is supposed to be an essential defense against misbehaving miners and other menaces.  And, TIL, needs special validity rules.  

The relaying function of miners in the original design was already a bit fuzzy, but since relaying was cheap, and all nodes were supposed to be also users and (potential) miners, they could be assumed to share the mining incentives and have the good intentions.  That does not carry over to the present-day nodes.  We have examples of relay nodes that filter transactions based on arbitrary ideological criteria, nodes that are committed to specific "parties" in the block size war...  Where is the analysis that they are helping rather than harming the security of the network?

PS. For general joy of mankind, I am traveling in a few hours and will be offline for 2 days.