From 9a4db50d258f1d06f9211f1bb7078f5a16233391 Mon Sep 17 00:00:00 2001 From: ugoocreates-pixel Date: Thu, 1 Oct 2026 10:23:24 -0700 Subject: [PATCH] Refuse appraisal startup when its payment asset differs from the SDK --- services/appraisal-api/package.json | 1 + services/appraisal-api/src/run.ts | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/services/appraisal-api/package.json b/services/appraisal-api/package.json index 62821cff..e596a399 100644 --- a/services/appraisal-api/package.json +++ b/services/appraisal-api/package.json @@ -17,6 +17,7 @@ }, "dependencies": { "@sub-rosa/logging": "workspace:*", + "@sub-rosa/sdk": "workspace:*", "@stellar/stellar-sdk": "^15.1.0", "@x402/core": "^2.14.0", "@x402/stellar": "^2.11.0" diff --git a/services/appraisal-api/src/run.ts b/services/appraisal-api/src/run.ts index 8f51c150..f3e20b7e 100644 --- a/services/appraisal-api/src/run.ts +++ b/services/appraisal-api/src/run.ts @@ -3,8 +3,26 @@ import { createLogger } from '@sub-rosa/logging'; const diagnostics = createLogger("services.appraisal-api.src.run"); import { configFromEnv } from "./config.js"; import { buildAppraisalServer } from "./server.js"; +import { assertAssetGuard, ASSET_FIXTURES } from "@sub-rosa/sdk/asset-config"; +import { validateContractNetwork } from "@sub-rosa/sdk/network"; +import { rpc } from "@stellar/stellar-sdk"; +import { DEFAULT_TOKEN_DECIMALS } from "@x402/stellar"; const config = configFromEnv(); + +assertAssetGuard({ + networkPassphrase: config.networkPassphrase!, + contractId: config.asset, + decimals: DEFAULT_TOKEN_DECIMALS, +}, ASSET_FIXTURES.valid.sac); + +const serverRpc = new rpc.Server(config.rpcUrl); +await validateContractNetwork(serverRpc, { + networkPassphrase: config.networkPassphrase!, + contractId: config.asset, + rpcUrl: config.rpcUrl +}); + const server = await buildAppraisalServer(config); server.listen(config.port, () => { diagnostics.info("sub-rosa-appraisal-api-on", `sub-rosa appraisal API on :${config.port} — POST /appraise costs ${config.price} on ${config.network}`);