Skip to content

Commit 70aa382

Browse files
Merge pull request #6238 from waynercheung/feat/disable_finalized
feat(jsonrpc): eth_newFilter not supports finalized as block parameter
2 parents 8ca7085 + 4e404ec commit 70aa382

File tree

3 files changed

+50
-2
lines changed

3 files changed

+50
-2
lines changed

framework/src/main/java/org/tron/core/services/jsonrpc/TronJsonRpcImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ public enum RequestSource {
138138
public static final String LATEST_STR = "latest";
139139
public static final String FINALIZED_STR = "finalized";
140140
public static final String TAG_PENDING_SUPPORT_ERROR = "TAG pending not supported";
141+
public static final String INVALID_BLOCK_RANGE = "invalid block range params";
141142

142143
private static final String JSON_ERROR = "invalid json request";
143144
private static final String BLOCK_NUM_ERROR = "invalid block number";
@@ -1234,6 +1235,12 @@ public String newFilter(FilterRequest fr) throws JsonRpcInvalidParamsException,
12341235
JsonRpcMethodNotFoundException {
12351236
disableInPBFT("eth_newFilter");
12361237

1238+
// not supports finalized as block parameter
1239+
if (FINALIZED_STR.equalsIgnoreCase(fr.getFromBlock())
1240+
|| FINALIZED_STR.equalsIgnoreCase(fr.getToBlock())) {
1241+
throw new JsonRpcInvalidParamsException(INVALID_BLOCK_RANGE);
1242+
}
1243+
12371244
Map<String, LogFilterAndResult> eventFilter2Result;
12381245
if (getSource() == RequestSource.FULLNODE) {
12391246
eventFilter2Result = eventFilter2ResultFull;

framework/src/main/java/org/tron/core/services/jsonrpc/filters/LogFilterWrapper.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.tron.core.services.jsonrpc.filters;
22

33
import static org.tron.common.math.Maths.min;
4+
import static org.tron.core.services.jsonrpc.TronJsonRpcImpl.INVALID_BLOCK_RANGE;
45

56
import com.google.protobuf.ByteString;
67
import lombok.Getter;
@@ -83,7 +84,7 @@ public LogFilterWrapper(FilterRequest fr, long currentMaxBlockNum, Wallet wallet
8384
toBlockSrc = Long.MAX_VALUE;
8485
}
8586
if (fromBlockSrc > toBlockSrc) {
86-
throw new JsonRpcInvalidParamsException("please verify: fromBlock <= toBlock");
87+
throw new JsonRpcInvalidParamsException(INVALID_BLOCK_RANGE);
8788
}
8889
}
8990
}

framework/src/test/java/org/tron/core/jsonrpc/JsonrpcServiceTest.java

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -605,7 +605,7 @@ public void testLogFilterWrapper() {
605605
LogFilterWrapper logFilterWrapper =
606606
new LogFilterWrapper(new FilterRequest("0x78", "0x14", null, null, null), 100, null);
607607
} catch (JsonRpcInvalidParamsException e) {
608-
Assert.assertEquals("please verify: fromBlock <= toBlock", e.getMessage());
608+
Assert.assertEquals("invalid block range params", e.getMessage());
609609
}
610610

611611
//fromBlock or toBlock is not hex num
@@ -644,4 +644,44 @@ public void testLogFilterWrapper() {
644644
Assert.assertEquals("Incorrect hex syntax", e.getMessage());
645645
}
646646
}
647+
648+
@Test
649+
public void testNewFilterFinalizedBlock() {
650+
651+
try {
652+
tronJsonRpc.newFilter(new FilterRequest(null, null, null, null, null));
653+
} catch (Exception e) {
654+
Assert.fail();
655+
}
656+
657+
try {
658+
tronJsonRpc.newFilter(new FilterRequest("finalized", null, null, null, null));
659+
} catch (Exception e) {
660+
Assert.assertEquals("invalid block range params", e.getMessage());
661+
}
662+
663+
try {
664+
tronJsonRpc.newFilter(new FilterRequest(null, "finalized", null, null, null));
665+
} catch (Exception e) {
666+
Assert.assertEquals("invalid block range params", e.getMessage());
667+
}
668+
669+
try {
670+
tronJsonRpc.newFilter(new FilterRequest("finalized", "latest", null, null, null));
671+
} catch (Exception e) {
672+
Assert.assertEquals("invalid block range params", e.getMessage());
673+
}
674+
675+
try {
676+
tronJsonRpc.newFilter(new FilterRequest("0x1", "finalized", null, null, null));
677+
} catch (Exception e) {
678+
Assert.assertEquals("invalid block range params", e.getMessage());
679+
}
680+
681+
try {
682+
tronJsonRpc.newFilter(new FilterRequest("finalized", "finalized", null, null, null));
683+
} catch (Exception e) {
684+
Assert.assertEquals("invalid block range params", e.getMessage());
685+
}
686+
}
647687
}

0 commit comments

Comments
 (0)