zkFDL: An efficient and privacy-preserving decentralized federated learning with zero knowledge proof