Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
b33eed8
fix(api): correct node info and network metric mappings (#6930)
xxo1shine Sep 11, 2026
a219222
chore(deps): upgrade grpc, jackson, logback, commons and drop joda-ti…
halibobo1205 Sep 14, 2026
0d19485
feat(api): sanitize HTTP API error responses (#6954)
halibobo1205 Sep 14, 2026
289c1f2
fix(config): remove inactive RocksDB options (#6944)
bladehan1 Sep 18, 2026
34d00c5
ci: optimize pull request checks (#6938)
bladehan1 Sep 18, 2026
880eef6
refactor(config): improve startup errors and remove inactive assertio…
bladehan1 Sep 22, 2026
4d6c240
fix(test): isolate cross-test state leaks and stabilize flaky suites …
warku123 Sep 22, 2026
dd54322
fix(docker): update image builds and container lifecycle
3for Sep 18, 2026
80f30ba
docs(docker): update deployment and quickstart guides
3for Sep 18, 2026
8c4d63a
ci(docker): add shell and Dockerfile static checks
3for Sep 18, 2026
56e778c
docs(docker): clarify standalone build limitation
3for Sep 23, 2026
11d555d
refactor(vm): remove unreachable trace compression path (#6997)
halibobo1205 Sep 24, 2026
9f3c9ae
chore(p2p): internalize libp2p v2.2.9 as a local `p2p` module (#6992)
barbatos2011 Sep 29, 2026
f3e8140
feat: improve node stability and execution efficiency (#7007)
yanghang8612 Sep 30, 2026
5c449a1
update a new version. version name:GreatVoyage-v4.8.2.2-1-gf3e81404fe…
yanghang8612 Sep 30, 2026
6d5adc4
feat(version): merge master to 4.8.3(#7010)
halibobo1205 Oct 2, 2026
1e8abb0
refactor(api): replace response copy wrappers with Jetty content coun…
halibobo1205 Oct 8, 2026
6f7b83a
refactor(framework): decouple Manager from TronJsonRpcImpl (#6990)
0xbigapple Oct 9, 2026
8bb6150
refactor(api): remove dead WalletExtension gRPC service and config (#…
0xbigapple Oct 10, 2026
91371cf
feat(plugins): backfill section bloom (#6973)
317787106 Oct 10, 2026
f62b25f
refactor(crypto): remove unused SM2 and SM3 (#6999)
Federico2014 Oct 10, 2026
1575c4f
fix(config): close resource streams (#7002)
Federico2014 Oct 11, 2026
e56ddd9
refactor(proto): remove unused proto discover definition (#7014)
317787106 Oct 12, 2026
00661e8
feat(framework): remove --keystore-factory support from FullNode (#6978)
0xbigapple Oct 12, 2026
1ff2aae
refactor(trie): remove unused RLP utilities (#6991)
SeriousCoding789 Oct 12, 2026
0d5b9e5
fix(jsonrpc): handle null parameters consistently (#6984)
waynercheung Oct 12, 2026
12713e6
fix(jsonrpc): normalize error responses and fatal handling (#6985)
waynercheung Oct 12, 2026
7ebc2eb
fix(config): fail startup on invalid DNS publish parameters (#7019)
SeriousCoding789 Oct 12, 2026
4c9b5f4
feat(crypto): harden ECKey validation (#6996)
Federico2014 Oct 13, 2026
c9bb7d8
fix(toolkit): keep source DB intact when DbMove copy fails (#6946)
halibobo1205 Oct 13, 2026
9ff3596
refactor: remove a deprecated KhaosDatabase overload and unused impor…
SeriousCoding789 Oct 13, 2026
e1ffb1c
test(framework): await reward calculation before mutating store (#7025)
317787106 Oct 13, 2026
c78ef93
feat(API): refactor merge http servlets (#6976)
SeriousCoding789 Oct 13, 2026
a975a3d
feat(API): refactor merge rpc (#6977)
SeriousCoding789 Oct 13, 2026
2bd5891
fix(rpc): apply RST_STREAM frame limit by default (#7015)
waynercheung Oct 13, 2026
cfcd63e
fix(http): time out idle connections at the connection limit (#7020)
SeriousCoding789 Oct 13, 2026
a901f85
docs: add AGENTS.md and reorganize project documentation (#6871)
SeriousCoding789 Oct 13, 2026
a5f43f7
fix(config,toolkit): harden keystore, grpc config and build supply ch…
warku123 Oct 14, 2026
075049f
chore(deps): upgrade jsonrpc4j from 1.6 to 1.7 (#7030)
waynercheung Oct 14, 2026
2970bc2
fix(http): bound JsonFormat integer and enum token parsing (#7031)
waynercheung Oct 14, 2026
5f9b426
feat(http): add node.allowNumericFieldAlias switch for JSON aliases (…
waynercheung Oct 14, 2026
85376bc
fix(net): reduce memory usage in transaction queues (#7011)
317787106 Oct 14, 2026
ad2c534
fix(crypto): correct Keccak digest API behavior (#7018)
Federico2014 Oct 14, 2026
68128cc
chore: merge release_v4.8.3 into feat/docker
3for Oct 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 0 additions & 6 deletions .codeclimate.yml

This file was deleted.

3 changes: 0 additions & 3 deletions .dockerignore

This file was deleted.

29 changes: 29 additions & 0 deletions .github/scripts/check_math_usage.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/usr/bin/env bash
# Prints every Java file that uses java.lang.Math: bare `Math.` calls, fully
# qualified `java.lang.Math.` calls (including static imports) and
# `import java.lang.Math`. No output means no forbidden usage.
# StrictMathWrapper.java and MathWrapper.java are exempt. String literals, char
# literals and comments are stripped before matching, so `StrictMath.` and
# mentions in text are not reported.
# Used by .github/workflows/math-check.yml; run it locally from any directory.
set -euo pipefail

cd "$(dirname "$0")/../.."

find . -type f -name '*.java' -not -path '*/build/*' | while IFS= read -r file; do
case "$(basename "$file")" in
StrictMathWrapper.java|MathWrapper.java) continue ;;
esac

perl -0777 -ne '
s/"([^"\\]|\\.)*"//g;
s/'\''([^'\''\\]|\\.)*'\''//g;
s!/\*([^*]|\*[^/])*\*/!!g;
s!//[^\n]*!!g;
$hasMath = 0;
$hasMath = 1 if /^[\s]*import[\s]+java\.lang\.Math\b/m;
$hasMath = 1 if /\bjava\s*\.\s*lang\s*\.\s*Math\s*\./;
$hasMath = 1 if /(?<![\w\.])(?<!Strict)Math\s*\./;
print "$ARGV\n" if $hasMath;
' "$file"
done | sort -u
3 changes: 3 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v5

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v6

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
Expand Down
56 changes: 56 additions & 0 deletions .github/workflows/docker-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Docker Check

on:
push:
branches: [ 'master', 'release_**' ]
paths:
- 'docker/docker.sh'
- 'docker/Dockerfile'
- 'docker/arm64/Dockerfile'
- '.github/workflows/docker-check.yml'
pull_request:
branches: [ 'master', 'develop', 'release_**' ]
paths:
- 'docker/docker.sh'
- 'docker/Dockerfile'
- 'docker/arm64/Dockerfile'
- '.github/workflows/docker-check.yml'
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
docker-check:
name: Docker Static Check
runs-on: ubuntu-24.04
timeout-minutes: 5

steps:
- uses: actions/checkout@v5

- name: Check shell syntax
run: bash -n docker/docker.sh

- name: Run ShellCheck
run: shellcheck docker/docker.sh

- name: Check amd64 Dockerfile
run: >
docker buildx build
--check
--platform linux/amd64
--file docker/Dockerfile
docker
- name: Check ARM64 Dockerfile
run: >
docker buildx build
--check
--platform linux/arm64
--file docker/arm64/Dockerfile
docker
3 changes: 3 additions & 0 deletions .github/workflows/integration-test-single-node.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ jobs:
- name: Checkout java-tron
uses: actions/checkout@v5

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v6

- name: Set up JDK 8
uses: actions/setup-java@v5
with:
Expand Down
27 changes: 3 additions & 24 deletions .github/workflows/math-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,30 +19,9 @@ jobs:
shell: bash
run: |
echo "Checking for java.lang.Math usage..."
touch math_usage.txt
while IFS= read -r file; do
filename=$(basename "$file")
if [[ "$filename" == "StrictMathWrapper.java" || "$filename" == "MathWrapper.java" ]]; then
continue
fi
perl -0777 -ne '
s/"([^"\\]|\\.)*"//g;
s/'\''([^'\''\\]|\\.)*'\''//g;
s!/\*([^*]|\*[^/])*\*/!!g;
s!//[^\n]*!!g;
$hasMath = 0;
$hasMath = 1 if /^[\s]*import[\s]+java\.lang\.Math\b/m;
$hasMath = 1 if /\bjava\s*\.\s*lang\s*\.\s*Math\s*\./;
$hasMath = 1 if /(?<![\w\.])(?<!Strict)Math\s*\./;
print "$ARGV\n" if $hasMath;
' "$file" >> math_usage.txt
done < <(find . -type f -name "*.java")
sort -u math_usage.txt -o math_usage.txt
bash .github/scripts/check_math_usage.sh > math_usage.txt
if [ -s math_usage.txt ]; then
echo "❌ Error: Forbidden Math usage found in the following files:"
cat math_usage.txt
Expand Down
23 changes: 19 additions & 4 deletions .github/workflows/pr-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ jobs:
steps:
- uses: actions/checkout@v5

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v6

- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v5
with:
Expand Down Expand Up @@ -72,6 +75,9 @@ jobs:
steps:
- uses: actions/checkout@v5

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v6

- name: Set up JDK 17
uses: actions/setup-java@v5
with:
Expand Down Expand Up @@ -126,6 +132,9 @@ jobs:
- name: Checkout code
uses: actions/checkout@v5

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v6

- name: Check Java version
run: java -version

Expand Down Expand Up @@ -183,6 +192,9 @@ jobs:
- name: Checkout code
uses: actions/checkout@v5

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v6

- name: Check Java version
run: java -version

Expand All @@ -197,7 +209,7 @@ jobs:
debian11-x86_64-gradle-

- name: Build
run: ./gradlew clean build --no-daemon --no-build-cache
run: ./gradlew clean build --no-daemon

- name: Toolkit jar smoke test
run: |
Expand All @@ -209,7 +221,7 @@ jobs:
java -jar "$JAR" keystore --help

- name: Test with RocksDB engine
run: ./gradlew :framework:testWithRocksDb --no-daemon --no-build-cache
run: ./gradlew :framework:testWithRocksDb --no-daemon

- name: Generate module coverage reports
run: ./gradlew jacocoTestReport --no-daemon
Expand Down Expand Up @@ -249,6 +261,9 @@ jobs:
with:
ref: ${{ github.event.pull_request.base.sha }}

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v6

- name: Cache Gradle packages
uses: actions/cache@v5
with:
Expand All @@ -265,11 +280,11 @@ jobs:
# this PR. The only output we need from this job is the jacoco XML for
# coverage diffing, so we must not let a stale test failure block it.
continue-on-error: true
run: ./gradlew clean build --no-daemon --no-build-cache
run: ./gradlew clean build --no-daemon

- name: Test with RocksDB engine (base)
continue-on-error: true
run: ./gradlew :framework:testWithRocksDb --no-daemon --no-build-cache
run: ./gradlew :framework:testWithRocksDb --no-daemon

- name: Generate module coverage reports (base)
run: ./gradlew jacocoTestReport --no-daemon
Expand Down
18 changes: 14 additions & 4 deletions .github/workflows/pr-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,16 @@ jobs:
errors.push(`PR title is too long (${title.length}/72 characters).`);
}
// 2. Conventional format check
const conventionalRegex = /^(feat|fix|refactor|docs|style|test|chore|ci|perf|build|revert)(\([^)]+\))?:\s\S.*/;
if (title && !conventionalRegex.test(title)) {
// 2. Conventional format check (require a space after the colon)
const titlePrefix = '(?:feat|fix|refactor|docs|style|test|chore|ci|perf|build|revert)(?:[(][^)]+[)])?';
const missingSpaceAfterColonRegex = new RegExp(`^${titlePrefix}:[^ ]`);
const conventionalRegex = new RegExp(`^${titlePrefix}: [^ ].*`);
if (title && missingSpaceAfterColonRegex.test(title)) {
errors.push(
'PR title must include a space after the colon.\n' +
' Example: `feat(tvm): add blob opcodes`'
);
} else if (title && !conventionalRegex.test(title)) {
errors.push(
'PR title must follow conventional format: `type(scope): description`\n' +
' Allowed types: ' + allowedTypes.map(t => `\`${t}\``).join(', ') + '\n' +
Expand All @@ -60,7 +67,7 @@ jobs:
// 4. Description part should not start with a capital letter
if (title) {
const descMatch = title.match(/^\w+(?:\([^)]+\))?:\s*(.+)/);
const descMatch = title.match(/^\w+(?:\([^)]+\))?: (.+)/);
if (descMatch) {
const desc = descMatch[1];
if (/^[A-Z]/.test(desc)) {
Expand Down Expand Up @@ -103,6 +110,9 @@ jobs:
steps:
- uses: actions/checkout@v5

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v6

- name: Set up Python
uses: actions/setup-python@v5
with:
Expand Down
14 changes: 12 additions & 2 deletions .github/workflows/pr-reviewer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,23 @@ jobs:
const normalize = s => s.toLowerCase().replace(/[\s\-_]/g, '');
// ── Extract scope from conventional commit title ──────────
// Format: type(scope): description
// Formats documented by CONTRIBUTING.md:
// type(scope): description
// type: description
// Also supports: type(scope1,scope2): description
// Only bare "ci" currently has an equivalent reviewer scope.
const scopeMatch = title.match(/^\w+\(([^)]+)\):/);
const rawScope = scopeMatch ? scopeMatch[1] : null;
const bareTypeMatch = title.match(/^(\w+):/);
const inferredScope = !scopeMatch && bareTypeMatch?.[1].toLowerCase() === 'ci'
? 'ci'
: null;
const rawScope = scopeMatch ? scopeMatch[1] : inferredScope;
core.info(`PR title : ${title}`);
core.info(`Raw scope: ${rawScope || '(none)'}`);
if (inferredScope) {
core.info('Inferred scope "ci" from bare "ci" PR title type.');
}
// ── Skip if reviewers already assigned ──────────────────
const pr = await github.rest.pulls.get({
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/release-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ jobs:
with:
ref: ${{ github.sha }}

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v6

- name: Cache Gradle packages
uses: actions/cache@v5
with:
Expand Down Expand Up @@ -121,6 +124,9 @@ jobs:
with:
ref: ${{ github.sha }}

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v6

- name: Set up Temurin 17
uses: actions/setup-java@v5
with:
Expand Down
Loading
Loading