Skip to content

Commit 15c78e8

Browse files
committed
fix: return 32-byte block hash from eth_getFilterChanges to ensure EVM compatibility
Signed-off-by: Javier Roman <[email protected]>
1 parent 8ef3c38 commit 15c78e8

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: '0x10x1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c',
548+
},
549+
{
550+
...defaultBlock,
551+
number: defaultBlock.number + 2,
552+
hash: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890',
553+
},
554+
{
555+
...defaultBlock,
556+
number: defaultBlock.number + 3,
557+
hash: '0xdeadbeefcafebabedeadbeefcafebabedeadbeefcafebabedeadbeefcafebabedeadbeefcafebabe',
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+
'0x10x1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f',
580+
'result is in ascending order',
581+
);
582+
expect(result[1]).to.eq('0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef123456789');
583+
expect(result[2]).to.eq('0xdeadbeefcafebabedeadbeefcafebabedeadbeefcafebabedeadbeefcafebab');
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)