feat(relayer): add withdrawal simulation to relayer service

This commit is contained in:
casiojapi
2025-04-14 19:11:50 -03:00
parent 766c2ebdde
commit 3d33b3212a

View File

@@ -58,6 +58,14 @@ export class PrivacyPoolRelayer {
if (!isValidWithdrawalProof) {
throw ZkError.invalidProof();
}
// simulate tx before broadcasting
const simulationResult = await this.sdkProvider.simulateWithdrawal(req, chainId);
if (!simulationResult.success) {
const simulationError = simulationResult.error || "Unknown simulation failure";
throw BlockchainError.txSimulationError(`Relay simulation failed: ${simulationError}`);
}
const response = await this.broadcastWithdrawal(req, chainId);
await this.db.updateBroadcastedRequest(requestId, response.hash);