diff --git a/packages/relay/src/lib/eth.ts b/packages/relay/src/lib/eth.ts index 122f9e0d60..0fca0b0ca9 100644 --- a/packages/relay/src/lib/eth.ts +++ b/packages/relay/src/lib/eth.ts @@ -702,7 +702,7 @@ export class EthImpl implements Eth { * @rpcParamValidationRules Applies JSON-RPC parameter validation according to the API specification * * @param {string} account The account to get the balance from - * @param {string | null} blockNumberOrTagOrHash The block number or tag or hash to get the balance from + * @param {string} blockNumberOrTagOrHash The block number or tag or hash to get the balance from * @param {RequestDetails} requestDetails The request details for logging and tracking * @returns {Promise} A promise that resolves to the balance of the account in hexadecimal format. */ @@ -714,11 +714,7 @@ export class EthImpl implements Eth { @cache(CacheService.getInstance(CACHE_LEVEL.L1), { skipParams: [{ index: '1', value: constants.NON_CACHABLE_BLOCK_PARAMS }], }) - async getBalance( - account: string, - blockNumberOrTagOrHash: string | null, - requestDetails: RequestDetails, - ): Promise { + async getBalance(account: string, blockNumberOrTagOrHash: string, requestDetails: RequestDetails): Promise { return this.accountService.getBalance(account, blockNumberOrTagOrHash, requestDetails); } diff --git a/packages/relay/src/lib/services/ethService/accountService/AccountService.ts b/packages/relay/src/lib/services/ethService/accountService/AccountService.ts index 5786767f3d..308d70d9ed 100644 --- a/packages/relay/src/lib/services/ethService/accountService/AccountService.ts +++ b/packages/relay/src/lib/services/ethService/accountService/AccountService.ts @@ -91,12 +91,12 @@ export class AccountService implements IAccountService { * Current implementation does not yet utilize blockNumber * * @param {string} account The account to get the balance from - * @param {string | null} blockNumberOrTagOrHash The block number or tag or hash to get the balance from + * @param {string} blockNumberOrTagOrHash The block number or tag or hash to get the balance from * @param {RequestDetails} requestDetails The request details for logging and tracking */ public async getBalance( account: string, - blockNumberOrTagOrHash: string | null, + blockNumberOrTagOrHash: string, requestDetails: RequestDetails, ): Promise { const requestIdPrefix = requestDetails.formattedRequestId; @@ -174,7 +174,7 @@ export class AccountService implements IAccountService { * @param requestDetails * @private */ - private async extractBlockNumberAndTimestamp(blockNumberOrTagOrHash: string | null, requestDetails: RequestDetails) { + private async extractBlockNumberAndTimestamp(blockNumberOrTagOrHash: string, requestDetails: RequestDetails) { let latestBlock: LatestBlockNumberTimestamp; const latestBlockTolerance = 1; let blockHashNumber, isHash; @@ -192,7 +192,7 @@ export class AccountService implements IAccountService { latestBlock = await this.blockNumberTimestamp(constants.ETH_GET_BALANCE, requestDetails); } - if (blockNumberOrTagOrHash != null && blockNumberOrTagOrHash.length > 32) { + if (blockNumberOrTagOrHash.length > 32) { isHash = true; blockHashNumber = await this.mirrorNodeClient.getBlock(blockNumberOrTagOrHash, requestDetails); } diff --git a/packages/relay/src/lib/services/ethService/accountService/IAccountService.ts b/packages/relay/src/lib/services/ethService/accountService/IAccountService.ts index 32ab9fd767..df11f98fa3 100644 --- a/packages/relay/src/lib/services/ethService/accountService/IAccountService.ts +++ b/packages/relay/src/lib/services/ethService/accountService/IAccountService.ts @@ -10,9 +10,5 @@ export interface IAccountService { requestDetails: RequestDetails, ) => Promise; - getBalance: ( - account: string, - blockNumberOrTagOrHash: string | null, - requestDetails: RequestDetails, - ) => Promise; + getBalance: (account: string, blockNumberOrTagOrHash: string, requestDetails: RequestDetails) => Promise; } diff --git a/packages/relay/tests/lib/eth/eth_getBalance.spec.ts b/packages/relay/tests/lib/eth/eth_getBalance.spec.ts index 040aa9bb3a..60068283bb 100644 --- a/packages/relay/tests/lib/eth/eth_getBalance.spec.ts +++ b/packages/relay/tests/lib/eth/eth_getBalance.spec.ts @@ -59,7 +59,7 @@ describe('@ethGetBalance using MirrorNode', async function () { restMock.onGet(BLOCKS_LIMIT_ORDER_URL).reply(200, JSON.stringify(MOCK_BLOCK_NUMBER_1000_RES)); restMock.onGet(`accounts/${CONTRACT_ADDRESS_1}?limit=100`).reply(200, JSON.stringify(MOCK_BALANCE_RES)); - const resBalance = await ethImpl.getBalance(CONTRACT_ADDRESS_1, null, requestDetails); + const resBalance = await ethImpl.getBalance(CONTRACT_ADDRESS_1, 'latest', requestDetails); expect(resBalance).to.equal(DEF_HEX_BALANCE); }); @@ -67,13 +67,13 @@ describe('@ethGetBalance using MirrorNode', async function () { restMock.onGet(BLOCKS_LIMIT_ORDER_URL).reply(200, JSON.stringify(MOCK_BLOCK_NUMBER_1000_RES)); restMock.onGet(`accounts/${CONTRACT_ADDRESS_1}?limit=100`).reply(200, JSON.stringify(MOCK_BALANCE_RES)); - const resBalance = await ethImpl.getBalance(CONTRACT_ADDRESS_1, null, requestDetails); + const resBalance = await ethImpl.getBalance(CONTRACT_ADDRESS_1, 'latest', requestDetails); expect(resBalance).to.equal(DEF_HEX_BALANCE); // next call should use cache restMock.onGet(`accounts/${CONTRACT_ADDRESS_1}?limit=100`).reply(404, {}); - const resBalanceCached = await ethImpl.getBalance(CONTRACT_ADDRESS_1, null, requestDetails); + const resBalanceCached = await ethImpl.getBalance(CONTRACT_ADDRESS_1, 'latest', requestDetails); expect(resBalanceCached).to.equal(resBalance); // Third call should return new number using mirror node @@ -91,7 +91,7 @@ describe('@ethGetBalance using MirrorNode', async function () { // expire cache, instead of waiting for ttl we clear it to simulate expiry faster. await cacheService.clear(requestDetails); - const resBalanceNew = await ethImpl.getBalance(CONTRACT_ADDRESS_1, null, requestDetails); + const resBalanceNew = await ethImpl.getBalance(CONTRACT_ADDRESS_1, 'latest', requestDetails); expect(newBalanceHex).to.equal(resBalanceNew); }); @@ -162,7 +162,7 @@ describe('@ethGetBalance using MirrorNode', async function () { restMock.onGet(`contracts/${CONTRACT_ADDRESS_1}`).reply(200, JSON.stringify(null)); restMock.onGet(`accounts/${CONTRACT_ADDRESS_1}?limit=100`).reply(404, JSON.stringify(NOT_FOUND_RES)); - const resBalance = await ethImpl.getBalance(CONTRACT_ADDRESS_1, null, requestDetails); + const resBalance = await ethImpl.getBalance(CONTRACT_ADDRESS_1, 'latest', requestDetails); expect(resBalance).to.equal(constants.ZERO_HEX); }); @@ -170,11 +170,11 @@ describe('@ethGetBalance using MirrorNode', async function () { restMock.onGet(BLOCKS_LIMIT_ORDER_URL).reply(200, JSON.stringify(MOCK_BLOCK_NUMBER_1000_RES)); restMock.onGet(`accounts/${CONTRACT_ADDRESS_1}?limit=100`).reply(200, JSON.stringify(MOCK_BALANCE_RES)); - const resNoCache = await ethImpl.getBalance(CONTRACT_ADDRESS_1, null, requestDetails); + const resNoCache = await ethImpl.getBalance(CONTRACT_ADDRESS_1, 'latest', requestDetails); restMock.onGet(`accounts/${CONTRACT_ADDRESS_1}?limit=100`).reply(404, NOT_FOUND_RES); - const resCached = await ethImpl.getBalance(CONTRACT_ADDRESS_1, null, requestDetails); + const resCached = await ethImpl.getBalance(CONTRACT_ADDRESS_1, 'latest', requestDetails); expect(resNoCache).to.equal(DEF_HEX_BALANCE); expect(resCached).to.equal(DEF_HEX_BALANCE); });