Skip to content

Commit 1980f0b

Browse files
committed
fix: return null for genesis block in eth_getBlockReceipts
1 parent 6d4e244 commit 1980f0b

File tree

2 files changed

+6
-19
lines changed

2 files changed

+6
-19
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -849,7 +849,9 @@ private TransactionContext findTransactionContext(TransactionInfoList infoList,
849849
public List<TransactionReceipt> getBlockReceipts(String blockNumOrTag)
850850
throws JsonRpcInvalidParamsException, JsonRpcInternalException {
851851
Block block = wallet.getByJsonBlockId(blockNumOrTag);
852-
if (block == null) {
852+
853+
// block receipts not available: block is genesis, not produced yet, or pruned in light node
854+
if (block == null || block.getBlockHeader().getRawData().getNumber() == 0) {
853855
return null;
854856
}
855857

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

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -164,23 +164,6 @@ public void init() {
164164
dbManager.getTransactionStore()
165165
.put(transactionCapsule3.getTransactionId().getBytes(), transactionCapsule3);
166166

167-
blockCapsule0.getTransactions().forEach(tx -> {
168-
TransactionCapsule transactionCapsule = new TransactionCapsule(tx.getInstance());
169-
transactionCapsule.setBlockNum(blockCapsule0.getNum());
170-
dbManager.getTransactionStore()
171-
.put(transactionCapsule.getTransactionId().getBytes(), transactionCapsule);
172-
});
173-
174-
TransactionRetCapsule transactionRetCapsule0 = new TransactionRetCapsule();
175-
blockCapsule0.getTransactions().forEach(tx -> {
176-
TransactionInfoCapsule transactionInfoCapsule = new TransactionInfoCapsule();
177-
transactionInfoCapsule.setId(tx.getTransactionId().getBytes());
178-
transactionInfoCapsule.setBlockNumber(blockCapsule0.getNum());
179-
transactionRetCapsule0.addTransactionInfo(transactionInfoCapsule.getInstance());
180-
});
181-
dbManager.getTransactionRetStore().put(
182-
ByteArray.fromLong(blockCapsule0.getNum()), transactionRetCapsule0);
183-
184167
List<Protocol.TransactionInfo.Log> logs = new ArrayList<>();
185168
logs.add(Protocol.TransactionInfo.Log.newBuilder()
186169
.setAddress(ByteString.copyFrom("address1".getBytes()))
@@ -340,6 +323,8 @@ public void testGetBlockByNumber() {
340323
}
341324
Assert.assertEquals(ByteArray.toJsonHex(0L), blockResult.getNumber());
342325
Assert.assertEquals(ByteArray.toJsonHex(blockCapsule0.getNum()), blockResult.getNumber());
326+
Assert.assertEquals(blockResult.getTransactions().length,
327+
blockCapsule0.getTransactions().size());
343328

344329
// latest
345330
try {
@@ -1048,7 +1033,7 @@ public void testGetBlockReceipts() {
10481033

10491034
try {
10501035
List<TransactionReceipt> transactionReceiptList = tronJsonRpc.getBlockReceipts("earliest");
1051-
Assert.assertFalse(transactionReceiptList.isEmpty());
1036+
Assert.assertNull(transactionReceiptList);
10521037
} catch (JsonRpcInvalidParamsException | JsonRpcInternalException e) {
10531038
throw new RuntimeException(e);
10541039
}

0 commit comments

Comments
 (0)