Non-custodial
Astrolabe never holds user keys.assemble returns a VersionedTransaction the client signs and
submits. A compromise of the API cannot move user funds — the worst case is a mispriced quote,
which the on-chain program’s own invariants reject (see below).
On-chain invariants (PropAMM)
The quote the API returns is bounded by what the program will settle:- Reciprocal round-trip guard. Every tier satisfies
bid_price × ask_price ≤ PRICE_SCALE², so a base → quote → base round trip can never mint value out of the vault. - Staleness gate. A quote older than the market’s
max_staleness_slotsis rejected on-chain, so the API can’t get a stale fill to land. - Size cap by tier. An input above the top tier is rejected, not clamped.
Quote farming & liquidity exhaustion
Informed by Augusto et al., Liquidity Exhaustion Attacks in Intent-Based Cross-Chain Bridges (arXiv:2602.17805), the same-chain RFQ desk applies:Reporting
Found a vulnerability? Email security@astrolabe.markets. Good-faith disclosure is appreciated. The same contact is embedded in the on-chain program’ssecurity.txt.