Here I explore the alternative path for transaction privacy. The privacy is weaker than the one using zk-SNARK with commitments and nullifiers, but the ledger transitions proofs may have better performance and it's worth exploring.
The idea is to use the Lelantus Spark private transaction scheme (it's also used in Zcoin, known as Firo) over the Grumpkin elliptic curve using Poseidon2 hash function (over the scalar field of BN254) to obfuscate the output consumed.
Let's focus on verification complexity for now in order to assess how a zk-rollup built on Lelantus would perform.
An address key in Lelantus is a tuple $(addr_{in}, addr_{full}, addr_{sk})$; they are computed with $F$, $G$ and $H$ independent generators of Grumpkin as:
Public addresses can be derived from these elements and are of form $(d,Q_1,Q_2)$.
Each coin is represented by:
Let's suppose we don't have mint transactions in the zk-rollup for simplicity. Each time the verifier receives an elliptic curve point, they have to check that the point is indeed on the curve.
Then the verification is reduced to: