From 976687199d822cd135f7274963b5719134876e03 Mon Sep 17 00:00:00 2001 From: Leem Date: Thu, 11 Dec 2025 17:17:05 +0800 Subject: [PATCH 1/3] change in v4.8.1 of command line and config --- docs/developers/deployment.md | 510 --------------------- docs/using_javatron/installing_javatron.md | 21 +- docs/using_javatron/private_network.md | 1 - 3 files changed, 20 insertions(+), 512 deletions(-) delete mode 100644 docs/developers/deployment.md diff --git a/docs/developers/deployment.md b/docs/developers/deployment.md deleted file mode 100644 index 0b7740a5..00000000 --- a/docs/developers/deployment.md +++ /dev/null @@ -1,510 +0,0 @@ -# Deployment - -## Premise -Create separate directories for fullnode and soliditynode - -> NOTE: SolidityNode is deprecated. Now a FullNode supports all RPCs of a SolidityNode. -> New developers should deploy FullNode only. - -```text -/deploy/fullnode -/deploy/soliditynode -``` - -Create two folders for fullnode and soliditynode. - -Clone the latest master branch of [https://github.com/tronprotocol/java-tron](https://github.com/tronprotocol/java-tron) and extract it to -```text -/deploy/java-tron -``` - -Make sure you have the proper dependencies. - -* JDK 1.8 (JDK 1.9+ is not supported yet) -* On Linux Ubuntu system (e.g. Ubuntu 16.04.4 LTS), ensure that the machine has [__Oracle JDK 8__](https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04), instead of having __Open JDK 8__ in the system. If you are building the source code by using __Open JDK 8__, you will get [__Build Failed__](https://github.com/tronprotocol/java-tron/issues/337) result. -* Open **UDP** ports for connection to the network -* **MINIMUM** 2 CPU Cores - - -## Deployment Guide - -1. Build the java-tron project -```text -cd /deploy/java-tron -./gradlew build -``` - -2. Copy the FullNode.jar and SolidityNode.jar along with configuration files into the respective directories -```shell -download your needed configuration file from https://github.com/tronprotocol/java-tron/blob/develop/framework/src/main/resources/config.conf. - -config.conf is the configuration for MainNet. To set up a testnet node, please modify the parameters in the configuration file. - -cp build/libs/FullNode.jar ../fullnode - -cp build/libs/SolidityNode.jar ../soliditynode -``` - -3. You can now run your FullNode using the following command -```text -java -jar FullNode.jar -c config.conf // make sure that your config.conf is downloaded from https://github.com/tronprotocol/TronDeployment -``` - -4. Configure the SolidityNode configuration file - -You need to edit `config.conf` to connect to your local FullNode. Change `trustNode` in `node` to local `127.0.0.1:50051`, which is the default rpc port. Set `listen.port` to any number within the range of 1024-65535. Please don't use any ports between 0-1024 since you'll most likely hit conflicts with other system services. Also change `rpc port` to `50052` or something to avoid conflicts. **Please forward the UDP port 18888 for FullNode.** -```text -rpc { - port = 50052 - } -``` - -5. You can now run your SolidityNode using the following command: -```text -java -jar SolidityNode.jar -c config.conf //make sure that your config.conf is downloaded from https://github.com/tronprotocol/TronDeployment -``` - -6. Running a Super Representative Node for mainnet -```text -java -jar FullNode.jar -p your private key --witness -c your config.conf(Example:/data/java-tron/config.conf) -Example: -java -jar FullNode.jar -p 650950B1...295BD812 --witness -c /data/java-tron/config.conf -``` - -This is similar to running a private testnet, except that the IPs in the `config.conf` are officially declared by TRON. - -7. Running a Super Representative Node for private testnet - -You should modify the config.conf: - -- Replace existing entry in genesis.block.witnesses with your address -- Replace existing entry in seed.node ip.list with your ip list -- The first Super Node start, needSyncCheck should be set false -- Set p2pversion to 61 - -```text -cd build/libs -java -jar FullNode.jar -p your private key --witness -c your config.conf (Example:/data/java-tron/config.conf) -Example: -java -jar FullNode.jar -p 650950B1...295BD812 --witness -c /data/java-tron/config.conf -``` - - -## Logging and Network Connection Verification - -Logs for both nodes are located in `/deploy/\*/logs/tron.log`. Use `tail -f /logs/tron.log/` to follow along with the block syncing. - -You should see something similar to this in your logs for block synchronization: - -**FullNode** -```text -12:00:57.658 INFO [pool-7-thread-1] [o.t.c.n.n.NodeImpl](NodeImpl.java:830) Success handle block Num:236610,ID:0000000000039c427569efa27cc2493c1fff243cc1515aa6665c617c45d2e1bf -``` -**SolidityNode** -```text -12:00:40.691 INFO [pool-17-thread-1] [o.t.p.SolidityNode](SolidityNode.java:88) sync solidity block, lastSolidityBlockNum:209671, remoteLastSolidityBlockNum:211823 -``` -## Stop Node Gracefully -Create file stop.sh,use kill -15 to close FullNode.jar(or SolidityNode.jar). -You need to modify pid=`ps -ef |grep FullNode.jar |grep -v grep |awk '{print $2}'` to find the correct pid. -```text -#!/bin/bash -while true; do - pid=`ps -ef |grep FullNode.jar |grep -v grep |awk '{print $2}'` - if [ -n "$pid" ]; then - kill -15 $pid - echo "The java-tron process is exiting, it may take some time, forcing the exit may cause damage to the database, please wait patiently..." - sleep 1 - else - echo "java-tron killed successfully!" - break - fi -done -``` - -## FullNode and SolidityNode Fast Deployment - -Download fast deployment script, run the script according to different types of node. - -

Scope of use

- -This script could be used on Linux/MacOS, but not on Windows. -Just Support FullNode and SolidityNode. - -

Download and run script

- -```shell -wget https://raw.githubusercontent.com/tronprotocol/TronDeployment/master/deploy_tron.sh -O deploy_tron.sh -``` - -

Parameter Illustration

- -```shell -bash deploy_tron.sh --app [FullNode|SolidityNode] --net [mainnet|testnet|privatenet] --db [keep|remove|backup] --heap-size - ---app Optional, Running application. The default node is Fullnode and it could be FullNode or SolidityNode. ---net Optional, Connecting network. The default network is mainnet and it could be mainnet, testnet. ---db Optional, The way of data processing could be keep, remove and backup. Default is keep. If you launch two different networks, like from mainnet to testnet or from testnet to mainnet, you need to delete database. ---trust-node Optional, It only works when deploying SolidityNode. Default is 127.0.0.1:50051. The specified gRPC service of Fullnode, like 127.0.0.1:50051 or 13.125.249.129:50051. ---rpc-port Optional, Port of grpc. Default is 50051. If you deploy SolidityNode and FullNode on the same host,you need to configure different ports. ---commit Optional, commitid of project. ---branch Optional, branch of project. Mainnet default is latest release and Testnet default is master. ---heap-size Optional, jvm option: Xmx. The default heap-size is 0.8 * memory size. ---work_space Optional, default is current directory. -``` - -

Deployment of FullNode on the one host

- -```shell -wget https://raw.githubusercontent.com/tronprotocol/TronDeployment/master/deploy_tron.sh -O deploy_tron.sh -bash deploy_tron.sh -``` - -

Deployment of SolidityNode on the one host

- -```shell -wget https://raw.githubusercontent.com/tronprotocol/TronDeployment/master/deploy_tron.sh -O deploy_tron.sh -# User can self-configure the IP and Port of GRPC service in the trust-node field of SolidityNode. trust-node is the fullnode you just deploy. -bash deploy_tron.sh --app SolidityNode --trust-node -``` - -

Deployment of FullNode and SolidityNode on the same host

- -```shell -# You need to configure different gRPC ports on the same host because gRPC port is available on SolidityNode and FullNodeConfigure and it cannot be set as default value 50051. In this case the default value of rpc port is set as 50041. -wget https://raw.githubusercontent.com/tronprotocol/TronDeployment/master/deploy_tron.sh -O deploy_tron.sh -bash deploy_tron.sh --app FullNode -bash deploy_tron.sh --app SolidityNode --rpc-port 50041 -``` - -## Grpc Gateway Deployment - -

Summary

- -This script helps you download the code from https://github.com/tronprotocol/grpc-gateway and deploy the code on your environment. - -

