diff options
-rw-r--r-- | src/operations/exchanges.ts | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/operations/exchanges.ts b/src/operations/exchanges.ts index ca8c94ecc..89f89ec10 100644 --- a/src/operations/exchanges.ts +++ b/src/operations/exchanges.ts @@ -39,8 +39,12 @@ import { OperationFailedAndReportedError, guardOperationException, } from "./errors"; -import { WALLET_CACHE_BREAKER_CLIENT_VERSION } from "./versions"; +import { + WALLET_CACHE_BREAKER_CLIENT_VERSION, + WALLET_EXCHANGE_PROTOCOL_VERSION, +} from "./versions"; import { getTimestampNow } from "../util/time"; +import { compare } from "../util/libtoolVersion"; async function denominationRecordFromKeys( ws: InternalWalletState, @@ -161,6 +165,20 @@ async function updateExchangeWithKeys( throw new OperationFailedAndReportedError(m); } + const versionRes = compare(WALLET_EXCHANGE_PROTOCOL_VERSION, protocolVersion); + if (versionRes?.compatible != true) { + const m = "exchange protocol version not compatible with wallet"; + await setExchangeError(ws, baseUrl, { + type: "protocol-incompatible", + details: { + exchangeProtocolVersion: protocolVersion, + walletProtocolVersion: WALLET_EXCHANGE_PROTOCOL_VERSION, + }, + message: m, + }); + throw new OperationFailedAndReportedError(m); + } + const currency = Amounts.parseOrThrow(exchangeKeysJson.denoms[0].value) .currency; |