diff --git a/docs/architecture/network.md b/docs/architecture/network.md deleted file mode 100644 index f214caf6..00000000 --- a/docs/architecture/network.md +++ /dev/null @@ -1,140 +0,0 @@ -# Tron Network Instructure - -Tron network uses Peer-to-Peer(P2P) network instructure, all nodes status equal. There are three types of node: SuperNode, FullNode, SolidityNode. SuperNode produces blocks, FullNode synchronizes blocks and broadcasts transactions, SolidityNode synchronizes solidified blocks. Any device that deploy the java-tron code can join Tron network as a node. - -![image](https://raw.githubusercontent.com/tronprotocol/documentation-en/master/images/network.png) - -## SuperNode - -Super Representative(abbr: SR) is the block producer in TRON network, there are 27 SRs. They verify the transactions and write the transactions into the blocks in turn. The super Representatives' information is public to everyone in Tron network. The best way to browse is using [Tronscan](https://tronscan.org/#/sr/representatives). - -Recommended Hardware Configuration: - -```text -minimum requirement: -CPU: 16 cores, RAM: 32G, Bandwidth: 100M, Disk: 1T -Recommended requirement: -CPU: > 64 cores RAM: > 64G, Bandwidth: > 500M, Disk: > 2T -``` - -## FullNode - -FullNode has the complete block chain data, can update data in real time. It can broadcast the transactions and provide api service. - -Recommended Hardware Configuration: - -```text -minimum requirement: -CPU: 16 cores, RAM: 32G, Bandwidth: 100M, Disk: 1T -Recommended requirement: -CPU: > 32 cores RAM: > 48G, Bandwidth: > 500M, Disk: > 2T -``` - -## SolidityNode - -SolidityNode only synchronize solidified blocks data from the fullNode it specifies, It also provide api service. - -> NOTE: SolidityNode is deprecated. Now a FullNode supports all RPCs of a SolidityNode. -> New developers should deploy FullNode only. - -Recommended Hardware Configuration: - -```text -minimum requirement: -CPU: 16 cores, RAM: 32G, Bandwidth: 100M, Disk: 1T -Recommended requirement: -CPU: > 32 cores RAM: > 48G, Bandwidth: > 500M, Disk: > 2T -``` - -## MainNet, TestNet and PrivateNet - -MainNet, TestNet, PrivateNet all use the same code, only the node start configuration varies. - -### MainNet - -[MainNet configuration: main_net_config.conf](https://github.com/tronprotocol/tron-deployment/blob/master/main_net_config.conf) - -### TestNet - -[TestNet configuration: test_net_config.conf](https://github.com/tronprotocol/tron-deployment/blob/master/test_net_config.conf) - -### PrivateNet - -#### Preconditions - -- at least two accounts [generate an account](https://tronscan.org/#/wallet/new) -- at least one SuperNode to produce blocks -- deploy serval FullNodes to synchronize blocks and broadcast transactions -- SuperNode and FullNode comprise the private network - -#### Deploy the SuperNode - -1. download private_net_config.conf - - ```console - > wget https://raw.githubusercontent.com/tronprotocol/tron-deployment/master/private_net_config.conf - ``` - -2. add your private key in `localwitness` -3. set `genesis.block.witnesses` as the private key's corresponding address -4. set `p2p.version`, any positive integer except `11111` -5. set for first SR `needSyncCheck = false`, others can be set true -6. set `node.discovery.enable = true` -7. run the following command - - ```text - > nohup java -Xmx6g -XX:+HeapDumpOnOutOfMemoryError -jar FullNode.jar -c private_net_config.conf /dev/null & - - command line parameters introduction: - --witness: start witness function, i.e.: --witness YOUR_PRIVATE_KEY_IN_HEX - --log-config: specify the log configuration file path, i.e.: --log-config logback.xml - -c: specify the configuration file path, i.e.: -c config.conf - ``` - -The usage of the log file: - -You can change the level of the module to control the log output. The default level of each module is INFO, for example: only print the message with the level higher than warn: - -```xml - -``` - -The parameters in configuration file that need to modify: - -localwitness: -> ![image](https://raw.githubusercontent.com/tronprotocol/documentation-en/master/images/localwitness.jpg) - -witnesses: -> ![image](https://raw.githubusercontent.com/tronprotocol/documentation-en/master/images/witness.png) - -version: -> ![image](https://raw.githubusercontent.com/tronprotocol/documentation-en/master/images/p2p_version.png) - -enable: -> ![image](https://raw.githubusercontent.com/tronprotocol/documentation-en/master/images/discovery_enable.png) - -#### Deploy the FullNode - -Same as above except for: - -1. set `seed.node.ip.list` to SR's ip and port -2. set `needSyncCheck` true -3. modify `listen.port`, `http.port` and `rpc.port` if SuperNode and FullNode are deployed on the same server. -4. do not need a private key in `localwitness` - -The parameters in configuration file that need to modify: - -ip.list: -> ![image](https://raw.githubusercontent.com/tronprotocol/documentation-en/master/images/ip_list.png) - -p2p.version: -> ![image](https://raw.githubusercontent.com/tronprotocol/documentation-en/master/images/p2p_version.png) - -genesis.block: -> ![image](https://raw.githubusercontent.com/tronprotocol/documentation-en/master/images/genesis_block.png) - -needSyncCheck: -> ![image](https://raw.githubusercontent.com/tronprotocol/documentation-en/master/images/need_sync_check.png) - -node.discovery.enable: -> ![image](https://raw.githubusercontent.com/tronprotocol/documentation-en/master/images/discovery_enable.png) diff --git a/docs/developers/official-public-nodes.md b/docs/developers/official-public-nodes.md deleted file mode 100644 index a2cdbea8..00000000 --- a/docs/developers/official-public-nodes.md +++ /dev/null @@ -1,58 +0,0 @@ -# Official Public Nodes - -## FullNodes - -* gRPC port: 50051/tcp -* P2P network port: 18888/udp, 18888/tcp -* HTTP API port : 8090/tcp - -```text -3.225.171.164 -52.53.189.99 -18.196.99.16 -34.253.187.192 -18.133.82.227 -35.180.51.163 -54.252.224.209 -18.231.27.82 -52.15.93.92 -34.220.77.106 -15.207.144.3 -13.124.62.58 -15.222.19.181 -18.209.42.127 -3.218.137.187 -34.237.210.82 -13.228.119.63 -18.139.193.235 -18.141.79.38 -18.139.248.26 -``` - -## SolidityNodes(deprecated) - -* gRPC port: 50051/tcp -* HTTP API port : 8091/tcp - -```text -3.225.171.164 -52.53.189.99 -18.196.99.16 -34.253.187.192 -18.133.82.227 -35.180.51.163 -54.252.224.209 -18.231.27.82 -52.15.93.92 -34.220.77.106 -15.207.144.3 -13.124.62.58 -15.222.19.181 -18.209.42.127 -3.218.137.187 -34.237.210.82 -13.228.119.63 -18.139.193.235 -18.141.79.38 -18.139.248.26 -``` diff --git a/docs/releases/history.md b/docs/releases/history.md index 18c5fdb0..18b990c8 100644 --- a/docs/releases/history.md +++ b/docs/releases/history.md @@ -2,6 +2,7 @@ | Code Name |Version | Released | Incl TIPs | Release Note | Specs | | -------- | -------- | -------- | -------- | -------- | -------- | +| Cleobulus | GreatVoyage-v4.7.5 | 2024-5-30 | [TIP-653](https://github.com/tronprotocol/tips/blob/master/tip-653.md) | [Release Note](https://github.com/tronprotocol/java-tron/releases/tag/GreatVoyage-v4.7.5) | [Specs](#greatvoyage-v475cleobulus) | | Bias | GreatVoyage-v4.7.4 | 2024-3-15 | [TIP-635](https://github.com/tronprotocol/tips/blob/master/tip-635.md)
[TIP-621](https://github.com/tronprotocol/tips/blob/master/tip-621.md) | [Release Note](https://github.com/tronprotocol/java-tron/releases/tag/GreatVoyage-v4.7.4) | [Specs](#greatvoyage-v474bias) | | Solon | GreatVoyage-v4.7.3.1 | 2024-1-12 | N/A | [Release Note](https://github.com/tronprotocol/java-tron/releases/tag/GreatVoyage-v4.7.3.1) | [Specs](#greatvoyage-v4731solon) | | Chilon | GreatVoyage-v4.7.3 | 2023-10-25 | [TIP-586](https://github.com/tronprotocol/tips/blob/master/tip-586.md)
[TIP-592](https://github.com/tronprotocol/tips/blob/master/tip-592.md) | [Release Note](https://github.com/tronprotocol/java-tron/releases/tag/GreatVoyage-v4.7.3) | [Specs](#greatvoyage-v473chilon) | @@ -74,6 +75,61 @@ | N/A | Odyssey-v1.0.3 | 2018-4-5 | N/A | [Release Note](https://github.com/tronprotocol/java-tron/releases/tag/Odyssey-v1.0.3) | N/A | | N/A | Exodus-v1.0 | 2017-12-28 | N/A | [Release Note](https://github.com/tronprotocol/java-tron/releases/tag/Exodus-v1.0) | N/A | +## GreatVoyage-v4.7.5(Cleobulus) + +The Cleobulus version introduces multiple important optimizations and updates, including a new proposal to adjust the energy cost of some opcodes in TVM to make the energy cost more reasonable. The enhanced transaction and block verification logic improves the system's fault tolerance. The optimized synchronization logic between threads improves data consistency. You may find the details below. + + +### Core + + +#### 1. Optimize block synchronization and production logic +The Cleobulus version optimizes the block production logic. After obtaining the block production lock, the node will check whether it meets the conditions for producing blocks to avoid inconsistent state before and after obtaining the block production lock, thereby improving the stability of the TRON network. + +Additionally, Cleobulus enhances the block verification logic. All nodes add checks on block size and block time. + + +Source Code: [https://github.com/tronprotocol/java-tron/pull/5833](https://github.com/tronprotocol/java-tron/pull/5833) [https://github.com/tronprotocol/java-tron/pull/5830](https://github.com/tronprotocol/java-tron/pull/5830) +#### 2. Strengthen size check of account creation transactions + +The Cleobulus version optimizes the account creation logic, strengthens the size check of account creation transactions, and adds the No.82 TRON network parameter to set the maximum number of bytes allowed for account creation transactions. The parameter ranges from 500 to 10000 and the default value is 1000. The value can be modified by initiating a proposal for a vote. + + +Source Code: [https://github.com/tronprotocol/java-tron/pull/5835](https://github.com/tronprotocol/java-tron/pull/5835) + + + + +### TVM +#### 1. Adjust energy cost for some opcodes in TVM +Cleobulus adjusts the energy cost of the `VOTEWITNESS` and `SUICIDE` opcodes to make the energy consumption more reasonable based on the resources and time required for the actual execution of each opcode. + +This optimization is the No. 81 parameter of the TRON network. After Cleobulus is deployed, it is disabled by default and can be enabled through governance voting. + + +TIP: [https://github.com/tronprotocol/tips/blob/master/tip-653.md](https://github.com/tronprotocol/tips/blob/master/tip-653.md) +Source Code: [https://github.com/tronprotocol/java-tron/pull/5837](https://github.com/tronprotocol/java-tron/pull/5837) + +### Other Changes +#### 1. Optimize synchronization logic among threads +The Cleobulus version optimizes the block request logic and no longer reads `fetchBlockInfo` data when printing logs, improving the stability of concurrent access to `fetchBlockInfo` object by multiple threads. + +Additionally, Cleobulus optimizes the synchronization block processing logic. Regardless of whether the `syncBlockToFetch` queue is empty, the node can process block data normally, improving the efficiency of block synchronization. + +Source Code: [https://github.com/tronprotocol/java-tron/pull/5831](https://github.com/tronprotocol/java-tron/pull/5831) +[https://github.com/tronprotocol/java-tron/pull/5832](https://github.com/tronprotocol/java-tron/pull/5832) + +#### 2. Remove redundant code +The Cleobulus version removes redundant code in the block processing logic, improving the readability and maintainability of the code. + +Source Code: [https://github.com/tronprotocol/java-tron/pull/5834](https://github.com/tronprotocol/java-tron/pull/5834) + +--- + +*Seek virtue and eschew vice.* +

---Cleobulus

+ + ## GreatVoyage-v4.7.4(Bias) The Bias version introduces several important optimizations and updates, including a new proposal to optimize the performance of voting reward withdrawal; the refactored Gradle dependency reduces the complexity of core protocol development; support for gRPC reflection services and optimized logging system brings a more friendly and convenient development experience to users. Please find the details below.