In the following article (Link to the article: https://medium.com/nearprotocol/unsolved-problems-in-blockchain-sharding-2327d6517f43), the challenges of zk-SNARKs are mentioned as follows:
The challenges of zk-SNARKs, besides performance, are:
Dependency on less-researched and less-time-tested cryptographic primitives;
“Toxic waste” — zk-SNARKs depend on a trusted setup in which a group of people performs some computation and then discards the intermediate values of that computation. If all the participants of the procedure collude and keep the intermediate values, fake proofs can be created;
Extra complexity introduced into the system design;
zk-SNARKs only work for a subset of possible computations, so a protocol with a Turing-complete smart contract language wouldn’t be able to use SNARKs to prove the validity of the chain.”
The questions are:
Why is NOT a protocol with a Turing-complete smart contract language able to use SNARKs to prove the validity of the chain?
What does it mean: " zk-SNARKs only work for a subset of possible computations "