Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 1 addition & 17 deletions common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,7 @@ dependencies {
api 'org.aspectj:aspectjrt:1.9.8'
api 'org.aspectj:aspectjweaver:1.9.8'
api 'org.aspectj:aspectjtools:1.9.8'
api group: 'io.github.tronprotocol', name: 'libp2p', version: '2.2.7',{
exclude group: 'io.grpc', module: 'grpc-context'
exclude group: 'io.grpc', module: 'grpc-core'
exclude group: 'io.grpc', module: 'grpc-netty'
exclude group: 'com.google.protobuf', module: 'protobuf-java'
exclude group: 'com.google.protobuf', module: 'protobuf-java-util'
// https://github.com/dom4j/dom4j/pull/116
// https://github.com/gradle/gradle/issues/13656
// https://github.com/dom4j/dom4j/issues/99
exclude group: 'jaxen', module: 'jaxen'
exclude group: 'javax.xml.stream', module: 'stax-api'
exclude group: 'net.java.dev.msv', module: 'xsdlib'
exclude group: 'pull-parser', module: 'pull-parser'
exclude group: 'xpp3', module: 'xpp3'
exclude group: 'org.bouncycastle', module: 'bcprov-jdk18on'
exclude group: 'org.bouncycastle', module: 'bcutil-jdk18on'
}
api project(':p2p')
api project(":protocol")
api project(":platform")
}
Expand Down
91 changes: 80 additions & 11 deletions gradle/verification-metadata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,14 @@
<sha256 value="afded6e6a690fbf3ad4ae65ada397f0a90a5f630b303d1b741b9c97926fdd4de" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.code.gson" name="gson" version="2.9.0">
<artifact name="gson-2.9.0.jar">
<sha256 value="c96d60551331a196dac54b745aa642cd078ef89b6f267146b705f2c2cbef052d" origin="Generated by Gradle"/>
</artifact>
<artifact name="gson-2.9.0.pom">
<sha256 value="7190d0b07f278e9f4c603f44e543940f81cf1a2559f851c6f298c9bb2be2978c" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.code.gson" name="gson-parent" version="2.11.0">
<artifact name="gson-parent-2.11.0.pom">
<sha256 value="8acb1f3b72a6f026916ac0735bad9aab0293d527edb7b365327def13a9367b7a" origin="Generated by Gradle"/>
Expand All @@ -350,6 +358,11 @@
<sha256 value="b16e026e63427c1972ad0fc68703ec379b1576e411ba49c32fa9a31ab0bbcffb" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.code.gson" name="gson-parent" version="2.9.0">
<artifact name="gson-parent-2.9.0.pom">
<sha256 value="af781c9a5766ffea311a0df0536576a64decc661aa110c4de5c73ac8bf434424" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.errorprone" name="error_prone_annotations" version="2.1.3">
<artifact name="error_prone_annotations-2.1.3.jar">
<sha256 value="03d0329547c13da9e17c634d1049ea2ead093925e290567e1a364fd6b1fc7ff8" origin="Generated by Gradle"/>
Expand All @@ -359,6 +372,9 @@
</artifact>
</component>
<component group="com.google.errorprone" name="error_prone_annotations" version="2.18.0">
<artifact name="error_prone_annotations-2.18.0.jar">
<sha256 value="9e6814cb71816988a4fd1b07a993a8f21bb7058d522c162b1de849e19bea54ae" origin="Generated by Gradle"/>
</artifact>
<artifact name="error_prone_annotations-2.18.0.pom">
<sha256 value="920135797dcca5917b5a5c017642a58d340a4cd1bcd12f56f892a5663bd7bddc" origin="Generated by Gradle"/>
</artifact>
Expand Down Expand Up @@ -394,6 +410,14 @@
<sha256 value="859797e70a1bd9e422fed400d66a6602c8af8f3c667ee1c7b78f1763a25eb8e0" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.guava" name="failureaccess" version="1.0.1">
<artifact name="failureaccess-1.0.1.jar">
<sha256 value="a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26" origin="Generated by Gradle"/>
</artifact>
<artifact name="failureaccess-1.0.1.pom">
<sha256 value="e96042ce78fecba0da2be964522947c87b40a291b5fd3cd672a434924103c4b9" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.guava" name="failureaccess" version="1.0.2">
<artifact name="failureaccess-1.0.2.jar">
<sha256 value="8a8f81cf9b359e3f6dfa691a1e776985c061ef2f223c9b2c80753e1b458e8064" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -512,6 +536,9 @@
</artifact>
</component>
<component group="com.google.j2objc" name="j2objc-annotations" version="2.8">
<artifact name="j2objc-annotations-2.8.jar">
<sha256 value="f02a95fa1a5e95edb3ed859fd0fb7df709d121a35290eff8b74dce2ab7f4d6ed" origin="Generated by Gradle"/>
</artifact>
<artifact name="j2objc-annotations-2.8.pom">
<sha256 value="37f87798b18385113c918bfa9e1276fe50735ef8fa849b5800c519d54dbf11f8" origin="Generated by Gradle"/>
</artifact>
Expand Down Expand Up @@ -846,17 +873,6 @@
<sha256 value="8719f349cd542ae3ce523ac3992513a8c04020621bc86e880a79afa5f1aaf589" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.github.tronprotocol" name="libp2p" version="2.2.7">
<artifact name="libp2p-2.2.7.jar">
<sha256 value="6cf446b68723299e41189bd17d1605544ec4e8bada3830c7fa54d043b22b2208" origin="Generated by Gradle"/>
</artifact>
<artifact name="libp2p-2.2.7.module">
<sha256 value="8dcf317770be76db50d2f5dd694f5b0edba98e2bf147626d9b49bbd888669689" origin="Generated by Gradle"/>
</artifact>
<artifact name="libp2p-2.2.7.pom">
<sha256 value="91ddb2a384207b401efa0d68b84f06ff9151fce8843e1ece3e5cf63875c1cd84" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.github.tronprotocol" name="zksnark-java-sdk" version="1.0.0">
<artifact name="zksnark-java-sdk-1.0.0.jar">
<sha256 value="d0bd272630dc6c622f968d4c7d8b1c5a7aec590ae9cde1e0e7ae7aea25adde2e" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -1209,6 +1225,22 @@
<sha256 value="76b7aac6413269d0bddb47b8b8e37bb3145789c9a9a42df80927aeb5aeeffb72" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="javax.xml.stream" name="stax-api" version="1.0-2">
<artifact name="stax-api-1.0-2.jar">
<sha256 value="e8c70ebd76f982c9582a82ef82cf6ce14a7d58a4a4dca5cb7b7fc988c80089b7" origin="Generated by Gradle"/>
</artifact>
<artifact name="stax-api-1.0-2.pom">
<sha256 value="2864f19da84fd52763d75a197a71779b2decbccaac3eb4e4760ffc884c5af4a2" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="jaxen" name="jaxen" version="1.1.6">
<artifact name="jaxen-1.1.6.jar">
<sha256 value="5ac9c74bbb3964b34a886ba6b1b6c0b0dc3ebeebc1dc4a44942a76634490b3eb" origin="Generated by Gradle"/>
</artifact>
<artifact name="jaxen-1.1.6.pom">
<sha256 value="d0cdf2b81b615d6923f19ffd8727a7225a4d6506966dfcd0237dacb74e04b3aa" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="joda-time" name="joda-time" version="2.3">
<artifact name="joda-time-2.3.jar">
<sha256 value="602fd8006641f8b3afd589acbd9c9b356712bdcf0f9323557ec8648cd234983b" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -1280,6 +1312,19 @@
<sha256 value="1af699f8d9ddab67f9a0d202fbd7915eb0362a5a6dfd5ffc54cafa3465c9cb0a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="net.java.dev.msv" name="msv" version="2013.6.1">
<artifact name="msv-2013.6.1.pom">
<sha256 value="c32ddee76b48f49a38c13e31c465f99876967eeeb17ca89014ed61404e414a97" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="net.java.dev.msv" name="xsdlib" version="2013.6.1">
<artifact name="xsdlib-2013.6.1.jar">
<sha256 value="62472a211e4b99c9a053cd656e9662852165b1eb232acc42585b7187eaad4575" origin="Generated by Gradle"/>
</artifact>
<artifact name="xsdlib-2013.6.1.pom">
<sha256 value="d6e83c124436049d83238fc532a26c5d8ccd7e4ab10eba6d96043c850ac82f3c" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="net.jcip" name="jcip-annotations" version="1.0">
<artifact name="jcip-annotations-1.0.jar">
<sha256 value="be5805392060c71474bf6c9a67a099471274d30b83eef84bfc4e0889a4f1dcc0" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -1639,6 +1684,14 @@
<sha256 value="d8f1a06b149d746e9d98de54e2f7aa9b2eb613fb35ca67d8ae396ceaac661ee4" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.bouncycastle" name="bcutil-jdk18on" version="1.79">
<artifact name="bcutil-jdk18on-1.79.jar">
<sha256 value="c70b88ada58938cbc2f005d40329054078bcfa1149e6ffc03e9242eb6ab21836" origin="Generated by Gradle"/>
</artifact>
<artifact name="bcutil-jdk18on-1.79.pom">
<sha256 value="e24c1fb4cf1605405a6988e9e4d6e4b2e1f4393fc73a89a9452ae625ee311d02" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.checkerframework" name="checker-compat-qual" version="2.0.0">
<artifact name="checker-compat-qual-2.0.0.jar">
<sha256 value="a40b2ce6d8551e5b90b1bf637064303f32944d61b52ab2014e38699df573941b" origin="Generated by Gradle"/>
Expand All @@ -1652,6 +1705,14 @@
<sha256 value="dc4cd438a36462d013c2338c8e206d102a322a00f33729e8955ee219859c9ede" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.checkerframework" name="checker-qual" version="3.33.0">
<artifact name="checker-qual-3.33.0.jar">
<sha256 value="e316255bbfcd9fe50d165314b85abb2b33cb2a66a93c491db648e498a82c2de1" origin="Generated by Gradle"/>
</artifact>
<artifact name="checker-qual-3.33.0.module">
<sha256 value="e8521d75625d41272c767d262a153ac163cc505b66644a2ef705fa8949ffb4e5" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.checkerframework" name="checker-qual" version="3.43.0">
<artifact name="checker-qual-3.43.0.jar">
<sha256 value="3fbc2e98f05854c3df16df9abaa955b91b15b3ecac33623208ed6424640ef0f6" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -2431,6 +2492,14 @@
<sha256 value="104075399c1a7f88c60dd61590553b249b8c415678b30613730445cf3aa238ed" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="relaxngDatatype" name="relaxngDatatype" version="20020414">
<artifact name="relaxngDatatype-20020414.jar">
<sha256 value="2a2563efc911f431250214220570fac8ec3f43c3ec1e47328cee78062f81b218" origin="Generated by Gradle"/>
</artifact>
<artifact name="relaxngDatatype-20020414.pom">
<sha256 value="26b879913526e0883e891498baccb7a37443abee4edf62d2b0010caaefaba5c9" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="software.amazon.awssdk" name="annotations" version="2.18.41">
<artifact name="annotations-2.18.41.jar">
<sha256 value="963758dc993b9088b7b5f79356a321ea80810125eaba7f2470dcc89abbbb8e4c" origin="Generated by Gradle"/>
Expand Down
2 changes: 2 additions & 0 deletions p2p/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# protobuf generated code (rebuilt by ./gradlew :p2p:generateProto)
src/main/java/org/tron/p2p/protos/
94 changes: 94 additions & 0 deletions p2p/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
apply plugin: 'com.google.protobuf'
apply plugin: 'checkstyle'

