From 0e23e2f3dc58ec01425af7fe192b87817f9fbd6a Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Mon, 21 Jul 2025 17:15:53 +0530 Subject: [PATCH] Extract signer public key from tx hash --- src/app/api/registry/route.ts | 16 +++++++++++++++- src/app/page.tsx | 2 +- src/services/registry.ts | 3 +-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/app/api/registry/route.ts b/src/app/api/registry/route.ts index b144bdc..3d3f95e 100644 --- a/src/app/api/registry/route.ts +++ b/src/app/api/registry/route.ts @@ -145,7 +145,21 @@ export async function POST(request: NextRequest) { const body = await request.json(); url = body.url; txHash = body.txHash; - senderPublicKey = body.senderPublicKey; + + const tx = await connection.getParsedTransaction(txHash, 'confirmed'); + if (!tx) { + console.error("Transaction not found."); + return NextResponse.json({ + status: 'error', + message: 'Invalid tx hash' + }, { status: 400 }); + } + + const signerKeys = tx.transaction.message.accountKeys + .filter(k => k.signer) + .map(k => k.pubkey.toBase58()); + + senderPublicKey = signerKeys[0]; if (!url || !txHash) { return NextResponse.json({ diff --git a/src/app/page.tsx b/src/app/page.tsx index 0f1e461..eba62d2 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -53,7 +53,7 @@ export default function Home() { try { // Create the Laconic Registry record (payment verification is done in the API) - const result = await createApplicationDeploymentRequest(url, hash, solanaWalletState.publicKey); + const result = await createApplicationDeploymentRequest(url, hash); if (result.status === 'success') { setRecordId(result.id); diff --git a/src/services/registry.ts b/src/services/registry.ts index ff5cb68..3206ce9 100644 --- a/src/services/registry.ts +++ b/src/services/registry.ts @@ -3,7 +3,6 @@ import { CreateRecordResponse } from '../types'; export const createApplicationDeploymentRequest = async ( url: string, txHash: string, - senderPublicKey: string, ): Promise => { try { console.log(`Creating deployment request for URL: ${url} with transaction: ${txHash} using ${process.env.NEXT_PUBLIC_SOLANA_TOKEN_SYMBOL} payment`); @@ -14,7 +13,7 @@ export const createApplicationDeploymentRequest = async ( headers: { 'Content-Type': 'application/json', }, - body: JSON.stringify({ url, txHash, senderPublicKey }), + body: JSON.stringify({ url, txHash }), }); const result = await response.json();