Pre-requests

- -Please follow the guide on https://github.com/tronprotocol/grpc-gateway -Install Golang, Protoc, and set $GOPATH environment variable according to your requirement. - -

Download and run script

- -```shell -wget https://raw.githubusercontent.com/tronprotocol/TronDeployment/master/deploy_grpc_gateway.sh -O deploy_grpc_gateway.sh -``` - -

Parameter Illustration

- -```shell -bash deploy_grpc_gateway.sh --rpchost [rpc host ip] --rpcport [rpc port number] --httpport [http port number] - ---rpchost The fullnode or soliditynode IP where the grpc service is provided. Default value is "localhost". ---rpcport The fullnode or soliditynode port number grpc service is consuming. Default value is 50051. ---httpport The port intends to provide http service provided by grpc gateway. Default value is 18890. -``` - -

Example

- -Use default configuration: -```shell -bash deploy_grpc_gateway.sh -``` -Use customized configuration: -```shell -bash deploy_grpc_gateway.sh --rpchost 127.0.0.1 --rpcport 50052 --httpport 18891 -``` - -## Event Subscribe plugin Deployment - -This is an implementation of TRON eventsubscribe model. - -* **api** module defines IPluginEventListener, a protocol between java-tron and event plugin. -* **app** module is an example for loading plugin, developers could use it for debugging. -* **kafkaplugin** module is the implementation for kafka, it implements IPluginEventListener, it receives events subscribed from java-tron and relay events to kafka server. -* **mongodbplugin** mongodbplugin module is the implementation for mongodb. - -

Setup/Build

- -1. Clone the repo `git clone https://github.com/tronprotocol/event-plugin.git` -2. Go to eventplugin `cd event-plugin` -3. run `./gradlew build` - -* This will produce one plugin zip, named `plugin-kafka-1.0.0.zip`, located in the `event-plugin/build/plugins/` directory. - - -

Edit **config.conf** of java-tron, add the following fields:

- -``` -event.subscribe = { - path = "" // absolute path of plugin - server = "" // target server address to receive event triggers - dbconfig="" // dbname|username|password - topics = [ - { - triggerName = "block" // block trigger, the value can't be modified - enable = false - topic = "block" // plugin topic, the value could be modified - }, - { - triggerName = "transaction" - enable = false - topic = "transaction" - }, - { - triggerName = "contractevent" - enable = true - topic = "contractevent" - }, - { - triggerName = "contractlog" - enable = true - topic = "contractlog" - } - ] - - filter = { - fromblock = "" // the value could be "", "earliest" or a specified block number as the beginning of the queried range - toblock = "" // the value could be "", "latest" or a specified block number as end of the queried range - contractAddress = [ - "" // contract address you want to subscribe, if it's set to "", you will receive contract logs/events with any contract address. - ] - - contractTopic = [ - "" // contract topic you want to subscribe, if it's set to "", you will receive contract logs/events with any contract topic. - ] - } -} - - -``` - * **path**: is the absolute path of "plugin-kafka-1.0.0.zip" - * **server**: Kafka server address - * **topics**: each event type maps to one Kafka topic, we support four event types subscribing, block, transaction, contractlog and contractevent. - * **dbconfig**: db configuration information for mongodb, if using kafka, delete this one; if using Mongodb, add like that dbname|username|password - * **triggerName**: the trigger type, the value can't be modified. - * **enable**: plugin can receive nothing if the value is false. - * **topic**: the value is the kafka topic to receive events. Make sure it has been created and Kafka process is running - * **filter**: filter condition for process trigger. - **note**: if the server is not 127.0.0.1, pls set some properties in config/server.properties file - remove comment and set listeners=PLAINTEXT://:9092 - remove comment and set advertised.listeners to PLAINTEXT://host_ip:9092 - -

Install Kafka

- -**On Mac**: -``` -brew install kafka -``` - -**On Linux**: -``` -cd /usr/local -wget http://archive.apache.org/dist/kafka/0.10.2.2/kafka_2.10-0.10.2.2.tgz -tar -xzvf kafka_2.10-0.10.2.2.tgz -mv kafka_2.10-0.10.2.2 kafka - -add "export PATH=$PATH:/usr/local/kafka/bin" to end of /etc/profile -source /etc/profile - - -kafka-server-start.sh /usr/local/kafka/config/server.properties & - -``` -**Note**: make sure the version of Kafka is the same as the version set in build.gradle of eventplugin project.(kafka_2.10-0.10.2.2 kafka) - -

