GreatVoyage-v4.0.0
Release 4.0 has implemented the shielded TRC-20 contract, which can hide the source address, destination address, and the token amount for TRC-20 transactions and provide users with better privacy.  The shielded TRC-20 contract has three core functions: mint, transfer and burn. mint is used to transform the public TRC-20 token to shielded token; transfer is used for shielded token transactions; burn is used to transform the shielded token back to the public TRC-20 token. To support the shielded TRC-20 contract,  four new zero-knowledge instructions (verifyMintProof, verifyTransferProof, verifyBurnProof and pedersenHash) are add in TVM, which make it convenient to provide privacy for arbitrary TRC-20 contract.
Notices
Forced upgrade
New features
- 
Add 4 new instructions ( verifyMintProof,verifyTransferProof,verifyBurnProofandpedersenHash) in TVM to support TRC20 shielded transactions based on zk-SNARKs (#3172).- verifyMintProof: used to validate the zero-knowledge proof for- mintfunction.
- verifyTransferProof: used to validate the zero-knowledge proof for- transferfunction.
- verifyBurnProof: used to validate the zero-knowledge proof for- burnfunction.
- pedersenHash: used to compute the Pedersen hash.
 
- 
Update the initial parameters of zk-SNARKs scheme generated by the MPC Torch (#3210). 
- 
Add the APIs to support shielded TRC-20 contract transaction (#3172). 1. Create shielded contract parameters rpc CreateShieldedContractParameters (PrivateShieldedTRC20Parameters) returns (ShieldedTRC20Parameters) {}2. Create shielded contract parameters without ask rpc CreateShieldedContractParametersWithoutAsk (PrivateShieldedTRC20ParametersWithoutAsk) returns (ShieldedTRC20Parameters) {}3. Scan shielded TRC20 notes by ivk rpc ScanShieldedTRC20NotesByIvk (IvkDecryptTRC20Parameters) returns (DecryptNotesTRC20) {}4. Scan shielded TRC20 notes by ovk rpc ScanShieldedTRC20NotesByOvk (OvkDecryptTRC20Parameters) returns (DecryptNotesTRC20) {}5. Check if the shielded TRC20 note is spent rpc IsShieldedTRC20ContractNoteSpent (NfTRC20Parameters) returns (NullifierResult) {}6. Get the trigger input for the shielded TRC20 contract rpc GetTriggerInputForShieldedTRC20Contract (ShieldedTRC20TriggerContractParameters) returns (BytesMessage) {}
- 
Support the ovkto scan the transparent output ofburntransaction (#3203).
- 
Support the burntransaction with zero or one shielded output (#3224).
- 
Add data field in transaction log trigger class for future memo note (#3200). 
The following TIPs are implemented in this release:
- TIP-135: Shielded TRC-20 contract standards, guarantee the privacy of the shielded transfer of TRC-20 tokens.
- TIP-137: Implements three zero-knowledge proof instructions in TVM to support the shielded TRC-20 contract (#3172).
- TIP-138: Implements the Pedersen hash computation instruction in TVM to support the shielded TRC-20 contract (#3172).
Changes
- Check if null before getInstance when get transaction info from DB to fix exception of getTransactioninfoByBlkNum(#3165).
Updated almost 5 years ago
