diff --git a/services/token-aggregation/src/config/chain138-rpc.ts b/services/token-aggregation/src/config/chain138-rpc.ts index a153ee2..6121864 100644 --- a/services/token-aggregation/src/config/chain138-rpc.ts +++ b/services/token-aggregation/src/config/chain138-rpc.ts @@ -6,7 +6,7 @@ export const CHAIN138_PUBLIC_RPC_URLS = [ ] as const; const DEFAULT_CHAIN138_PUBLIC_RPC_URL = CHAIN138_PUBLIC_RPC_URLS[0]; -const DEFAULT_CHAIN138_SERVER_RPC_URL = 'http://192.168.11.221:8545'; +const DEFAULT_CHAIN138_SERVER_RPC_URL = 'http://192.168.11.235:8545'; /** HTTPS FQDN for wallets, MetaMask, and browser JSON-RPC (same on LAN and external). */ export function resolveChain138PublicRpcUrl(): string { diff --git a/services/token-aggregation/src/services/chain138-ho-reserve-coverage.test.ts b/services/token-aggregation/src/services/chain138-ho-reserve-coverage.test.ts index d4ea935..a18cab9 100644 --- a/services/token-aggregation/src/services/chain138-ho-reserve-coverage.test.ts +++ b/services/token-aggregation/src/services/chain138-ho-reserve-coverage.test.ts @@ -34,6 +34,17 @@ describe('evaluateHoReserveCoverage', () => { expect(row.coverageRatio).toBeCloseTo(2.78, 2); }); + it('marks sufficient with vacuous coverage when no c* is issued but reserve GL is funded', () => { + const row = evaluateHoReserveCoverage({ + reserveAssetsUsd: 1_150_000_000_000, + issuedCStarUsd: 0, + multiplier: 1.2, + }); + + expect(row.status).toBe('sufficient'); + expect(row.coverageRatio).toBeGreaterThanOrEqual(1); + }); + it('marks insufficient when reserve assets fall below 1.2× issued c* USD', () => { const row = evaluateHoReserveCoverage({ reserveAssetsUsd: 400_000_000_000, diff --git a/services/token-aggregation/src/services/chain138-ho-reserve-coverage.ts b/services/token-aggregation/src/services/chain138-ho-reserve-coverage.ts index 14f1258..84d43a6 100644 --- a/services/token-aggregation/src/services/chain138-ho-reserve-coverage.ts +++ b/services/token-aggregation/src/services/chain138-ho-reserve-coverage.ts @@ -116,15 +116,17 @@ export function evaluateHoReserveCoverage(input: { const formula = `coverageRatio = reserveAssetsUsd / (${multiplier} × issuedCStarUsd)`; if (input.issuedCStarUsd == null || !(input.issuedCStarUsd > 0)) { + const reserveAssetsUsd = input.reserveAssetsUsd ?? 0; + const vacuousCoverage = reserveAssetsUsd > 0; return { - status: 'pending', + status: vacuousCoverage ? 'sufficient' : 'pending', multiplier, headOfficeId, reserveAssetGlCodes, - reserveAssetsUsd: input.reserveAssetsUsd ?? 0, + reserveAssetsUsd, issuedCStarUsd: input.issuedCStarUsd ?? 0, requiredReserveUsd: 0, - coverageRatio: 0, + coverageRatio: vacuousCoverage ? 999 : 0, formula, policyId: policy.policyId, policyRef: policy.policyRef,