From 20c1f9dfd135de92e34fc13752f6a5b089b51336 Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Wed, 20 Jul 2022 09:59:39 -0700 Subject: [PATCH 1/3] Complete eth_getStorageAt implementation Signed-off-by: Luke Lee --- packages/relay/src/index.ts | 2 +- packages/relay/src/lib/eth.ts | 5 +++++ packages/relay/tests/lib/eth.spec.ts | 3 ++- packages/server/src/server.ts | 3 +-- packages/server/tests/integration/server.spec.ts | 11 +++++++++++ 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/relay/src/index.ts b/packages/relay/src/index.ts index 160e0e86f..708928e6b 100644 --- a/packages/relay/src/index.ts +++ b/packages/relay/src/index.ts @@ -71,7 +71,7 @@ export interface Eth { getLogs(blockHash: string|null, fromBlock: string|null, toBlock: string|null, address: string|null, topics: any[]|null): Promise; - // getStorageAt(address: string, slot: string, blockNumber: string|null); + getStorageAt(address: string, slot: string, blockNumber: string|null): JsonRpcError; getTransactionByBlockHashAndIndex(hash: string, index: number): Promise; diff --git a/packages/relay/src/lib/eth.ts b/packages/relay/src/lib/eth.ts index 09dd9292b..328aa797e 100644 --- a/packages/relay/src/lib/eth.ts +++ b/packages/relay/src/lib/eth.ts @@ -427,6 +427,11 @@ export class EthImpl implements Eth { return predefined.UNSUPPORTED_METHOD; } + getStorageAt(address: string, slot: string, blockNumber: string | null): JsonRpcError { + this.logger.trace('getStorageAt()'); + return predefined.UNSUPPORTED_METHOD; + } + /** * Gets the balance of an account as of the given block. * diff --git a/packages/relay/tests/lib/eth.spec.ts b/packages/relay/tests/lib/eth.spec.ts index 6732354d8..fb7c2e449 100644 --- a/packages/relay/tests/lib/eth.spec.ts +++ b/packages/relay/tests/lib/eth.spec.ts @@ -1503,7 +1503,8 @@ describe('Eth', async function () { 'sign', 'sendTransaction', 'protocolVersion', - 'coinbase' + 'coinbase', + 'getStorageAt', ]; unsupportedMethods.forEach(method => { diff --git a/packages/server/src/server.ts b/packages/server/src/server.ts index c54b00810..1021a72ef 100644 --- a/packages/server/src/server.ts +++ b/packages/server/src/server.ts @@ -361,8 +361,7 @@ rpc.use('eth_getLogs', async (params: any) => { * returns: Value - The storage value */ rpc.use('eth_getStorageAt', async (params: any) => { - return logger.debug("eth_getStorageAt"); - //TODO + return logAndHandleResponse("eth_getStorageAt", () => relay.eth().getStorageAt(params?.[0], params?.[1], params?.[2])); }); /** diff --git a/packages/server/tests/integration/server.spec.ts b/packages/server/tests/integration/server.spec.ts index 8fd00adfe..05911b589 100644 --- a/packages/server/tests/integration/server.spec.ts +++ b/packages/server/tests/integration/server.spec.ts @@ -316,6 +316,17 @@ describe('RPC Server', async function() { BaseTest.unsupportedJsonRpcMethodChecks(res); }); + + it('should execute "eth_getStorageAt"', async function() { + const res = await this.testClient.post('/', { + 'id': '2', + 'jsonrpc': '2.0', + 'method': 'eth_getStorageAt', + 'params': [null] + }); + + BaseTest.unsupportedJsonRpcMethodChecks(res); + }); }); class BaseTest { From de7efdd7d3f5930dbfe84c5b64faaecb09dcc715 Mon Sep 17 00:00:00 2001 From: Luke Lee Date: Wed, 20 Jul 2022 10:39:56 -0700 Subject: [PATCH 2/3] address sonarcloud issues Signed-off-by: Luke Lee --- packages/relay/src/lib/eth.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/relay/src/lib/eth.ts b/packages/relay/src/lib/eth.ts index 328aa797e..142e0994a 100644 --- a/packages/relay/src/lib/eth.ts +++ b/packages/relay/src/lib/eth.ts @@ -427,7 +427,7 @@ export class EthImpl implements Eth { return predefined.UNSUPPORTED_METHOD; } - getStorageAt(address: string, slot: string, blockNumber: string | null): JsonRpcError { + getStorageAt(_address: string, _slot: string, _blockNumber: string | null): JsonRpcError { this.logger.trace('getStorageAt()'); return predefined.UNSUPPORTED_METHOD; } From 42d5f52cbba998551eac95e1a06294428b606a35 Mon Sep 17 00:00:00 2001 From: lukelee-sl Date: Wed, 20 Jul 2022 21:26:28 -0700 Subject: [PATCH 3/3] address code review comments Signed-off-by: lukelee-sl --- packages/relay/src/lib/eth.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/relay/src/lib/eth.ts b/packages/relay/src/lib/eth.ts index 142e0994a..7bedc9023 100644 --- a/packages/relay/src/lib/eth.ts +++ b/packages/relay/src/lib/eth.ts @@ -427,8 +427,8 @@ export class EthImpl implements Eth { return predefined.UNSUPPORTED_METHOD; } - getStorageAt(_address: string, _slot: string, _blockNumber: string | null): JsonRpcError { - this.logger.trace('getStorageAt()'); + getStorageAt(address: string, slot: string, blockNumber: string | null): JsonRpcError { + this.logger.trace('getStorageAt(address=%s, slot=%s, blockNumber=%s)', address, slot, blockNumber); return predefined.UNSUPPORTED_METHOD; }