This week we published a draft of a new paper titled "Self-Reproducing Coins as Universal Turing Machine"
https://arxiv.org/abs/1806.10116 . This paper basically shows that Ergo is able to do Turing-complete computations (probably, it is more precise to say that is is able to hold a log of Turing-complete computations). The proof is done by showing how to run one of a simplest Turing-complete systems, Wolfram's Rule110 (
https://en.wikipedia.org/wiki/Rule_110), over the Ergo blockchain.
However, Rule110 is utterly primitive system, one can not do much with it. On other hand, much more complex systems are doable with Ergo. The open question is what is not doable in Ergo under concrete restrictions (such as number of registers in a transaction output, and a limit on a script computational complexity; the latter will be adjustable by miners like gas limit per block in Ethereum though).
Let me philosophize a little bit on what Ergo is. Bitcoin is a digital gold system, with some primitive spending conditions to be set on coins. Ethereum is a fully replicated programmable calculator, which is storing a lot of communicating processing sleeping before being awaken by an incoming transaction (with a lot of trivial and non-trivial side-effects, sometimes counter-intuitive or simply dangerous).
Ergo is a storage of rich state. You can create a coin (an output) which is requiring a spending transaction to create an output with the same script, or with an amount somehow related to the amount of the coin to be spent. You can have arbitrary data stored in your coin (in form of typed registers). With the state and rules being set in a particular way, you can simulate a Turing machine, or do a crowdfunding or oracles in a simple way (we have examples in the repository which holds our transactional language (
https://github.com/ScorexFoundation/sigmastate-interpreter).
Despite the richer functionality, our language is safer that Bitcoin's (computational complexity could be decided before an actual execution, and a block which is too heavy to validate could be rejected early and without much burden).
Recently an example of a finite state machine have been shown (
https://github.com/ScorexFoundation/sigmastate-interpreter/blob/34afeb4db149d516adfe98cd24e469699eb56456/src/test/scala/sigmastate/utxo/examples/FsmExampleSpecification.scala). FSMs are important as there were some proposals to use them to describe financial contracts (e.g.
https://www.financialresearch.gov/working-papers/files/OFRwp-2015-04_Contract-as-Automaton-The-Computational-Representation-of-Financial-Agreements.pdf ). FSMs in Ergo are like MAST in Bitcoin, but more powerful (cycles in execution are possible). For each step of a contract execution, only current state identifier, and a commitment to FSM description are stored, to perform a step, an user must show correct script and also an outcome state identifier (corresponding to a FSM description, which is basically about tree root hash).
We are working on custom tokens, hopefully a testnet with tokens support will be launched next week. After the testnet launch (version 1.5.0 of the reference implementation), we will release 1.5.1 shortly with optimizations in bootstrapping and memory footprint. In July we'll work on networking layer optimizations and efficiency of the client. Also, PoW research will be started