The node itself does not change, but the context in which they are spending in does. Thus, if RIGHT NOW you were to create a transaction with a segwit output, it is an anyonecanspend output and anyone can spend from that output
So the security is to make sure this output can never be spent by old nodes, how can you be sure of that?
Suppose two pools with 60% hash rate, and they are sitting on the side line watching the mined blocks, once 35% of blocks are mined as segwit support, they switch to mine segwit blocks and activate it, then there will be many segwit transactions out there, and then they switch back to original software
Now network are full of anyonecanspend transactions that is free for them to grab, and they have 60% of hash power so their chain become the longest, since majority of the nodes are still old style nodes (as in soft fork you don't need nodes to upgrade), these nodes will build on their chain, and the rest of the segwit nodes will fork into a minority chain since now they reject old style blocks
So it is a mess after this accident, all the people who used segwit transaction will lose their money and they don't even understand what happened
Nope. It's all in the deployment. There is a lock in period (grace period) before the rules go in effect. See BIP 9:
https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki for how the deployment actually works because they will be using versionbits.
A p2wpkh (a type of segwit output) is as follows
OP_0 <20 byte hash>
op_true is used for anyone can spend.. and valid to be relayed and valid/accepted into blocks
currently op_0 does nothing.. so would get rejected when relayed but accepted(blindly ignored) in blocks
however after segwit is released op_0 can be treated similarly to op_true by upgraded nodes. but still rejected at relay and blindly ignored in blocks by older nodes.
there is a difference
Uh. No. OP_0 is currently treated as a counter, but basically as a NOP now. After segwit is released, it is treated as script versioning. The OP_0 isn't the part that matters, but rather the fact that the stack is not zero or empty and thus is true. That is what makes it anyonecanspend because if the scriptsig is empty then the stack will always evaluate to true.