Using Zero-Knowledge Proofs to Construct Byzantine Fault Tolerant Conflict-Free Replicated Data Types