I would like to know the differences between Qubic smart contracts and Ethereum smart contracts (for example: Turing-completeness, oracle-like behaviors...).
One main difference in the language: Abra is a functional language (source : "Qubic tasks are specified using an intermediate trinary-based functional programming language called Abra.") and Solidity (main language for Ethereum smart contract) is a classical procedural language.
Writing a formal proof (i.e. a mathematical proof) that a program is correct is extremely difficult for a procedural language. But for a functional language: it is just difficult.
We have seen major bugs is smart contracts written in Solidity (the DAO bug and the parity bug). This kind of bug affect the trust of users. A smart contract with a formal proof of correctness can be trusted.
The drawback is of course that functional programming is far more difficult to write (everything is a function, there is no state, just input and output with a mathematical definition of the relation between them) and writing a formal proof requires solid mathematical skills. But in the end, a functional program with it's formal proof can be trusted.
Qubic smart contracts will be run by a handful of nodes or limited subset of iota nodes, while
Ethereum smart contracts are run by all the nodes.
This difference in design is independent of any implementation details which will follow up.