JointSplit vs. Spend and Output Transfers

When comparing Spend and Output Transfers it is stated in the protocol that the advantage of the latter approach over the former is the following: “This approach allows all of the zk-SNARK statements to be independent of each other, potentially increasing opportunities for precomputation”

My question is what exactly are we precomputing?

1 Like

(Sorry I didn’t see this earlier.)

That sentence is referring to precomputing some or all of the Spend and Output proofs.

In the case of Spend proofs this requires knowledge of the anchor. Currently, zcashd uses an anchor for the most recent block, but that behaviour is known to be undesirable and broken (the main reason is that if there block is orphaned, the transaction will become invalid). If zcashd changes to use anchors that are, say, 10 blocks back, then there will be more time available for precomputing proofs. I’m not sure whether wallets will actually do that; whether it is worthwhile depends how often transactions are being sent.

1 Like