checkstyle {
toolVersion = '8.7'
configFile = file("${rootDir}/config/checkstyle/checkStyleAll.xml")
maxWarnings = 0
}

checkstyleMain {
source = 'src/main/java'
exclude '**/protos/**'
}

def protobufVersion = '3.25.8'

sourceSets {
main {
proto {
srcDir 'src/main/protos'
}
java {
srcDir 'src/main/java'
}
}
}

dependencies {
// protobuf & grpc (implementation scope: not leaked to consumers)
implementation "com.google.protobuf:protobuf-java:${protobufVersion}"
implementation "com.google.protobuf:protobuf-java-util:${protobufVersion}"
// grpc-netty provides Netty transitively, which p2p uses for TCP/UDP transport.
// grpc itself is not used (p2p protos define only messages, no services).
implementation "io.grpc:grpc-netty:1.75.0"

// p2p-specific dependencies
implementation 'org.xerial.snappy:snappy-java:1.1.10.5'
implementation 'org.bouncycastle:bcpkix-jdk18on:1.79'
implementation 'dnsjava:dnsjava:3.6.2'
implementation 'commons-cli:commons-cli:1.5.0'
implementation('software.amazon.awssdk:route53:2.18.41') {
exclude group: 'io.netty', module: 'netty-codec-http2'
exclude group: 'io.netty', module: 'netty-codec-http'
exclude group: 'io.netty', module: 'netty-common'
exclude group: 'io.netty', module: 'netty-buffer'
exclude group: 'io.netty', module: 'netty-transport'
exclude group: 'io.netty', module: 'netty-codec'
exclude group: 'io.netty', module: 'netty-handler'
exclude group: 'io.netty', module: 'netty-resolver'
exclude group: 'io.netty', module: 'netty-transport-classes-epoll'
exclude group: 'io.netty', module: 'netty-transport-native-unix-common'
exclude group: 'software.amazon.awssdk', module: 'netty-nio-client'
}
implementation('com.aliyun:alidns20150109:3.0.1') {
exclude group: 'org.bouncycastle', module: 'bcprov-jdk15on'
exclude group: 'org.bouncycastle', module: 'bcpkix-jdk15on'
exclude group: 'pull-parser', module: 'pull-parser'
exclude group: 'xpp3', module: 'xpp3'
}

// commons-lang3: root provides 3.4 as 'implementation' (not on compile classpath).
// Re-declare here so p2p can compile. Uses 3.4-compatible API (new Builder() not builder()).
implementation 'org.apache.commons:commons-lang3:3.4'

// provided by root build.gradle for all subprojects:
// slf4j-api, logback, bcprov-jdk18on, lombok, junit, mockito
}

