Zcash is a decentralized and open-source cryptocurrency that offers privacy and selective transparency of transactions. Zcash payments are published on a public blockchain, but the sender, recipient, and amount of a transaction remain private.
Zcash is based on peer-reviewed cryptographic research, and built by a security-specialized engineering team on an open source platform based on Bitcoin Core's battle-tested codebase. Our improvement over <a href="https://www.coingecko.com/en/coins/bitcoin">Bitcoin</a> is the addition of privacy. Zcash uses advanced cryptographic techniques, namely zero-knowledge proofs, to guarantee the validity of transactions without revealing additional information about them.
How Zcash works
Zcash encrypts the contents of shielded transactions. Since the payment information is encrypted, the protocol uses a novel cryptographic method to verify their validity.
Zcash uses a zero-knowledge proof construction called a zk-SNARK, developed by our team of experienced cryptographers based on recent breakthroughs in cryptography. These constructions allow the network to maintain a secure ledger of balances without disclosing the parties or amounts involved. Instead of publicly demonstrating spend-authority and transaction values, the transaction metadata is encrypted and zk-SNARKs are used to prove that nobody is cheating or stealing.
Zcash also enables users to send public payments which work similarly to Bitcoin. With the support for both shielded and transparent addresses, users can choose to send Zcash privately or publicly. Zcash payments sent from a shielded address to a transparent address reveal the received balance, while payments from a transparent address to a shielded address protect the receiving value.
Check out <a href="https://www.coinbureau.com/education/what-is-zcash/">CoinBureau</a> for guide on What is ZCash.
BEP20Zcash.allowance(address,address).owner (#419) shadows:
- Ownable.owner() (#297-299) (function)
BEP20Zcash._approve(address,address,uint256).owner (#582) shadows:
- Ownable.owner() (#297-299) (function)
Rename the local variables that shadow another component.
Additional information: link
BEP20Zcash._burnFrom(address,uint256) (#596-599) is never used and should be removed
Context._msgData() (#113-116) is never used and should be removed
SafeMath.div(uint256,uint256) (#212-214) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#227-234) is never used and should be removed
SafeMath.mod(uint256,uint256) (#247-249) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#262-265) is never used and should be removed
SafeMath.mul(uint256,uint256) (#187-199) is never used and should be removed
Remove unused functions.
Additional information: link
Redundant expression "this (#114)" inContext (#104-117)
Remove redundant statements if they congest code but offer no value.
Additional information: link
BEP20Zcash.constructor() (#351-359) uses literals with too many digits:
- _totalSupply = 100000 * 10 ** 18 (#355)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#316-319)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#325-327)
increaseAllowance(address,uint256) should be declared external:
- BEP20Zcash.increaseAllowance(address,uint256) (#465-468)
decreaseAllowance(address,uint256) should be declared external:
- BEP20Zcash.decreaseAllowance(address,uint256) (#484-487)
mint(uint256) should be declared external:
- BEP20Zcash.mint(uint256) (#497-500)
burn(uint256) should be declared external:
- BEP20Zcash.burn(uint256) (#505-508)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find audit link on the website
Unable to find whitepaper link on the website
Unable to find Twitter link on the website
Unable to find Telegram account
Unable to find Youtube account