So what i ask myself, when the old nodes only see empty blocks, aren't the transactions needed to calculate if the block hash is correct? If the transactions are not seeable then how can the hash be calculated as valid? As far as i remember, changing the transactions of a block will give you another seed part that is used as base to find the block hash.
In old nodes' view, it is just an empty block with a coinbase transaction, nothing special, like those blocks generated by SPV mining. So the hash function will return OK signal.
You write that segwit miner still would need nearly half of the network to do this fork but wouldn't it be sufficient when 10% segwit nodes find a block, let's say a minute before the 90% non segwit nodes, then they propagate it through matt's network(?) to all the big miners and these miners can instantly confirm the block because nothing big to be calculated. They would accept the block and that would be it.
Though even then, the old nodes would still think the bitcoins, that were moved in the segwit block, are at the old addresses and the segwit nodes with bitcoins that were transferred already, wouldn't that mean a fork of some kind has happened because a big part of the network has different details about the status of the bitcoins?
You are right. If Segwit nodes only have 10% of hash power, then when they publish their block, the block will be accepted by core nodes, and core nodes see nothing in it. But in Segwit nodes' view, that block contains a transaction that spent Alice's coins. Core nodes does not see this transaction, thus they believe Alice's coins are still there, but in Segwit nodes' view, it is already spent
As a result, later when core nodes trying to spend those Alice's coins, that block will be accepted by Core nodes but not Segwit nodes, so a fork will happen. The fork happens because Segwit nodes does not have enough hash power to prevent core nodes to publish Alice's transaction. If Segwit nodes commands more than 60% of hash power, then core mining nodes will never be able to spend Alice's coins, because all their blocks are orphaned. And there will never be a fork
Further on, when the network only has 10% segwit nodes, which is likely in the beginning, then wouldn't there an attack vector by misusing the blindness of the nonsegwit miner nodes?
I mean depending on how the nodes confirm the segwit blocks at all, what if someone creates a block that contains fake segwit transactions? Completely rubbish or scammy transactions. The segwit nodes would discard this block but the nonsegwit nodes could not check if the block is invalid. They would accept it and hardfork. Though when i think about it, nothing would change for the nonsegwit nodes anyway because they don't know the segwit transactions. And the segwit nodes would still work on what they know.
True, this has been pointed out by someone and it seems to be a big issue. If a rogue segwit miner publish an invalid segwit block, it will be accepted by the core nodes while rejected by segwit nodes, so a fork will happen from there. In fact this makes the segwit implementation phase so vulnerable that just one invalid block will cause it to fork into its own chain
(Correction: Before the fork condition is reached, e.g. 75% hash power supporting segwit, segwit nodes will not generate and accept new transaction format, so the system is still safe. And after the fork, the attacker need more than 25% of hash power from segwit nodes to push in such an invalid block, since the other 25% of old nodes' hash power will assist to write the block into the chain)