Skip to content

Commit 3ed6a9f

Browse files
authored
Merge pull request #5110 from yanghang8612/feature/optimize_trigger_interface
func(http,util): update rule-3 validation
2 parents 91c0c50 + 78b46c3 commit 3ed6a9f

5 files changed

Lines changed: 32 additions & 38 deletions

File tree

actuator/src/main/java/org/tron/core/vm/program/Program.java

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import java.util.Map;
1818
import java.util.Objects;
1919
import java.util.stream.Collectors;
20-
2120
import lombok.Getter;
2221
import lombok.Setter;
2322
import lombok.extern.slf4j.Slf4j;
@@ -1815,9 +1814,9 @@ public boolean freeze(DataWord receiverAddress, DataWord frozenBalance, DataWord
18151814
repository.commit();
18161815
return true;
18171816
} catch (ContractValidateException e) {
1818-
logger.error("TVM Freeze: validate failure. Reason: {}", e.getMessage());
1817+
logger.warn("TVM Freeze: validate failure. Reason: {}", e.getMessage());
18191818
} catch (ArithmeticException e) {
1820-
logger.error("TVM Freeze: frozenBalance out of long range.");
1819+
logger.warn("TVM Freeze: frozenBalance out of long range.");
18211820
}
18221821
if (internalTx != null) {
18231822
internalTx.reject();
@@ -1848,7 +1847,7 @@ public boolean unfreeze(DataWord receiverAddress, DataWord resourceType) {
18481847
}
18491848
return true;
18501849
} catch (ContractValidateException e) {
1851-
logger.error("TVM Unfreeze: validate failure. Reason: {}", e.getMessage());
1850+
logger.warn("TVM Unfreeze: validate failure. Reason: {}", e.getMessage());
18521851
}
18531852
if (internalTx != null) {
18541853
internalTx.reject();
@@ -1911,9 +1910,9 @@ public boolean freezeBalanceV2(DataWord frozenBalance, DataWord resourceType) {
19111910
repository.commit();
19121911
return true;
19131912
} catch (ContractValidateException e) {
1914-
logger.error("TVM FreezeBalanceV2: validate failure. Reason: {}", e.getMessage());
1913+
logger.warn("TVM FreezeBalanceV2: validate failure. Reason: {}", e.getMessage());
19151914
} catch (ArithmeticException e) {
1916-
logger.error("TVM FreezeBalanceV2: frozenBalance out of long range.");
1915+
logger.warn("TVM FreezeBalanceV2: frozenBalance out of long range.");
19171916
}
19181917
if (internalTx != null) {
19191918
internalTx.reject();
@@ -1947,9 +1946,9 @@ public boolean unfreezeBalanceV2(DataWord unfreezeBalance, DataWord resourceType
19471946
}
19481947
return true;
19491948
} catch (ContractValidateException e) {
1950-
logger.error("TVM UnfreezeBalanceV2: validate failure. Reason: {}", e.getMessage());
1949+
logger.warn("TVM UnfreezeBalanceV2: validate failure. Reason: {}", e.getMessage());
19511950
} catch (ArithmeticException e) {
1952-
logger.error("TVM UnfreezeBalanceV2: balance out of long range.");
1951+
logger.warn("TVM UnfreezeBalanceV2: balance out of long range.");
19531952
}
19541953
if (internalTx != null) {
19551954
internalTx.reject();
@@ -1978,9 +1977,9 @@ public long withdrawExpireUnfreeze() {
19781977
}
19791978
return expireUnfreezeBalance;
19801979
} catch (ContractValidateException e) {
1981-
logger.error("TVM WithdrawExpireUnfreeze: validate failure. Reason: {}", e.getMessage());
1980+
logger.warn("TVM WithdrawExpireUnfreeze: validate failure. Reason: {}", e.getMessage());
19821981
} catch (ContractExeException e) {
1983-
logger.error("TVM WithdrawExpireUnfreeze: execute failure. Reason: {}", e.getMessage());
1982+
logger.warn("TVM WithdrawExpireUnfreeze: execute failure. Reason: {}", e.getMessage());
19841983
}
19851984
if (internalTx != null) {
19861985
internalTx.reject();
@@ -2011,9 +2010,9 @@ public boolean cancelAllUnfreezeV2Action() {
20112010
}
20122011
return true;
20132012
} catch (ContractValidateException e) {
2014-
logger.error("TVM CancelAllUnfreezeV2: validate failure. Reason: {}", e.getMessage());
2013+
logger.warn("TVM CancelAllUnfreezeV2: validate failure. Reason: {}", e.getMessage());
20152014
} catch (ContractExeException e) {
2016-
logger.error("TVM CancelAllUnfreezeV2: execute failure. Reason: {}", e.getMessage());
2015+
logger.warn("TVM CancelAllUnfreezeV2: execute failure. Reason: {}", e.getMessage());
20172016
}
20182017
if (internalTx != null) {
20192018
internalTx.reject();
@@ -2045,9 +2044,9 @@ public boolean delegateResource(
20452044
repository.commit();
20462045
return true;
20472046
} catch (ContractValidateException e) {
2048-
logger.error("TVM DelegateResource: validate failure. Reason: {}", e.getMessage());
2047+
logger.warn("TVM DelegateResource: validate failure. Reason: {}", e.getMessage());
20492048
} catch (ArithmeticException e) {
2050-
logger.error("TVM DelegateResource: balance out of long range.");
2049+
logger.warn("TVM DelegateResource: balance out of long range.");
20512050
}
20522051
if (internalTx != null) {
20532052
internalTx.reject();
@@ -2079,9 +2078,9 @@ public boolean unDelegateResource(
20792078
repository.commit();
20802079
return true;
20812080
} catch (ContractValidateException e) {
2082-
logger.error("TVM UnDelegateResource: validate failure. Reason: {}", e.getMessage());
2081+
logger.warn("TVM UnDelegateResource: validate failure. Reason: {}", e.getMessage());
20832082
} catch (ArithmeticException e) {
2084-
logger.error("TVM UnDelegateResource: balance out of long range.");
2083+
logger.warn("TVM UnDelegateResource: balance out of long range.");
20852084
}
20862085
if (internalTx != null) {
20872086
internalTx.reject();
@@ -2114,7 +2113,7 @@ private Common.ResourceCode parseResourceCodeV2(DataWord resourceType) {
21142113
return Common.ResourceCode.UNRECOGNIZED;
21152114
}
21162115
} catch (ArithmeticException e) {
2117-
logger.error("TVM ParseResourceCodeV2: invalid resource code: {}", resourceType.sValue());
2116+
logger.warn("TVM ParseResourceCodeV2: invalid resource code: {}", resourceType.sValue());
21182117
return Common.ResourceCode.UNRECOGNIZED;
21192118
}
21202119
}
@@ -2180,11 +2179,11 @@ public boolean voteWitness(int witnessArrayOffset, int witnessArrayLength,
21802179
repository.commit();
21812180
return true;
21822181
} catch (ContractValidateException e) {
2183-
logger.error("TVM VoteWitness: validate failure. Reason: {}", e.getMessage());
2182+
logger.warn("TVM VoteWitness: validate failure. Reason: {}", e.getMessage());
21842183
} catch (ContractExeException e) {
2185-
logger.error("TVM VoteWitness: execute failure. Reason: {}", e.getMessage());
2184+
logger.warn("TVM VoteWitness: execute failure. Reason: {}", e.getMessage());
21862185
} catch (ArithmeticException e) {
2187-
logger.error("TVM VoteWitness: int or long out of range. caused by: {}", e.getMessage());
2186+
logger.warn("TVM VoteWitness: int or long out of range. caused by: {}", e.getMessage());
21882187
}
21892188
if (internalTx != null) {
21902189
internalTx.reject();
@@ -2213,9 +2212,9 @@ public long withdrawReward() {
22132212
}
22142213
return allowance;
22152214
} catch (ContractValidateException e) {
2216-
logger.error("TVM WithdrawReward: validate failure. Reason: {}", e.getMessage());
2215+
logger.warn("TVM WithdrawReward: validate failure. Reason: {}", e.getMessage());
22172216
} catch (ContractExeException e) {
2218-
logger.error("TVM WithdrawReward: execute failure. Reason: {}", e.getMessage());
2217+
logger.warn("TVM WithdrawReward: execute failure. Reason: {}", e.getMessage());
22192218
}
22202219
if (internalTx != null) {
22212220
internalTx.reject();

framework/src/main/java/org/tron/core/Wallet.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3027,13 +3027,12 @@ public Transaction callConstantContract(TransactionCapsule trxCap,
30273027
if (!isEstimating && result.getException() != null
30283028
|| result.getException() instanceof Program.OutOfTimeException) {
30293029
RuntimeException e = result.getException();
3030-
logger.warn("Constant call has an error {}", e.getMessage());
3030+
logger.warn("Constant call failed for reason: {}", e.getMessage());
30313031
throw e;
30323032
}
30333033

30343034
TransactionResultCapsule ret = new TransactionResultCapsule();
30353035
builder.setEnergyUsed(result.getEnergyUsed());
3036-
builder.setEnergyPenalty(result.getEnergyPenaltyTotal());
30373036
builder.setBlockNumber(headBlockCapsule.getNum());
30383037
builder.setBlockHash(ByteString.copyFrom(headBlockCapsule.getBlockId().getBytes()));
30393038
builder.setEnergyPenalty(result.getEnergyPenaltyTotal());
@@ -3865,7 +3864,7 @@ private boolean isShieldedTRC20NoteSpent(GrpcAPI.Note note, long pos, byte[] ak,
38653864
retBuilder.setResult(false).setCode(response_code.CONTRACT_EXE_ERROR)
38663865
.setMessage(ByteString.copyFromUtf8(e.getClass() + " : " + e.getMessage()));
38673866
trxExtBuilder.setResult(retBuilder);
3868-
logger.warn("When run constant call in VM, have RuntimeException: " + e.getMessage());
3867+
logger.warn("When run constant call in VM, failed for reason: " + e.getMessage());
38693868
} catch (Exception e) {
38703869
retBuilder.setResult(false).setCode(response_code.OTHER_ERROR)
38713870
.setMessage(ByteString.copyFromUtf8(e.getClass() + " : " + e.getMessage()));
@@ -4129,7 +4128,7 @@ private byte[] getShieldedContractScalingFactor(byte[] contractAddress)
41294128
retBuilder.setResult(false).setCode(response_code.CONTRACT_EXE_ERROR)
41304129
.setMessage(ByteString.copyFromUtf8(e.getClass() + " : " + e.getMessage()));
41314130
trxExtBuilder.setResult(retBuilder);
4132-
logger.warn("When run constant call in VM, have RuntimeException: " + e.getMessage());
4131+
logger.warn("When run constant call in VM, failed for reason: " + e.getMessage());
41334132
} catch (Exception e) {
41344133
retBuilder.setResult(false).setCode(response_code.OTHER_ERROR)
41354134
.setMessage(ByteString.copyFromUtf8(e.getClass() + " : " + e.getMessage()));

framework/src/main/java/org/tron/core/services/RpcApiService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ private void callContract(TriggerSmartContract request,
298298
retBuilder.setResult(false).setCode(response_code.CONTRACT_EXE_ERROR)
299299
.setMessage(ByteString.copyFromUtf8(e.getClass() + " : " + e.getMessage()));
300300
trxExtBuilder.setResult(retBuilder);
301-
logger.warn("When run constant call in VM, have RuntimeException: " + e.getMessage());
301+
logger.warn("When run constant call in VM, failed for reason: " + e.getMessage());
302302
} catch (Exception e) {
303303
retBuilder.setResult(false).setCode(response_code.OTHER_ERROR)
304304
.setMessage(ByteString.copyFromUtf8(e.getClass() + " : " + e.getMessage()));
@@ -1886,7 +1886,7 @@ private void callContract(TriggerSmartContract request,
18861886
retBuilder.setResult(false).setCode(response_code.CONTRACT_EXE_ERROR)
18871887
.setMessage(ByteString.copyFromUtf8(e.getClass() + " : " + e.getMessage()));
18881888
trxExtBuilder.setResult(retBuilder);
1889-
logger.warn("When run constant call in VM, have Runtime Exception: " + e.getMessage());
1889+
logger.warn("When run constant call in VM, failed for reason: " + e.getMessage());
18901890
} catch (Exception e) {
18911891
retBuilder.setResult(false).setCode(response_code.OTHER_ERROR)
18921892
.setMessage(ByteString.copyFromUtf8(e.getClass() + " : " + e.getMessage()));

framework/src/main/java/org/tron/core/services/http/TriggerSmartContractServlet.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,6 @@ private void validateParameter(String contract) {
4141
if (StringUtil.isNullOrEmpty(jsonObject.getString(Util.CONTRACT_ADDRESS))) {
4242
throw new InvalidParameterException(Util.CONTRACT_ADDRESS + " isn't set.");
4343
}
44-
if (!StringUtil.isNullOrEmpty(jsonObject.getString(Util.FUNCTION_SELECTOR))
45-
^ StringUtil.isNullOrEmpty(jsonObject.getString(Util.CALL_DATA))) {
46-
throw new InvalidParameterException("Only one of "
47-
+ Util.FUNCTION_SELECTOR + " and " + Util.CALL_DATA + " can be set.");
48-
}
4944
}
5045

5146
protected void doPost(HttpServletRequest request, HttpServletResponse response)

framework/src/main/java/org/tron/core/services/http/Util.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,7 @@ public static List<Log> convertLogAddressToTronAddress(TransactionInfo transacti
547547
* Validate parameters for trigger constant and estimate energy
548548
* - Rule-1: owner address must be set
549549
* - Rule-2: either contract address is set or call data is set
550-
* - Rule-3: only one of function selector and call data can be set
550+
* - Rule-3: if try to deploy, function selector and call data can not be both set
551551
* @param contract parameters in json format
552552
* @throws InvalidParameterException if validation is not passed, this kind of exception is thrown
553553
*/
@@ -561,10 +561,11 @@ public static void validateParameter(String contract) throws InvalidParameterExc
561561
throw new InvalidParameterException("At least one of "
562562
+ CONTRACT_ADDRESS + " and " + CALL_DATA + " must be set.");
563563
}
564-
if (!StringUtils.isEmpty(jsonObject.getString(FUNCTION_SELECTOR))
565-
^ StringUtils.isEmpty(jsonObject.getString(CALL_DATA))) {
566-
throw new InvalidParameterException("Only one of "
567-
+ FUNCTION_SELECTOR + " and " + CALL_DATA + " can be set.");
564+
if (StringUtils.isEmpty(jsonObject.getString(CONTRACT_ADDRESS))
565+
&& !StringUtils.isEmpty(jsonObject.getString(FUNCTION_SELECTOR))
566+
&& !StringUtils.isEmpty(jsonObject.getString(CALL_DATA))) {
567+
throw new InvalidParameterException("While trying to deploy, "
568+
+ FUNCTION_SELECTOR + " and " + CALL_DATA + " can not be both set.");
568569
}
569570
}
570571

0 commit comments

Comments
 (0)