Improves the java-Tron upgrade mechanism and achieves more efficient decentralized governance (#3314).
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 added in TVM, which make it convenient to provide privacy for arbitrary TRC-20 contract.
Add 4 new instructions (verifyMintProof, verifyTransferProof, verifyBurnProof and pedersenHash) in TVM to support TRC20 shielded transactions based on zk-SNARKs (#3172).
verifyMintProof: used to validate the zero-knowledge proof for mint function.
verifyTransferProof: used to validate the zero-knowledge proof for transfer function.
verifyBurnProof: used to validate the zero-knowledge proof for burn function.
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).
Support the ovk to scan the transparent output of burn transaction (#3203).
Support the burn transaction 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).
Check if null before getInstance when get transaction info from DB to fix exception of getTransactioninfoByBlkNum (#3165).
(#2533) Several independent modules are separated, including consensus module, crypto module, chainbase module, framework module, protocol module and actuator module, which makes decoupled code easier to be extended and enable developers to implement custom logic freely.
(#2947) Extend solidity event subscription trigger, user can get the event which is solidified.
(#2958) Add gettransactioninfobyblocknumAPI including HTTP and GRPC, user can get the list of transaction information by block number.
(#2352) Add broadcasthex API for HTTP, the user can broadcast the hex of the transaction.
#2407Fix the issue of misreporting NullPointer exception on the occasion of triggerConstantContract transaction timeout.
#2457Fix the bug that it can not load the localWitnessAccountAddress configured by the "keystore" config item if the SR modified the witness permission.
#2458Fix the bug that resources for delegate can not be unfrozen after the contract account suicided and became a normal account.
#2462Add triggerConstantContract feature for Solidity Node and FullNode Solidity interface.
#2463Add proposals for modifying parameters of energy dynamic adjustment. The way to add up energy consumption is changed from adding up the freeze energy consumption to adding up all the energy consumption.
#2485Fix the bug about there is no data for return of some solidity APIs.