Hi,
In my understanding, to verify if a joinsplit transfer is valid, you just need to check if the nullifiers are distinct and the anchor in the JS description is the root of a valid note commitment tree. These information can be obtained by calling the following functions in coins.h
:
bool CCoinsView::GetSproutAnchorAt(const uint256&, SproutMerkleTree&);
bool CCoinsView::GetNullifier(const uint256&, ShieldType);
Therefore, my question is why there are so many other methods in class CCoinsViewCache
besides the standard CCoinsView
methods.