fix: redeemer executes via Gnosis Safe proxy wallet (same as MM bot)
redeemer.js was calling redeemPositions() directly from the EOA private key wallet. This is wrong for two reasons: 1. Conditional tokens are held in config.proxyWallet (Gnosis Safe), not in the EOA — so the EOA has nothing to redeem 2. No maxPriorityFeePerGas was set, causing Polygon's "gas tip below minimum" error (1.5 Gwei sent, 25 Gwei required) Fix: replace the direct contract call with execSafeCall() (exported from ctf.js), which is identical to the MM bot's redemption pattern: - encodes calldata and executes via Safe.execTransaction() - signed by the EOA, but msg.sender on-chain = proxy wallet - enforces 30 Gwei minimum priority fee for Polygon - retries up to 3x on transient RPC errors Also remove the now-unused NEG_RISK_CTF_ADDRESS local constant (CTF_ADDRESS and USDC_ADDRESS imported from ctf.js). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
e82c67824c
commit
ec2c948a00
+1
-1
@@ -105,7 +105,7 @@ let _txQueue = Promise.resolve();
|
||||
* Calls are serialized via an internal queue so nonces never collide.
|
||||
* Retries up to MAX_RETRIES times on transient errors.
|
||||
*/
|
||||
function execSafeCall(to, data, description = '') {
|
||||
export function execSafeCall(to, data, description = '') {
|
||||
// Enqueue: this call will only start after the previous one resolves/rejects
|
||||
const result = _txQueue.then(() => _doExecSafeCall(to, data, description));
|
||||
// Don't let a failure poison the queue for subsequent calls
|
||||
|
||||
Reference in New Issue
Block a user