[V135] Port the v1.135.0 release fixes to develop #check-lint-warning
Brings develop to the code running on mainnet at v1.135.0. These fixes were
released from the private repository and are live on mainnet, so they are now
published here. The tree matches the released code except the stagenet-only
ScheduledMigration body, which is not included.
Public stagenet and mainnet (both 1.133.0) contain none of these changes.
Consensus (x/mayachain)
- Require ed25519 validator consensus keys
- Bind aggregator metadata to observed-tx consensus
- Derive LastChainHeight from a Byzantine-safe observed height
- Make recovery swap IDs unique per failed TxOutItem
- MAYAName: bound affiliate graphs and isolate payout branches
- Accept tss-lib v3 keysign rounds 8 and 9; normalize keysign blame rounds
- TSS keygen: a failed keygen demotes only its own members
- BTC segwit addresses must decode and use the network HRP
- DASH: accept only payable destinations
Node, API and decoding
- Exit the process on consensus failure
- Bound transaction decode inputs (binary and JSON routes)
- Bound quote, query and address decoder inputs (including Cardano address decoding)
Bifrost, signer and TSS
- Reject bare multisig sender UTXOs for BTC, DASH and ZEC
- Record observed txs in EVM block meta at scan time
- Guard KUJI and THOR scanners against nil RPC responses
- Skip outbounds whose destination cannot be decoded (BTC, DASH)
- ZEC: retry shielded scans with persistent results, bound retry work
- Signer: persist the signing checkpoint on failure, hold the signing lane until a timed-out attempt finishes, act on the late attempt's outcome, fix lock map and constants cache races, log keysign timeouts instead of panicking
- TSS: validate the join-party leader's peer list, deterministic missing-share blame, recover tss-lib panics, handle an ecdsa keysign timeout before the first local message
Private MRs
Original reviews (private repository, access required):
- mayanode-private!19 ZEC shielded scan retries
- mayanode-private!20 MAYAName graph bounds and payout isolation
- mayanode-private!21 Transaction decode input bounds
- mayanode-private!22 Address and affiliate decoding bounds
- mayanode-private!23 Bifrost chain-client hardening
- mayanode-private!24 Signer and TSS hardening
- mayanode-private!25 Exit the process on consensus failure
- mayanode-private!26 Consensus hardening (address/script match, ed25519 keys, observed-tx consensus, LastChainHeight, recovery swap IDs)
- mayanode-private!28 Regression fixtures after the develop sync
- mayanode-private!29 tss-lib v3 keysign rounds 8 and 9
- mayanode-private!30 Failed-keygen demotion scope
- mayanode-private!31 BTC and DASH payable destinations
- mayanode-private!32 Short keysign round reporting from 1.135.0
Not included: mayanode-private!33 (stagenet-only ScheduledMigration body). Private !1 (merged)–!4 (merged), !6 (closed)–!10 (merged), !17 (merged) and !18 (closed) are already on develop.
Lint
#check-lint-warning: the frozen-function changes reported by
scripts/lint-versions.bash are the released v1.135.0 code, unchanged.
Regression fixtures are regenerated for the changed behaviour.