There has been a lot of talk about leveraging zk-SNARKs to bring privacy features to the Ethereum Blockchain. My question is, how is Ethereum facilitating the verification of zk-SNARKs at the moment, and, moreover, what further steps are planned in this direction?
I am aware that Byzantinum, the first Metropolis hard fork, includes some changes (see EIP 198, EIP 212 (197) and EIP 213 (196) and compare with ELI5: Byzantium Changes) in the form of pre-compiled contracts that allow for operations used in zk-SNARK verification, such as, e.g., elliptic curve addition and pairing. I am furthermore aware of ZoKrates, a stand-alone program that is able to compile a program (from what seems to be a limited set of programs) into yet another program which can generate a non-interactive zero-knowledge proof and a Smart Contract that does the on-chain verification. Unfortunately, I wasn't able to find any documentation on it.
I am wondering whether there is anything besides these EIPs and whether the support for zk-SNARK verification is going to stay at that level? Personally, I suspect that because Ethereum Smart Contracts can have arbitrary computations, the quadratic arithmetic programs (QAP) used to conduct zk-SNARKs, in general, differ vastly depending on the application such that a more high-level support is rendered infeasible.