fix(bifrost): !4770 review follow-ups — signer-cache expiry config + UTXO canonical verify + gaia mempool cap

Follow-up to !4770 (merged) (already merged): the 5 review-thread fixes that were held out of that merge, landed separately. Cherry-pick of 4d3c27da79.

  • #1 (closed) (ursa9r) drop the redundant signercache.ResolveExpiry/DefaultExpiry fallback — config provides the 72h default, so per-chain getSignerCacheExpiry reads c.cfg.SignerCacheExpiry directly.
  • #2 (closed) (ursa9r) UTXO verifyFn now treats a txindex-retained tx in an orphaned block (>0 block hash, 0 confirmations) as absent, so an operator-gated (SkipSignerCache) expired outbound can re-sign after a reorg re-spends its inputs. Extracted utxoVerifyPresence + test.
  • #3 (closed) (ursa9r) already done — SKIPSIGNERCACHE registered in keeper_mimir.go.
  • #4 (closed) (ursa9r) TRON + SOL signer_cache_expiry set to 2h in config; Solana moved off the package const to config (mocknet keeps a 20s override via build tag).
  • #5 (closed) (huginn) gaia mempoolLookup limit 1000→100 (CometBFT caps per-page at 100); a busy Hub mempool yields LookupAmbiguous (fail-closed like XRP). Account-sequence absence check left as a follow-up.

Build: mainnet + mocknet clean; bifrost suites green (the config-pkg "no seed file" failure is pre-existing/env).

Merge request reports

Loading
Loading