Releases: tronprotocol/java-tron
Odyssey-v3.6.0
Notice
All the node must upgrade to this version.
Release note
New Features
- #2070 Add
create2instruction for TVM, which returns a predictable contract address before deploy. TIP #26 - #2069 Add bitwise shifting instructions for TVM to reduce energy consumption of shift. TIP #29
- #2075 Add
extcodehashinstruction for TVM which returns the keccak256 hash of a contract's code. TIP#30 - #2125 Add
triggerConstantContractAPI to support contracts which have no ABI. TIP #31 - #2125 Add
clearABIAPI including http and grpc, contract's deployer can use this to clear his contract's existed ABI. TIP #32 - #2093 Add built-in message queue for event subscribe. TIP #28
- #2047 Add protocol data check
- #2154 Add the
Permission_idfield when returning the created transaction, compatible with multi-signature transactions
Changes
- #2142 Support event subscription without abi
- #2173 Optimize erengy deduction strategy in TVM when
transfer、sendortransferTokenfailed - #2141 Optimize the HTTP interface by adding the visible parameter to support the convenience type of addresses and strings, and add the AccountID related interface
- #2182 Optimize http/grpc broadcast transaction interface
- #2155 Optimize the process of block broadcasting
- #2219 Fix the problem that the http interface parses the long type value for a long time.
Notices
-
Add built-in message queue config. See here
- use
event.subscribe.native.useNativeQueueto control whether using built-in message queue . If true, use native message queue, else use event plugin. - use
event.subscribe.native.bindportto control bind port. - use
event.subscribe.native.sendqueuelengthto control max length of send queue.
- use
-
For smart contact without ABI (after clear ABI or deploy without ABI)
- If you want to call the constant method, you must use the
triggerConstantContractinterface instead oftriggerContract. More details: TIP #31 - If you need event subscription, you need to subscribe to and upload ABI using version 3.6+. More details: tron-eventquery.md
- After clearABI, it is not possible to re-add ABI to the same contract address.
- If you want to call the constant method, you must use the
-
For create2 instruction
- If you want to use
create2to genertate a new address . More details: TIP #31 - After suicide, the storage of
create2addresses will be reset. - If deployed on a normal address (created by transfer trx), the address will be modified to the contract address. The resources (bandwidth and energy) previously delegated to this address are cleared, and do not affect the unfreeze operation of the client.
- If you want to use
Odyssey-v3.5.1
Changes
-
(#2045)Refactor of sync & adv module, increase code readability and system scalability.
-
(#2028)RocksDB will be an option for the storage engine in the java-tron. The detail of the Rocksdb is described in this document. (https://github.com/tronprotocol/documentation/blob/master/TRX_CN/Tron-doc.md#471-rocksdb)
-
You can use RocksDB as storage engine when you want to back up the database without the node application stopped, you can check the usage of Rocksdb engine in the document. It has more tuning parameters for faster-synchronizing block and takes up less disk space when compared with the LevelDB.
-
The database needs to be reset if the DB engine has been changed, but a tool can be used for converting Leveldb data to Rocksdb data, the instructions about this tool can be found here: https://github.com/tronprotocol/documentation/blob/master/TRX_CN/Tron-doc.md#4714-leveldb-database-convert-to-rocksdb-database-english-verison
-
Add fast-forward feature and the miss rate of the block can be decreased by setting the forward node.
Notices
- Non-mandatory upgrade
Odyssey-v3.5.0.1
Changes
- (#2023) Fixed an issue: in a specific case, the CPU single core usage rate reached 90%, but had no effect on the overall performance.
Odyssey-v3.5
New Features
(#1903) Multiple signatures support and different permissions support in accout
- An account can set different permissions.
- Each permission has a threshold and can be managed by different accounts. Each account in a permission has a weight.
- Each transaction created by an account should be authorized by a permisson in the account.
- Transaction should be signed by the accounts in the permisson. The signatures are valid if the sum of weight of all signed accouts is equal or greater than the threshold of the permission.
- The transaction will not be saved into block chain until the signatures become valid.
(#1876 )The upper limit of energy can be adjusted automatically by the current state of the network
(#1905) Develop a new mechanism to listen event message from a queue
Changes
(#1873) Solved the Compatibility Problem between Backup and DUP_WITNESS
(#1907) Optimize duplicate check of transaction, Increase processing speed
(#1893) Transfertoken function security improvement
(#1893) ADDRESS and ORIGIN instruction security improvements
(#1929) Improve the partial UNKNOWN execution results of the smart contract to a more detailed error type
Log optimization
- (#1865) log is printed in modules
- (#1872) log configuration file (logbak. xml) can be specified by parameters --log-config
Http interface
Odyssey-v3.2.5
Changes
Add two convenient transfer interfaces, including EasyTransferAsset and EasyTransferAssetByPrivate .
Notices
This version is only for nodes which need use the new interfaces. Fullnode does not need to be upgraded.
Odyssey-v3.2.4
Changes
(#1918) Optimize Cache to improve node performance.
Notices
If block synchronization is slow, you can use this version.
Odyssey-v3.2.3
Odyssey-v3.2.2
Notice
All the node must upgrade to this version
Changes
- These two services are available only when storage.db.version=2 (See here)
- The HTTP service port is node.http.solidityPort, the default value is 8091. The RPC service port is node.rpc.solidityPort; the default value is 50061. You can modify the port in the configuration file. Http port see here, RPC port see here
- (#1811) Add a switch to save the internal transaction. The switch status can be configured via the configuration item vm.saveInternalTx, the default is false.See here
- (#1818) Add more unit test about the proposal AllowSameTokenName
- (#1803) Perfecting transaction broadcasting interface
- If there is no connection, return code: NO_CONNECTION
- If the effective connection is not enough, return code: NOT_ENOUGH_EFFECTIVE_CONNECTION
- If NO_CONNECTION or NOT_ENOUGH_EFFECTIVE_CONNECTION returns, you can rebroadcast the transaction after a while
- (#1803) Solving the problem of solidity node not synchronizing blocks
(#1807) Add a switch to control database write strategy; the default setting is false. See here
- Synchronous writing is "true", else Asynchronous writing is "false".
- Asynchronous writing significantly improves the performance of the FullNode and SolidityNode sync block.
- If asynchronous, the write is flushed from the operating system buffer cache. If the machine crashes, some recent writes may be lost. Note that if it is just the process that crashes (i.e., the machine does not reboot), no writes are lost;
- If synchronous, writes are flushed into levelDB directly. No writes are lost when the machine crashes, but it is slow.
- (#1807) Vastly improved processing block speed, especially when machine performance is poor.
- (#1807) Compress transaction space, reducing database space by 25%.
- (#1807) Add a switch to put the transaction result into the transactionHistory database; the default setting is on. See here
- Turning off the switch saves a lot of hard disk space;
- You can turn off the switch if you don't need the interface getransactioninfobyid.
Odyssey-v3.2.1.2
Fixes
- Fixed an issue where Soliditinode could not be synced(issue: #1828)
Notices
This version is only for Soliditynode which cannot synchronize blocks. Fullnode does not need to be upgraded
Odyssey-v3.2.1
Changes
(#1793) SolidityNode can use the fullnode database:
- Stop Fullnode and Soliditynode
- delete output-directory on the Soliditynode
- Copy the Fullnode database(output-directory) to the SolidityNode directory
- Start Fullnode and SolidityNode
(#1796) Add the minimum effective connections configuration for broadcasting transactions,you need to upgrade if you want to broadcast without connections. Transactions can only be broadcast if the number of effective connections is reached in the config file (node.rpc.minEffectiveConnection = 1).
Notices
This is the only difference from Odyssey-v3.2, you don't need to upgrade this version if you don't use this feature.