Run Kafka

- -**On Mac**: -``` -zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties & kafka-server-start /usr/local/etc/kafka/server.properties -``` - -**On Linux**: -``` -zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties & -Sleep about 3 seconds -kafka-server-start.sh /usr/local/kafka/config/server.properties & -``` - -

Create topics to receive events, the topic is defined in config.conf

- -**On Mac**: -``` -kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic block -kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic transaction -kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic contractlog -kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic contractevent -``` - -**On Linux**: -``` -kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic block -kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic transaction -kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic contractlog -kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic contractevent -``` - -

Kafka consumer

- -**On Mac**: -``` -kafka-console-consumer --bootstrap-server localhost:9092 --topic block -kafka-console-consumer --bootstrap-server localhost:9092 --topic transaction -kafka-console-consumer --bootstrap-server localhost:9092 --topic contractlog -kafka-console-consumer --bootstrap-server localhost:9092 --topic contractevent -``` - -**On Linux**: -``` -kafka-console-consumer.sh --zookeeper localhost:2181 --topic block -kafka-console-consumer.sh --zookeeper localhost:2181 --topic transaction -kafka-console-consumer.sh --zookeeper localhost:2181 --topic contractlog -kafka-console-consumer.sh --zookeeper localhost:2181 --topic contractevent -``` - -

Load plugin in java-tron

- -* add --es to command line, for example: -``` - java -jar FullNode.jar -p privatekey -c config.conf --es -``` - - -

Event filter

- -which is defined in config.conf, path: event.subscribe -``` -filter = { - fromblock = "" // the value could be "", "earliest" or a specified block number as the beginning of the queried range - toblock = "" // the value could be "", "latest" or a specified block number as end of the queried range - contractAddress = [ - "TVkNuE1BYxECWq85d8UR9zsv6WppBns9iH" // contract address you want to subscribe, if it's set to "", you will receive contract logs/events with any contract address. - ] - - contractTopic = [ - "f0f1e23ddce8a520eaa7502e02fa767cb24152e9a86a4bf02529637c4e57504b" // contract topic you want to subscribe, if it's set to "", you will receive contract logs/events with any contract topic. - ] - } -``` - - -

Download and install MongoDB

- -** Suggested Configuration ** - -- CPU/ RAM: 16Core / 32G -- DISK: 500G -- System: CentOS 64 - -The version of MongoDB is **4.0.4**, below is the command: - -- cd /home/java-tron -- curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.4.tgz -- tar zxvf mongodb-linux-x86_64-4.0.4.tgz -- mv mongodb-linux-x86_64-4.0.4 mongodb - -** Set environment ** -- export MONGOPATH=/home/java-tron/mongodb/ -- export PATH=$PATH:$MONGOPATH/bin - -** Create mongodb config ** -The path is : /etc/mongodb/mgdb.conf - -- cd /etc/mongodb -- touch mgdb.conf - -Create data&log folder for mongodb -Create data, log subfolder in mongodb directory, and add their absolute path to mgdb.conf - -** Example: ** - -- dbpath=/home/java-tron/mongodb/data -- logpath=/home/java-tron/mongodb/log/mongodb.log -- port=27017 -- logappend=true -- fork=true -- bind_ip=0.0.0.0 -- auth=true -- wiredTigerCacheSizeGB=2 - -** Note: ** -- bind_ip must be configured to 0.0.0.0,otherwise remote connection will be refused. -- wiredTigerCacheSizeGB, must be configured to prevent OOM - -** Launch MongoDB ** - - mongod --config /etc/mongodb/mgdb.conf - -** Create admin account: ** -- mongo -- use admin -- db.createUser({user:"root",pwd:"admin",roles:[{role:"root",db:"admin"}]}) - -** Create eventlog and its owner account ** - -- db.auth("root", "admin") -- use eventlog -- db.createUser({user:"tron",pwd:"123456",roles:[{role:"dbOwner",db:"eventlog"}]}) - -> database: eventlog, username:tron, password: 123456 - -** Firewall rule: ** -- iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT - -** Remote connection via mongo: ** - -- mongo 47.90.245.68:27017 -- use eventlog -- db.auth("tron", "123456") -- show collections -- db.block.find() - -** Query block trigger data: ** - -- db.block.find({blockNumber: {$lt: 1000}}); // return records whose blockNumber less than1000 - -** Set database index to speedup query: ** - -cd /{projectPath} -sh insertIndex.sh - -## Event query service deployment - -

