Skip to content

Commit b753741

Browse files
committed
feat(jsonrpc): eth_newFilter not supports finalized as block parameter
1 parent 8ca7085 commit b753741

File tree

3 files changed

+96
-2
lines changed

3 files changed

+96
-2
lines changed

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

Lines changed: 12 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";
@@ -1114,6 +1115,14 @@ public void disableInPBFT(String method) throws JsonRpcMethodNotFoundException {
11141115
}
11151116
}
11161117

1118+
public void disableFinalizedBlock(FilterRequest fr) throws JsonRpcInvalidParamsException {
1119+
// not supports finalized as block parameter
1120+
if (FINALIZED_STR.equalsIgnoreCase(fr.getFromBlock())
1121+
|| FINALIZED_STR.equalsIgnoreCase(fr.getToBlock())) {
1122+
throw new JsonRpcInvalidParamsException(INVALID_BLOCK_RANGE);
1123+
}
1124+
}
1125+
11171126
@Override
11181127
public TransactionJson buildTransaction(BuildArguments args)
11191128
throws JsonRpcInvalidParamsException, JsonRpcInvalidRequestException,
@@ -1234,6 +1243,9 @@ public String newFilter(FilterRequest fr) throws JsonRpcInvalidParamsException,
12341243
JsonRpcMethodNotFoundException {
12351244
disableInPBFT("eth_newFilter");
12361245

1246+
// not supports finalized as block parameter
1247+
disableFinalizedBlock(fr);
1248+
12371249
Map<String, LogFilterAndResult> eventFilter2Result;
12381250
if (getSource() == RequestSource.FULLNODE) {
12391251
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: 82 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,85 @@ public void testLogFilterWrapper() {
644644
Assert.assertEquals("Incorrect hex syntax", e.getMessage());
645645
}
646646
}
647+
648+
@Test
649+
public void testDisableFinalizedBlock() {
650+
651+
try {
652+
tronJsonRpc.disableFinalizedBlock(new FilterRequest(null, null, null, null, null));
653+
} catch (Exception e) {
654+
Assert.fail();
655+
}
656+
657+
try {
658+
tronJsonRpc.disableFinalizedBlock(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.disableFinalizedBlock(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.disableFinalizedBlock(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.disableFinalizedBlock(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.disableFinalizedBlock(
683+
new FilterRequest("finalized", "finalized", null, null, null));
684+
} catch (Exception e) {
685+
Assert.assertEquals("invalid block range params", e.getMessage());
686+
}
687+
}
688+
689+
@Test
690+
public void testNewFilterFinalizedBlock() {
691+
692+
try {
693+
tronJsonRpc.newFilter(new FilterRequest(null, null, null, null, null));
694+
} catch (Exception e) {
695+
Assert.fail();
696+
}
697+
698+
try {
699+
tronJsonRpc.newFilter(new FilterRequest("finalized", null, null, null, null));
700+
} catch (Exception e) {
701+
Assert.assertEquals("invalid block range params", e.getMessage());
702+
}
703+
704+
try {
705+
tronJsonRpc.newFilter(new FilterRequest(null, "finalized", null, null, null));
706+
} catch (Exception e) {
707+
Assert.assertEquals("invalid block range params", e.getMessage());
708+
}
709+
710+
try {
711+
tronJsonRpc.newFilter(new FilterRequest("finalized", "latest", null, null, null));
712+
} catch (Exception e) {
713+
Assert.assertEquals("invalid block range params", e.getMessage());
714+
}
715+
716+
try {
717+
tronJsonRpc.newFilter(new FilterRequest("0x1", "finalized", null, null, null));
718+
} catch (Exception e) {
719+
Assert.assertEquals("invalid block range params", e.getMessage());
720+
}
721+
722+
try {
723+
tronJsonRpc.newFilter(new FilterRequest("finalized", "finalized", null, null, null));
724+
} catch (Exception e) {
725+
Assert.assertEquals("invalid block range params", e.getMessage());
726+
}
727+
}
647728
}

0 commit comments

Comments
 (0)