Add Monero (XMR) chain support with FROST threshold signing
Summary
Adds the thornode-side Monero (XMR) integration with FROST threshold signing.
This is the Thornode / Bifrost / simulation half of the work. The Rust-side signer and Serai-side changes are now tracked in thorchain/devops/serai!4 (merged).
The default XMR_FROST_SIGNER_IMAGE compose fallback tracks the org MR branch image registry.gitlab.com/thorchain/devops/serai/xmr-frost-signer:boonew-xmr-frost-signer.
Overview
This branch:
- wires XMR through
common, bifrost,x/thorchain, APIs, regression, and simulation - introduces a FROST keygen/signing path and uses it for the current THOR+XMR vault family
- hard-cuts XMR over to FROST-only routing/signing in handwritten Thornode/Bifrost logic; there is no XMR EDDSA fallback
- keeps the existing GG20/EDDSA behavior for non-XMR chains unchanged
- renames
XMRMonovaultKeygentoFrostKeygenso the type reflects the signing algorithm rather than assuming FROST will always mean "the XMR vault"
Scope
- XMR chain integration: address parsing/validation, inbound attribution, view key exposure, and unknown-sender/refund-safe handling for stealth-address inbounds.
- Vault/keygen model changes:
pub_key_frost,observed_monero_height, FROST keyshare backup/restore plumbing, and FROST pubkey exposure in vault/pubkey queries. - XMR outbound hardening: spent-output-ref propagation, consensus matching, non-signer co-attestation, deterministic outbound ordering, and wallet2-safe observation/signing behavior.
- XMR vault-family lifecycle: FROST keygen scheduling, churn/rotation handling, chain-aware vault selection, XMR-only migration targeting, and genesis/bootstrap handling for the current THOR+XMR vault family.
- XMR timing hardening: dedicated FROST keygen timeout plus wider XMR signing/observation windows for slow FROST plus confirmation paths.
Edited by Boone W