For the interfece between Anoma/backend/juvix see:
https://hackmd.io/Hu6SEI_rS_mbLbR-fEF_7g?view
## Shielded Anoma v1 timeline
Things to implement, with :
* shielded commitment to the resource. Currently there is the transparent commitment implemented, which is the resource itself.
* value balance check.
* compliance circuit.
* In linear resource consumption model, proofs of membership to the resource commitment tree and nullifier set.
* Resource Logic proof. Currently the resource logic proof is the resource logic itself.
List of cryptographic primitives we need:
* Arithmetic curve operations
* Pedersen hash
* Hash to curve point (via Pedersen)
* Poseidon hash
## zkVM scenarios
For consistency over this document let's call:
_High-level language_: what Juvix compiles to
_Low level language_: the language we use to write the compliance circuit
### Cairo approaches
#### Full Cairo (lambdaclass)
_High-level language_ : CairoZero
_low-level language_: CairoZero
Pros:
* Existing community of developer we can leverage
* Easier to write the cryptographic primitives
Cons:
* Not efficient implementation of the compliance circuit
* Back-end proving systems has to support Cairo (No flexibility)
implementation time: 2-3 months
#### CairoZero-AIR hybrid
_High-level language_ : Cairo (Zero or 1)
_low-level language_: AIR
Pros:
* Existing community of developer we can leverage
* Efficient implementation of the compiler circuit
* Easier to switch between STARK-based proving system (Flexibility)
Cons:
* Harder to write the compliance circuit (no experience of writing AIR). Really hard if we do not an implementation of our primitives.
implementation time: 6-8 months (might be higher function of what we find already implemented)
### Old compilation stack
_High-level language_: VampIR
_Low-level language_: Halo2
pros:
* Minimal work for the standpoint of cryptography engineering (reuse work done on Taiga)
cons:
* the Juvix-VampIR zkVM is not competitive
implementation time: 1-2 months
### EVM compatibility (Scroll)
_High-level language_: Solidity
_low-level language_: Halo2
pros:
* Massive community of developer we can leverage
cons:
* Even if the low-level language is Halo2, it is done using different curves and commitment scheme (KZG instead of IPA)
implementation time: 6-8 months
----
### Considerations on function privacy
To achieve function privacy we need to have a back-end system that implements recursion. We can implement recursion both on Halo2 and on a STARK prover, if the source code is open source. To implement recursion on a STARK prover might be easier.