I have spent quite a bit of time studying how the Bitcoin network actually works, but I'm not sure I'm 100%, so these questions will hopefully clarify some of the gaps in my understanding. Given the decentralized nature of the network, there is no single authority that decides which is the "current" block. Nodes assume the longest chain is the "correct" one. So:
(1) If two blocks are computed simultaneously by nodes on opposite sides of the world, both nodes will broadcast valid blocks with the target hashes at the same time. Then the nodes closest to the "winners" will each start extending that chain. Even when they get word of the other chain, they will continue to work on the first one they received. But as soon as one of the chains gets extended, all nodes will switch to that chain, and the other chain will be orphaned.
-- Is this correct?
-- If Deepbit reports a block as "Invalid," is this why?
Yes on both counts.
(2) Let's assume that a government has a massive banks of FPGAs which are not on the network right now, but actually would be more than 50% of the network speed if they were (not really feasible, but governments have a lot of money...). Now, instead of joining the network, they start building an alternative blockchain branch, starting from some arbitrary block. Because they have more computing power than the rest of the network, they can start building the blockchain faster than the "current" blockchain everyone is working on. Could they build this alternate blockchain branch for 2 months, and then broadcast it to the network all at once? If all blocks in the new chain are valid, and it's longer than the current, then won't all nodes switch to it? Then all the transactions of the last two months will basically be reversed because they "never existed" in the new blockchain? This would seriously disrupt the Bitcoin network...
Yes, that is what would happen. To prevent such a disaster, various ideas are being thrown around where, essentially, such a large reorganization would have to be resolved manually by all the other active nodes. However, if someone has a majority of the hashing power, we're still screwed.
(3) Are transaction scripts currently disabled in the main Bitcoin client software? If not, then is anything stopping people for using scripts in their transactions? If so, then what is stopping someone from including a script in all their transactions that says no private key is required to transfer the coins onward? Once the main Bitcoin client software starts using the scripts, then that old transaction no longer requires a private key signature and the they can send the coins back to themself if they were never transfered out out of that account.
-Eto
The current client won't make, nor recognize, any transactions with a non-standard script. It CAN, however, verify scripts when they are spent. If you use a script that is spendable by anybody, someone would have to notice the transaction and then spend it. It wouldn't show up in everyone's client automatically.
Non-standard script transactions can currently be submitted to Eligius and put in a block for a small fee.