Miners can never force full nodes to accept anything invalid.
Right. But can full nodes force miners to reject anything? If not then what full nodes think is valid or not doesn't effect the blockchain.
Miners are perfectly free to mine invalid chains, if they want. As I’ve said elsewhere, they can mine chains of blocks filled with the output of /dev/random in lieu of transactions, if they want. But those invalid chains will not exist to the Bitcoin network. “What full nodes think is valid or not” absolutely
does affect the blockchain: Indeed, that determines what the blockchain is.
Right. But can full nodes force miners to reject anything? If not then what full nodes think is valid or not doesn't effect the blockchain.
Full nodes can't force the miners to do anything. But full nodes (and their users) can reject anything the miners do.
In your scenario, the miners will be working away on their invalid blockchain, but the valid blockchain will stop growing. At that point all it takes in one miner doing CPU mining on an old Celeron to resume growing the valid blockchain. It may take several difficulty adjustment periods before the single miner can produce a block on schedule, but valid transactions will eventually resume. Meanwhile, the rogue miners will be unable to turn their BogusCoins into value.
One thing I have learned in the altcoin space is that value follows hashpower. A coin with high hashpower will have a higher value on average, and as a coins hashpower increases, so does the value. If the majority of Bitcoin miners start mining InvalidCoin fork, then that is the new Bitcoin. Could a node point out that there was an invalid transaction and that miners should stop on their chain and restart on that old block? Sure, but remember "One CPU one Vote", if the majority of miners just continue mining InvalidCoin, then the "CPU's" have spoken.
Forks happen all the time on altcoin chains and what it does is make it so the cartel is the only one who can mine and all other miners are out of luck. The minority miners can't convince anyone that they are actually the ones mining the real altcoin. Value follows hashpower.
You have it precisely backwards:
Hashpower follows value. In the altcoin space, I’ve been fascinated to watch as an ASIC-resistant, GPU-mined coin’s mining difficulty rises and falls immediately following fluctuation of the ratio of its value to the value of other GPU-mined coins. Of course, many big mining farms have the switch set to occur automatically.
Bitcoin does not derive its value from mining hashpower. Bitcoin’s value incentivizes and indeed, pays for hashpower. As codewench says, if all the ASIC miners started churning out invalid blocks, Bitcoin could proceed with “an old Celeron”—but of course that would not happen, because miners want to
make money. Some miners such as Jihan (Bitmain) may have a long-term profit strategy driven by ulterior motives, and/or
security exploits (substantially fixed by Segwit) which give them a profit advantage on a forkchain; and some may simply be fools, in the sense of bad businessmen. But the rest will run to mine the coin with the highest value. That is Bitcoin. And
to get their profits, the miners need their blocks to be accepted by full nodes—rejection by full nodes means no mining profits! That’s one important part of what you keep missing.
More generally, you need to understand the purpose of mining. I have repeatedly tried to explain that to you in these various different threads. Look up
Byzantine fault tolerance, the
Byzantine generals problem, and the
double-spend problem. Start learning.
Contra what you say, in Segwit, there is no “witness block”. Segwit witness data is included inside the same block as the rest of the transaction data. Signatures are always present. “This is the whole point of segwit, so that the signature is not needed in the blockchain.” False. You have not even the slightest idea of what Segwit is, or how Segwit works; you’re just spouting off nonsense which you evidently make up on the spot.
If this is so then why not just hash the signatures into the transaction? Then it would be the same as we have now yet it would be a block size increase to 4mb. Segwit signatures are not hashed into the UTXO transaction and thus cannot be verified via traditional means. As far as I understand segwit is done to save space in the UTXO.
What you just said is such a long string of disconnected
non sequitur that I don’t even know where to start.
The bird’s-eye overview of how Segwit actually works:
Segregated
Witness transactions are serialized in such a manner that the “witness data” (public keys and signature) is dealt with separately from the input/output/script data,
within the same block. This permits witness data to be omitted
in communications with old, non-upgraded nodes, and only with them. Segwit nodes receive all transaction data, including signatures, within the same block. None of this has anything to do with the UTXO set.
The principal purpose of segregating the witness data was to permit changing the blocksize without a hardfork. Segwit doesn’t just change the blocksize limit: It gets rid of the blocksize limit entirely. Instead, Bitcoin now has a
block weight limit of 4000000 bytes. Transaction data in the old serialization format is weighted (much) more heavily; Segwit witness data is measured with much lighter “weight”, byte for byte. The upshot is that old, non-upgraded nodes will continue seeing blocks with a maximum size of 1000000 bytes; whereas upgraded nodes can take advantage of larger blocks. Instead of a hardfork which suddenly and totally breaks old nodes, we have a gradual transition which lets old nodes continue minimal function until their owners get around to upgrading.
That is the block capacity part of Segwit. In my opinion, the most important parts of Segwit are that it also includes bugfixes for transaction malleability and the quadratic sighash scaling problem; and it includes a script versioning system, for forward-compatibility with future new features. I’m not Litecoin user, but I do concur with what Charlie Lee said in favour of Segwit (
as I just quoted in one of these other threads you started). The block capacity upgrade was the smallest part of Segwit, so to speak.
Now unless you have something
new to say, other than rehashing the same drastically incorrect bare assertions, or unless somebody else pipes up with something interesting, I will bow out of these threads for now so as to stop bumping them—and to not become this guy: