diff --git a/services/appraisal-api/package.json b/services/appraisal-api/package.json index 62821cf..e596a39 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 8f51c15..f3e20b7 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}`);