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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
16 changes: 7 additions & 9 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ plugins {
}

ext {
grpcVersion = "1.83.0"
grpcVersion = "1.83.1"
}

allprojects {
Expand Down Expand Up @@ -91,16 +91,14 @@ subprojects {
}

dependencies {
implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.36'
implementation group: 'org.slf4j', name: 'jcl-over-slf4j', version: '1.7.36'
implementation group: 'org.slf4j', name: 'jul-to-slf4j', version: '1.7.36'
implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.13'
implementation group: 'org.slf4j', name: 'slf4j-api', version: '2.0.17'
implementation group: 'org.slf4j', name: 'jcl-over-slf4j', version: '2.0.17'
implementation group: 'org.slf4j', name: 'jul-to-slf4j', version: '2.0.17'
implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.3.16'
implementation "com.google.code.findbugs:jsr305:3.0.0"
implementation group: 'org.springframework', name: 'spring-context', version: "${springVersion}"
implementation "org.apache.commons:commons-lang3:3.4"
implementation group: 'org.apache.commons', name: 'commons-math', version: '2.2'
implementation "org.apache.commons:commons-collections4:4.1"
implementation group: 'joda-time', name: 'joda-time', version: '2.3'
implementation "org.apache.commons:commons-lang3:3.20.0"
implementation "org.apache.commons:commons-collections4:4.6.0"
implementation group: 'org.bouncycastle', name: 'bcprov-jdk18on', version: '1.84'

compileOnly 'org.projectlombok:lombok:1.18.34'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@
import java.util.stream.IntStream;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.tron.common.parameter.CommonParameter;
import org.tron.common.utils.ByteArray;
import org.tron.common.utils.Sha256Hash;
import org.tron.common.utils.Time;
import org.tron.core.capsule.BytesCapsule;
import org.tron.core.config.Parameter.ChainConstant;
import org.tron.core.db.TronStoreWithRevoking;
Expand Down Expand Up @@ -2261,8 +2261,8 @@ public void updateNextMaintenanceTime(long blockTime) {
logger.info(
"Do update nextMaintenanceTime, currentMaintenanceTime: {}, blockTime: {}, "
+ "nextMaintenanceTime: {}.",
new DateTime(currentMaintenanceTime), new DateTime(blockTime),
new DateTime(nextMaintenanceTime)
Time.getIsoTimeString(currentMaintenanceTime), Time.getIsoTimeString(blockTime),
Time.getIsoTimeString(nextMaintenanceTime)
);
}

Expand Down
4 changes: 3 additions & 1 deletion common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ sourceCompatibility = 1.8


dependencies {
api group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.18.6' // https://github.com/FasterXML/jackson-databind/issues/3627
// avoid x.y.z.w micro-patches, they may ship broken Gradle module metadata:
// https://github.com/FasterXML/jackson-databind/issues/3627
api group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.18.10'
api "com.cedarsoftware:java-util:3.2.0"
api group: 'org.apache.httpcomponents', name: 'httpasyncclient', version: '4.1.1'
api group: 'commons-codec', name: 'commons-codec', version: '1.11'
Expand Down
12 changes: 12 additions & 0 deletions common/src/main/java/org/tron/common/utils/Time.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,26 @@
package org.tron.common.utils;

import java.sql.Timestamp;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

public class Time {

// Matches joda-time's DateTime.toString() output, byte for byte: fixed
// 3-digit millis, offset as +08:00, and Z when the system zone is UTC.
private static final DateTimeFormatter ISO_MILLIS_FORMAT =
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");

public static long getCurrentMillis() {
return System.currentTimeMillis();
}

public static String getTimeString(long time) {
return new Timestamp(time).toString();
}

public static String getIsoTimeString(long time) {
return Instant.ofEpochMilli(time).atZone(ZoneId.systemDefault()).format(ISO_MILLIS_FORMAT);
}
}
35 changes: 34 additions & 1 deletion common/src/main/resources/reference.conf
Original file line number Diff line number Diff line change
Expand Up @@ -462,22 +462,55 @@ rate.limiter = {
# If no strategy is configured for an endpoint, QpsRateLimiterAdapter with
# qps=1000 is applied automatically.

# Per-servlet HTTP rate limits. component is the servlet class simple name.
# Per-servlet HTTP rate limits. Each port limits an endpoint separately, and component names the
# endpoint on one port:
# fullnode port (/wallet/*) the servlet class simple name, e.g. GetAccountServlet
# solidity port (/walletsolidity/*) <Name>OnSolidityServlet, e.g. GetAccountOnSolidityServlet
# standalone SolidityNode the servlet class simple name as fullnode port, except
# GetTransactionByIdSolidityServlet and
# GetTransactionInfoByIdSolidityServlet
http = [
# fullnode port, /wallet/getnowblock
# {
# component = "GetNowBlockServlet",
# strategy = "GlobalPreemptibleAdapter",
# paramString = "permit=1"
# },
# fullnode port, /wallet/getaccount
# {
# component = "GetAccountServlet",
# strategy = "IPQPSRateLimiterAdapter",
# paramString = "qps=1"
# },
# fullnode port, /wallet/listwitnesses
# {
# component = "ListWitnessesServlet",
# strategy = "QpsRateLimiterAdapter",
# paramString = "qps=1"
# },
# solidity port, /walletsolidity/getaccount
# {
# component = "GetAccountOnSolidityServlet",
# strategy = "IPQPSRateLimiterAdapter",
# paramString = "qps=1"
# },
# solidity port, /walletsolidity/triggerconstantcontract
# {
# component = "TriggerConstantContractOnSolidityServlet",
# strategy = "GlobalPreemptibleAdapter",
# paramString = "permit=2"
# },
# standalone SolidityNode, /walletsolidity/getaccount
# {
# component = "GetAccountServlet",
# strategy = "IPQPSRateLimiterAdapter",
# paramString = "qps=5"
# }
# standalone SolidityNode, /walletsolidity/gettransactionbyid
# {
# component = "GetTransactionByIdSolidityServlet",
# strategy = "IPQPSRateLimiterAdapter",
# paramString = "qps=5"
# }
]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.common.args.GenesisBlock;
import org.tron.common.parameter.CommonParameter;
import org.tron.common.utils.ByteArray;
import org.tron.common.utils.Time;
import org.tron.consensus.ConsensusDelegate;
import org.tron.consensus.base.BlockHandle;
import org.tron.consensus.base.ConsensusInterface;
Expand Down Expand Up @@ -134,14 +134,14 @@ public boolean validBlock(BlockCapsule blockCapsule) {
if (slot == 0
&& consensusDelegate.getDynamicPropertiesStore().allowConsensusLogicOptimization()) {
logger.warn("ValidBlock failed: slot error, witness: {}, timeStamp: {}",
ByteArray.toHexString(witnessAddress.toByteArray()), new DateTime(timeStamp));
ByteArray.toHexString(witnessAddress.toByteArray()), Time.getIsoTimeString(timeStamp));
return false;
}
final ByteString scheduledWitness = dposSlot.getScheduledWitness(slot);
if (!scheduledWitness.equals(witnessAddress)) {
logger.warn("ValidBlock failed: sWitness: {}, bWitness: {}, bTimeStamp: {}, slot: {}",
ByteArray.toHexString(scheduledWitness.toByteArray()),
ByteArray.toHexString(witnessAddress.toByteArray()), new DateTime(timeStamp), slot);
ByteArray.toHexString(witnessAddress.toByteArray()), Time.getIsoTimeString(timeStamp), slot);
return false;
}

Expand Down
4 changes: 2 additions & 2 deletions consensus/src/main/java/org/tron/consensus/dpos/DposTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import java.util.concurrent.ExecutorService;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
Expand All @@ -15,6 +14,7 @@
import org.tron.common.parameter.CommonParameter;
import org.tron.common.utils.ByteArray;
import org.tron.common.utils.Sha256Hash;
import org.tron.common.utils.Time;
import org.tron.consensus.ConsensusDelegate;
import org.tron.consensus.base.Param.Miner;
import org.tron.consensus.base.State;
Expand Down Expand Up @@ -123,7 +123,7 @@ private State produceBlock() {
BlockHeader.raw raw = blockCapsule.getInstance().getBlockHeader().getRawData();
logger.info("Produce block successfully, num: {}, time: {}, witness: {}, ID:{}, parentID:{}",
raw.getNumber(),
new DateTime(raw.getTimestamp()),
Time.getIsoTimeString(raw.getTimestamp()),
ByteArray.toHexString(raw.getWitnessAddress().toByteArray()),
new Sha256Hash(raw.getNumber(), Sha256Hash.of(CommonParameter
.getInstance().isECKeyCryptoEngine(), raw.toByteArray())),
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,8 @@ protected NettyServerBuilder initServerBuilder() {
serverBuilder = serverBuilder.executor(this.executorService);
}
// Set configs from config.conf or default value
serverBuilder = GrpcNettyMaxConcurrentStreamsLimiter.configurePlaintext(
serverBuilder, parameter.getMaxConcurrentCallsPerConnection());
serverBuilder
.maxConcurrentCallsPerConnection(parameter.getMaxConcurrentCallsPerConnection())
.flowControlWindow(parameter.getFlowControlWindow())
.maxConnectionIdle(parameter.getMaxConnectionIdleInMillis(), TimeUnit.MILLISECONDS)
.maxConnectionAge(parameter.getMaxConnectionAgeInMillis(), TimeUnit.MILLISECONDS)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
import org.tron.core.config.args.Args;
import org.tron.core.db.RevokingDatabase;
import org.tron.core.db2.core.SnapshotManager;
import org.tron.core.services.interfaceOnPBFT.HttpApiOnPBFTService;
import org.tron.core.services.interfaceOnPBFT.RpcApiServiceOnPBFT;
import org.tron.core.services.interfaceOnPBFT.http.PBFT.HttpApiOnPBFTService;
import org.tron.core.services.interfaceOnSolidity.HttpApiOnSolidityService;
import org.tron.core.services.interfaceOnSolidity.RpcApiServiceOnSolidity;
import org.tron.core.services.interfaceOnSolidity.http.solidity.HttpApiOnSolidityService;

@Slf4j(topic = "app")
@Configuration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
import org.tron.core.exception.VMIllegalException;
import org.tron.core.exception.ZksnarkException;
import org.tron.core.metrics.MetricsApiService;
import org.tron.core.services.http.Util;
import org.tron.core.services.http.servlets.Util;
import org.tron.core.utils.TransactionUtil;
import org.tron.core.zen.address.DiversifierT;
import org.tron.core.zen.address.IncomingViewingKey;
Expand Down
16 changes: 16 additions & 0 deletions framework/src/main/java/org/tron/core/services/WalletOnCursor.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,22 @@ public void futureGet(Runnable runnable) {
}
}

/**
* Selects this view's cursor on the current thread until the returned scope is closed, for a
* body that throws checked exceptions and so cannot run through {@link #futureGet}.
*/
public CursorScope selectCursor() {
dbManager.setCursor(cursor);
return dbManager::resetCursor;
}

/** Resets the current thread's cursor to HEAD when closed. */
public interface CursorScope extends AutoCloseable {

@Override
void close();
}

public interface TronCallable<T> extends Callable<T> {

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,10 @@ public static Set<String> getFilterPaths() {
filterPaths.add("/wallet/getblockbylatestnum");
filterPaths.add("/wallet/getblockbylimitnext");
filterPaths.add("/wallet/getblockbynum");
filterPaths.add("/wallet/getmerkletreevoucherinfo");
filterPaths.add("/wallet/gettransactionbyid");
filterPaths.add("/wallet/gettransactioncountbyblocknum");
filterPaths.add("/wallet/gettransactioninfobyid");
filterPaths.add("/wallet/gettransactionreceiptbyid");
filterPaths.add("/wallet/isspend");
filterPaths.add("/wallet/scanandmarknotebyivk");
filterPaths.add("/wallet/scannotebyivk");
filterPaths.add("/wallet/scannotebyovk");
filterPaths.add("/wallet/totaltransaction");
filterPaths.add("/wallet/gettransactioninfobyblocknum");
filterPaths.add("/wallet/getmarketorderbyaccount");
Expand All @@ -61,14 +56,9 @@ public static Set<String> getFilterPaths() {
filterPaths.add("/walletsolidity/getblockbylatestnum");
filterPaths.add("/walletsolidity/getblockbylimitnext");
filterPaths.add("/walletsolidity/getblockbynum");
filterPaths.add("/walletsolidity/getmerkletreevoucherinfo");
filterPaths.add("/walletsolidity/gettransactionbyid");
filterPaths.add("/walletsolidity/gettransactioncountbyblocknum");
filterPaths.add("/walletsolidity/gettransactioninfobyid");
filterPaths.add("/walletsolidity/isspend");
filterPaths.add("/walletsolidity/scanandmarknotebyivk");
filterPaths.add("/walletsolidity/scannotebyivk");
filterPaths.add("/walletsolidity/scannotebyovk");
filterPaths.add("/walletsolidity/gettransactioninfobyblocknum");
filterPaths.add("/walletsolidity/getmarketorderbyaccount");
filterPaths.add("/walletsolidity/getmarketorderbyid");
Expand All @@ -84,14 +74,10 @@ public static Set<String> getFilterPaths() {
filterPaths.add("/walletpbft/getblockbylatestnum");
filterPaths.add("/walletpbft/getblockbylimitnext");
filterPaths.add("/walletpbft/getblockbynum");
filterPaths.add("/walletpbft/getmerkletreevoucherinfo");
filterPaths.add("/walletpbft/gettransactionbyid");
filterPaths.add("/walletpbft/gettransactioncountbyblocknum");
filterPaths.add("/walletpbft/gettransactioninfobyid");
filterPaths.add("/walletpbft/isspend");
filterPaths.add("/walletpbft/scanandmarknotebyivk");
filterPaths.add("/walletpbft/scannotebyivk");
filterPaths.add("/walletpbft/scannotebyovk");
filterPaths.add("/walletpbft/gettransactioninfobyblocknum");
filterPaths.add("/walletpbft/getmarketorderbyaccount");
filterPaths.add("/walletpbft/getmarketorderbyid");
filterPaths.add("/walletpbft/getmarketpricebypair");
Expand Down
Loading