shorter version of tau vs eth in the interview i gave to the chinese site 8btc:
The differences between Tau-Chain and Ethereum are mainly three:
1. Self defining (see image). Bitcoins and Ethereum protocols are fixed, therefore it cannot be changed in many cases, or a changes might require a fork which might be a quite insecure operation. As an example, what if someone finds a better blockchain algorithm, would Ethereum & Bitcoin be able to migrate? Or, what if Bitcoin had a built-in and secure way to deal with the block size crisis, as a special case of defining the protocol? The network should have the ability to change with time. Any trial to predict the parameters beforehand will eventually fail. For that, the code of the client itself has to come from the blockchain, and we have to be able to make sure that this code is safe, and is doing what is intended to do. This is why for being self-defining we must have our special logic, as we describe below.
2. Context separation - on Ethereum all nodes run the same code. What can therefore be the computational power of the whole Ethereum network (for code, not mining)? It cannot be no more than one single home computer. This is because all nodes must run exactly same code, as part of the process of verifying the blockchain. On Tau every user can decide which chain or application to run, given they all run the root chain, which contains the definition of the network (that might change with time, as above).
3. Logic: Ethereum uses Turing completeness, while Tau prefers consistency and decidability instead of expressibility. This tradeoff is rooted in deep logical results such as Godel's incompleteness theorems and the Halting Problem. Trust worthiness in Ethereum smart contracts can be exploited by crafted inputs, there can be both good and bad inputs so eventually highly unexpected behaviors will come along.
Tau uses a logic which is consistent and decidable (specifically, Martin-Lof Type Theory). This means that all true statements about code can be proved, and the proofs can be trusted. One can supply requirements for software, and automatically verify that given code meet those requirements. By that one can predetermine code's behavior and have a mathematical proof that it meets its requirements, so no undesired behavior can possibly happen, as long as it is formalised in Tau's language.
More advanced explanation: Turing completeness is inherently insecure because mathematically there will be always be infinitely many statements that cannot be neither proved nor disproved. Things can be provably correct or provably wrong at the same time, for example, stating "I'm able to decide whether Turing complete code is secure" (while providing some formal definition of security) is almost always a self-contradictory sentence (cf. Rice theorem).