Smart contract and zero-knowledge programming languages