```\nfunction submitSignatureFraud(\n    uint8 \_v,\n    bytes32 \_r,\n    bytes32 \_s,\n    bytes32 \_signedDigest,\n    bytes calldata \_preimage\n) external returns (bool \_isFraud) {\n    require(publicKey.length != 0, "Public key was not set yet");\n\n    bytes32 calculatedDigest = sha256(\_preimage);\n    require(\n        \_signedDigest == calculatedDigest,\n        "Signed digest does not match double sha256 hash of the preimage"\n    );\n\n    bool isSignatureValid = publicKeyToAddress(publicKey) ==\n        ecrecover(\_signedDigest, \_v, \_r, \_s);\n\n    // Check if the signature is valid but was not requested.\n    require(\n        isSignatureValid && !digests[\_signedDigest],\n        "Signature is not fraudulent"\n    );\n\n    return true;\n}\n```\n