Security
Invia's security model is mechanical, not reputational. The program is immutable after deploy. The team has no key that can move funds, change fees, or pause the program. This page enumerates exactly what the team can and cannot do once the launch transaction lands.
What the team cannot do
What the team can do
The split is the point. Anything that affects user funds is in the program, and the program is locked. Anything around the program, UX, indexing, notifications, is normal software the team iterates on.
The four guarantees the program enforces
- Vault safety. Tokens in the asset vault and payment in the payment
vault can only move via
take_offer,cancel_offer, orexpire_offer. - Atomic settlement. A
take_offereither completes both legs and the fee skim in one transaction, or reverts with no state change. - Maker-only cancel.
cancel_offerrequires the maker's signature. No other party can close an open offer. - Permissionless expire only after deadline.
expire_offerchecks the current slot timestamp againstexpires_at. Calling it before the deadline reverts.
Audit
A security review is being completed before the mainnet deploy. The audit report and the verification proof for the deployed bytecode will both be linked from this page on launch day.
Disclosure
Found something? Please open a private security advisory on the GitHub repository:
https://github.com/invia-app/invia-app/security/advisories/newReports about the on-chain program take priority over reports about the frontend or the indexer. We confirm receipt within 72 hours and aim to ship a fix or mitigation within 14 days for valid program-level reports.
If you cannot use GitHub advisories, DM us on X (@invia_market) and we will move the conversation to a private channel. Please do not file public issues for unpatched vulnerabilities.
This page is the team's claim about what the program does. The program source is the ground truth. If you intend to size into Invia, read the ~300 lines of Rust before relying on what we wrote here.