Skip to content

Commit bc2733e

Browse files
authored
fix: return 32-byte block hash from eth_getFilterChanges to ensure EVM compatibility (#3863)
Signed-off-by: Javier Roman <[email protected]>
1 parent e2b5f79 commit bc2733e

File tree

3 files changed

+25
-12
lines changed

3 files changed

+25
-12
lines changed

packages/relay/src/lib/services/ethService/ethFilterService/FilterService.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { ConfigService } from '@hashgraph/json-rpc-config-service/dist/services';
44
import { Logger } from 'pino';
55

6-
import { generateRandomHex } from '../../../../formatters';
6+
import { generateRandomHex, toHash32 } from '../../../../formatters';
77
import { MirrorNodeClient } from '../../../clients';
88
import constants from '../../../constants';
99
import { JsonRpcError, predefined } from '../../../errors/JsonRpcError';
@@ -278,7 +278,7 @@ export class FilterService implements IFilterService {
278278
: await this.common.getLatestBlockNumber(requestDetails),
279279
);
280280

281-
const result = blockResponse?.blocks?.map((r) => r.hash) || [];
281+
const result = blockResponse?.blocks?.map((r) => toHash32(r.hash)) || [];
282282

283283
return { result, latestBlockNumber };
284284
}

packages/relay/tests/lib/services/eth/filter.spec.ts

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import {
2222
toHex,
2323
withOverriddenEnvsInMochaTest,
2424
} from '../../../helpers';
25-
import { generateEthTestEnv } from '../../eth/eth-helpers';
2625

2726
const logger = pino({ level: 'silent' });
2827
const registry = new Registry();
@@ -542,9 +541,21 @@ describe('Filter API Test Suite', async function () {
542541
200,
543542
JSON.stringify({
544543
blocks: [
545-
{ ...defaultBlock, number: defaultBlock.number + 1, hash: '0x1' },
546-
{ ...defaultBlock, number: defaultBlock.number + 2, hash: '0x2' },
547-
{ ...defaultBlock, number: defaultBlock.number + 3, hash: '0x3' },
544+
{
545+
...defaultBlock,
546+
number: defaultBlock.number + 1,
547+
hash: '0x814c4894b0d8894966d79d6c22bee808bdf4150a9202cc82e97800b7dc540119cb84fcf5723e0d312322972551f2f6f3',
548+
},
549+
{
550+
...defaultBlock,
551+
number: defaultBlock.number + 2,
552+
hash: '0x6caf6ddba4d214b1c4bf5285950335df17499bb7f9a43929935181bc04c0a6193997e56fcaebbcae23a8f65b53df2c6c',
553+
},
554+
{
555+
...defaultBlock,
556+
number: defaultBlock.number + 3,
557+
hash: '0x08bac9fc00f257cba1215929cb19355c4ee08679c78e387ca0720142d50758925a0f5283c02dfa3fb37317116f0bc2a2',
558+
},
548559
],
549560
}),
550561
);
@@ -562,12 +573,14 @@ describe('Filter API Test Suite', async function () {
562573
);
563574

564575
const result = await filterService.getFilterChanges(existingFilterId, requestDetails);
565-
566576
expect(result).to.exist;
567577
expect(result.length).to.eq(3, 'returns correct number of blocks');
568-
expect(result[0]).to.eq('0x1', 'result is in ascending order');
569-
expect(result[1]).to.eq('0x2');
570-
expect(result[2]).to.eq('0x3');
578+
expect(result[0]).to.eq(
579+
'0x814c4894b0d8894966d79d6c22bee808bdf4150a9202cc82e97800b7dc540119',
580+
'result is in ascending order',
581+
);
582+
expect(result[1]).to.eq('0x6caf6ddba4d214b1c4bf5285950335df17499bb7f9a43929935181bc04c0a619');
583+
expect(result[2]).to.eq('0x08bac9fc00f257cba1215929cb19355c4ee08679c78e387ca0720142d5075892');
571584

572585
const secondResult = await filterService.getFilterChanges(existingFilterId, requestDetails);
573586
expect(secondResult).to.exist;

packages/server/tests/acceptance/rpc_batch3.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1091,14 +1091,14 @@ describe('@api-batch-3 RPC Server Acceptance Tests', function () {
10911091
expect(result.length).to.gt(0, 'returns the latest block hashes');
10921092

10931093
result.forEach((hash: string) => {
1094-
expect(RelayAssertions.validateHash(hash, 96)).to.eq(true);
1094+
expect(RelayAssertions.validateHash(hash, 64)).to.eq(true);
10951095
});
10961096

10971097
await new Promise((r) => setTimeout(r, 2000));
10981098
const result2 = await relay.call(RelayCalls.ETH_ENDPOINTS.ETH_GET_FILTER_CHANGES, [filterId], requestId);
10991099
expect(result2).to.exist;
11001100
expect(result2.length).to.be.greaterThanOrEqual(1);
1101-
expect(RelayAssertions.validateHash(result2[0], 96)).to.eq(true);
1101+
expect(RelayAssertions.validateHash(result2[0], 64)).to.eq(true);
11021102
});
11031103
});
11041104

0 commit comments

Comments
 (0)