protobuf {
generatedFilesBaseDir = "$projectDir/src"
protoc {
artifact = "com.google.protobuf:protoc:${protobufVersion}"
}
generateProtoTasks {
all().each { task ->
task.builtins {
java { outputSubDir = "java" }
}
}
}
}

clean.doFirst {
delete "src/main/java/org/tron/p2p/protos"
}

processResources.dependsOn(generateProto)

jacocoTestReport {
reports {
xml.enabled = true
html.enabled = true
}
}
37 changes: 37 additions & 0 deletions p2p/src/main/java/org/tron/p2p/P2pConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package org.tron.p2p;

import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import lombok.Data;
import org.tron.p2p.dns.update.PublishConfig;
import org.tron.p2p.utils.NetUtil;

@Data
public class P2pConfig {

private List<InetSocketAddress> seedNodes = new CopyOnWriteArrayList<>();
private List<InetSocketAddress> activeNodes = new CopyOnWriteArrayList<>();
private List<InetAddress> trustNodes = new CopyOnWriteArrayList<>();
private byte[] nodeID = NetUtil.getNodeId();
private String ip = NetUtil.getExternalIpV4();
private String lanIp = NetUtil.getLanIP();
private String ipv6 = NetUtil.getExternalIpV6();
private int port = 18888;
private int networkId = 1;
private int minConnections = 8;
private int maxConnections = 50;
private int minActiveConnections = 2;
private int maxConnectionsWithSameIp = 2;
private boolean discoverEnable = true;
private boolean disconnectionPolicyEnable = false;
private boolean nodeDetectEnable = false;

// dns read config
private List<String> treeUrls = new ArrayList<>();

// dns publish config
private PublishConfig publishConfig = new PublishConfig();
}
16 changes: 16 additions & 0 deletions p2p/src/main/java/org/tron/p2p/P2pEventHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.tron.p2p;

import java.util.Set;
import lombok.Getter;
import org.tron.p2p.connection.Channel;

public abstract class P2pEventHandler {

@Getter protected Set<Byte> messageTypes;

public void onConnect(Channel channel) {}

public void onDisconnect(Channel channel) {}

public void onMessage(Channel channel, byte[] data) {}
}
Loading
Loading