From 5ac22b67af88e2c1bc535ef486e03c58b1609d11 Mon Sep 17 00:00:00 2001 From: ScottyPoi Date: Thu, 27 Feb 2025 17:53:58 -0700 Subject: [PATCH] RPC: add method ultralight_getPingPayload --- packages/cli/src/rpc/modules/ultralight.ts | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/rpc/modules/ultralight.ts b/packages/cli/src/rpc/modules/ultralight.ts index 7d42e0f4a..a669518f1 100644 --- a/packages/cli/src/rpc/modules/ultralight.ts +++ b/packages/cli/src/rpc/modules/ultralight.ts @@ -1,5 +1,5 @@ import { hexToBytes } from '@ethereumjs/util' -import { HistoryNetworkContentType, NetworkId, addRLPSerializedBlock } from 'portalnetwork' +import { HistoryNetworkContentType, NetworkId } from 'portalnetwork' import { INTERNAL_ERROR } from '../error-code.js' import { middleware, validators } from '../validators.js' @@ -22,6 +22,7 @@ const methods = [ 'ultralight_getNetworkDBSize', 'ultralight_pruneNetworkDB', 'ultralight_setNetworkStorage', + 'ultralight_getPingPayload' ] export class ultralight { @@ -64,6 +65,10 @@ export class ultralight { [validators.networkId], [validators.megabytes], ]) + this.getPingPayload = middleware(this.getPingPayload.bind(this), 1, [ + [validators.networkId], + [validators.extension] + ]) } async methods() { return methods @@ -196,4 +201,17 @@ export class ultralight { radius: '0x' + network.nodeRadius.toString(16), } } + async getPingPayload(params: [NetworkId, number]) { + const [networkId, extension] = params + const network = this._client.networks.get(networkId) + if (!network) { + throw { + code: INTERNAL_ERROR, + message: `Invalid network id ${networkId}`, + } + } + const payload = network.pingPongPayload(extension) + return payload + } + }