Download sourcecode

- -Download sourcecode - -git clone https://github.com/tronprotocol/tron-eventquery.git -cd troneventquery - -

Build

- -- mvn package - -After the build command is executed successfully, troneventquery jar to release will be generated under troneventquery/target directory. - -Configuration of mongodb "config.conf" should be created for storing mongodb configuration, such as database name, username, password, and so on. We provided an example in sourcecode, which is " troneventquery/config.conf ". Replace with your specified configuration if needed. - -**Note**: - -Make sure the relative path of config.conf and troneventquery jar. The config.conf 's path is the parent of troneventquery jar. - - - mongo.host=IP - - mongo.port=27017 - - mongo.dbname=eventlog - - mongo.username=tron - - mongo.password=123456 - - mongo.connectionsPerHost=8 - - mongo.threadsAllowedToBlockForConnectionMultiplier=4 - -Any configuration could be modified except **mongo.dbname**, "**eventlog**" is the specified database name for event subscribe. - -

Run

- -- troneventquery/deploy.sh is used to deploy troneventquery -- troneventquery/insertIndex.sh is used to setup mongodb index to speedup query. - - -## Advanced Configurations - -Read the [Advanced Configuration](./advanced-configuration.md) diff --git a/docs/using_javatron/installing_javatron.md b/docs/using_javatron/installing_javatron.md index 0e548c41..e201e122 100644 --- a/docs/using_javatron/installing_javatron.md +++ b/docs/using_javatron/installing_javatron.md @@ -75,6 +75,25 @@ java -Xmx24g -XX:+UseConcMarkSweepGC -jar FullNode.jar -c config.conf * For block-producing FullNode, the recommended setting is: `-Xms24G -Xmx24G -XX:NewRatio=3` * To start a **Nile Testnet FullNode** or **Private Network FullNode**, use the corresponding configuration file links provided at the beginning of this section. +### Starting a SolidityNode +SolidityNode only synchronizes solidified blocks from trusted FullNode. Trusted FullNode is configured in the configuration file, with the port number being the gRPC service port of the FullNode. + +``` +node { + # trust node for solidity node + # trustNode = "ip:port" + trustNode = "127.0.0.1:50051" + ... +} +``` + +Starting from version 4.8.1, `SolidityNode.jar` is no longer provided. Instead, SolidityNode is started using the command-line parameter `--solidity`, as shown below: + +``` +java -Xmx24g -XX:+UseConcMarkSweepGC -jar FullNode.jar --solidity -c config.conf +``` + + ### Starting a Block Production Node By adding the `--witness` parameter to the FullNode startup command above, the `FullNode` will run as a **Block Production Node** (SR Node). In addition to supporting all FullNode functionalities, a Block Production Node also supports **block production** and **transaction packaging**. @@ -196,7 +215,7 @@ To avoid specifying the private key in plaintext within the configuration file, localwitnesskeystore = ["B/localwitnesskeystore.json"] ``` - * You can generate the `keystore` file and password using the `registerwallet` command from the `wallet-cli` project. + * You can use the `registerwallet` command from the `wallet-cli` project to generate the `keystore` file and password, or use the command `java -jar FullNode.jar --keystore-factory` to generate them (starting from version 4.8.1, `KeystoreFactory.jar` is no longer provided). 2. **Starting a Block Production Node**: diff --git a/docs/using_javatron/private_network.md b/docs/using_javatron/private_network.md index fd9bbafb..2a9f1b54 100644 --- a/docs/using_javatron/private_network.md +++ b/docs/using_javatron/private_network.md @@ -64,7 +64,6 @@ The operational steps for deploying a private network node are fundamentally the | `seed.node` | Leave empty | Set `ip.list` to the IP address of the SR node and the port number specified in its `listen.port` configuration | Enables FullNode to establish connection with SR node for data synchronization | | `needSyncCheck` | `false` | `true` | Set the first SR’s `needSyncCheck` to `false`, other SRs `true` | | `node.discovery.enable` | `true` | `true` | If set to `false`, the current node will not be discovered by other nodes | - | `block.proposalExpireTime`|`600000` | Same as SR configuration | The default proposal effective time is 3 days: 259200000 (ms). Can be set to a lower value, such as 600,000(ms) (10 minutes), to pass the proposal faster.| | `block.maintenanceTimeInterval`|`300000`| Same as SR configuration | The default maintenance time interval is 6 hours: 21600000 (ms). Can be set to a smaller value, such as 300000(ms) (5 minutes), to pass the proposal faster.| | `committee.allowSameTokenName` |`1`|`1`| If set to `1` (true), the creation of tokens with identical names is allowed | | `committee.allowTvmTransferTrc10` | `1`|`1`| If set to 1 (true), the TVM is allowed to execute transfers of TRC-10 tokens via smart contracts. | From fa1c2063d5c4f1f41662c9ca49db92c1237ad239 Mon Sep 17 00:00:00 2001 From: Leem Date: Mon, 15 Dec 2025 13:10:15 +0800 Subject: [PATCH 2/3] =?UTF-8?q?The=20description=20of=20the=20relationship?= =?UTF-8?q?=20between=20maintenanceTimeInterval=20and=20proposalExpireTime?= =?UTF-8?q?=20is=20incorrect=E2=80=94delete=20it.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/using_javatron/private_network.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/using_javatron/private_network.md b/docs/using_javatron/private_network.md index 2a9f1b54..939ed5ce 100644 --- a/docs/using_javatron/private_network.md +++ b/docs/using_javatron/private_network.md @@ -64,7 +64,7 @@ The operational steps for deploying a private network node are fundamentally the | `seed.node` | Leave empty | Set `ip.list` to the IP address of the SR node and the port number specified in its `listen.port` configuration | Enables FullNode to establish connection with SR node for data synchronization | | `needSyncCheck` | `false` | `true` | Set the first SR’s `needSyncCheck` to `false`, other SRs `true` | | `node.discovery.enable` | `true` | `true` | If set to `false`, the current node will not be discovered by other nodes | - | `block.maintenanceTimeInterval`|`300000`| Same as SR configuration | The default maintenance time interval is 6 hours: 21600000 (ms). Can be set to a smaller value, such as 300000(ms) (5 minutes), to pass the proposal faster.| + | `block.maintenanceTimeInterval`|`300000`| Same as SR configuration | The default maintenance time interval is 6 hours: 21600000 (ms)| | `committee.allowSameTokenName` |`1`|`1`| If set to `1` (true), the creation of tokens with identical names is allowed | | `committee.allowTvmTransferTrc10` | `1`|`1`| If set to 1 (true), the TVM is allowed to execute transfers of TRC-10 tokens via smart contracts. | From 69464bc4f48be233689cdf0d329bcb7cb0bb8293 Mon Sep 17 00:00:00 2001 From: Leem Date: Wed, 17 Dec 2025 11:32:08 +0800 Subject: [PATCH 3/3] Correct English grammar. --- docs/using_javatron/installing_javatron.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/using_javatron/installing_javatron.md b/docs/using_javatron/installing_javatron.md index e201e122..8683a11d 100644 --- a/docs/using_javatron/installing_javatron.md +++ b/docs/using_javatron/installing_javatron.md @@ -76,7 +76,7 @@ java -Xmx24g -XX:+UseConcMarkSweepGC -jar FullNode.jar -c config.conf * To start a **Nile Testnet FullNode** or **Private Network FullNode**, use the corresponding configuration file links provided at the beginning of this section. ### Starting a SolidityNode -SolidityNode only synchronizes solidified blocks from trusted FullNode. Trusted FullNode is configured in the configuration file, with the port number being the gRPC service port of the FullNode. +A SolidityNode only synchronizes solidified blocks from a trusted FullNode. The trusted FullNode is configured in the configuration file, with the port number being the gRPC service port of the FullNode. ``` node {