Note that this does not mean that the nullifier was created atblock_header, only that it was present in the
tree once all transactions from block_header were executed.
This function performs a full merkle tree inclusion proof, which is in the order of 4k gates.
If you don't need to assert existence at a specific past block, consider using
PrivateContext::assert_nullifier_exists instead, which
is typically cheaper. Note that there are semantic differences though, as that function also considers pending
nullifiers.
Asserts that a nullifier existed by the time a block was mined.
This function takes a siloed nullifier, i.e. the value that is actually stored in the tree. Use
crate::protocol::hash::compute_siloed_nullifierto convert an inner nullifier (whatPrivateContext::push_nullifiertakes) into a siloed one.Note that this does not mean that the nullifier was created at
block_header, only that it was present in the tree once all transactions fromblock_headerwere executed.In order to prove that a nullifier did not exist by
block_header, useassert_nullifier_did_not_exist_by.Cost
This function performs a full merkle tree inclusion proof, which is in the order of 4k gates.
If you don't need to assert existence at a specific past block, consider using
PrivateContext::assert_nullifier_existsinstead, which is typically cheaper. Note that there are semantic differences though, as that function also considers pending nullifiers.