GreatVoyage-4.2.2(Lucretius)

核心协议

1、优化区块处理。

在GreatVoyage-v4.2.2(Lucretius)之前的版本中,区块处理过程中为了获取witness列表,执行了多次数据库查询和反序列化操作,这部分操作占用了近1/3的区块处理时间。

GreatVoyage-v4.2.2(Lucretius)版本简化了witness的查询,区块处理过程只需一次查询即可获取witness列表,经过测试,本次优化大幅提升了区块处理性能。

2、优化数据查询。

在GreatVoyage-v4.2.2(Lucretius)之前的版本中,多个HTTP或RPC对链上数据的查询是互斥的,如果有查询请求正在处理,新的查询请求会等待之前的请求完成以后才会被处理。

实际上,查询数据的方法中并没有使用到共享数据, 所以并不需要加锁操作。本次优化去除了查询过程中不必要的同步锁,大幅提高了节点内部查询、HTTP和RPC的查询请求性能。

3、优化智能合约ABI的存储。

在GreatVoyage-v4.2.2(Lucretius)之前的版本中,一个智能合约的ABI数据和这个智能合约的其他数据是一起存储在合约数据库中, TVM的一些高频指令(SLOAD,SSTORE等等)会从合约数据库读取一个智能合约的所有数据,然而合约的执行并不会使用到这些ABI数据,所以频繁的读取会降低这些指令的执行性能。

GreatVoyage-v4.2.2(Lucretius)版本将智能合约的ABI数据从合约数据库中转存到一个专门的ABI数据库中,合约执行过程中将不再读取ABI数据,从而大幅提高TVM的执行性能。

其他变更

1、优化系统合约BatchValidateSign的初始化流程。

GreatVoyage-v4.2.2(Lucretius)版本引入了3个重要的优化更新,区块处理的优化有效得提高区块的执行速度,从而大幅提高TRON网络的性能,高效的HTTP/RPC查询和更高性能TVM将为TRON DAPP用户带来更好的体验,进一步繁荣波场生态

--- Truths kindle light for truths.

--- Lucretius

DBReqair.jar使用指南

适用范围

此工具仅适用于java-tron版本从GreatVoyage-v4.2.2(Lucretius)或其他更高版本降级到GreatVoyage-v4.2.1(Origen)或者GreatVoyage-v4.2.0(Plato)的用户。

如果用户满足上述条件,则需要执行DBReqair.jar工具修复数据库,才能正常启动FullNode.jar。

工具链接:

https://github.com/tronprotocol/tools/releases/tag/v1.0.0

执行步骤:

  1. 将 DBRepair.jar、repair.sh 置于 FullNode.jar 同级目录下
  2. 进入到 FullNode.jar 的目录,执行 repair.sh 文件:
sh ./repair.sh
  1. 打开 logs/tron.log 日志, 等待日志输出 "Repairment completed!",(DBRepair 执行完毕后,会自动退出)
  2. 至此数据库修复完毕,可以使用最新版本 GreatVoyage-v4.2.2.1(Epictetus)正常启动节点。

注意事项

此工具只需要执行一次。