CONTRACT SECURITY SUITE · STELLAR MAINNET · CIRCLE USDC

Prove every payment boundary.
Trust the contract, not the caller.

This is the public evidence surface for Ackrate's Mainnet enforcement layer. MandateRegistry checks the caller, merchant, asset, budget, expiry, status, and sequence before Circle USDC moves. The SDK, model, interface, payment header, merchant, and RPC are treated as untrusted inputs.

34Mainnet contract tests
2Governed contracts
0Known deployed-code vulnerabilities
0Yanked deployed dependencies
ACKRATE GATE CHECK · LIVE EVIDENCE MODEL

A release pipeline built to stop on doubt.

Ackrate's gate-check engine evaluates source identity, contract surface, hostile paths, dependencies, reproducible artifacts, and live chain state as one evidence chain. A mismatch at any stage stops the release.

contract-gate / mainnet
$ ackrate-gate check --network mainnet --strict
SCANNING / SOURCEPASS
Exact commit + clean tree

Reviewed source identity is pinned before any release check begins.

Recorded evidence only · no synthetic pass states

Negative-path suite

Choose an attack path.

Each control below links to the exact Rust test that proves the contract response.

Published contract evidence

Unauthorized caller

Attempt

A different key tries to spend under a valid mandate.

Contract result

Rejected before value moves

Enforcement

MandateRegistry requires the stored agent authorization for every payment.

Exact Rust test
user_agent_and_revocation_authorizations_are_host_enforcedInspect source and snapshots

Enforcement boundary

Everything outside the registry is untrusted.

The interface and agent may propose a payment. Only the on-chain transaction can authorize, consume, and settle it. Failed authorization, validation, allowance, or transfer reverts the complete invocation.

Open full data flow
UNTRUSTEDWallet UI + agent

Proposes an exact merchant, asset, amount, and sequence.

UNTRUSTEDHTTP payment flow

Carries the challenge and proof; never becomes contract authority.

ENFORCEMENTMandateRegistry

Re-reads durable state, authenticates, checks, consumes, then transfers.

SETTLEMENTCircle USDC

Moves value only through the registry-bound allowance.

ATOMIC

State and value change together—or neither changes.

DURABLE

Every payment re-reads the current on-chain mandate.

RECOVERABLE

A paid receipt can recover delivery without paying twice.

Independent review trail

Start with the evidence, not the pitch.

View continuous checks

Dependency gate

Deployed contract graph is clear.

0known vulnerabilities
0yanked dependencies
PASSwarnings denied
PASSWASM graph policy

The previously detected vulnerable time package and yanked spin package were remediated. One accepted maintenance warning remains confined to host/test tooling; the gate fails if it enters either deployed WASM graph.

Source to chain

Exact identity, independently reproducible.

The manifest records source commits, artifact hashes, constructor values, contract state, deployment transactions, and the live contract identities used by the application.

Contract surface

The public contract surface is mapped.

Reads, mandate lifecycle calls, money-moving calls, emergency controls, policy changes, upgrades, and every timelock mutator are mapped to a named test or an explicit invariant in the threat model.

Inspect the function-by-function map
READ STATEget_schema_version · is_paused · is_asset_allowed · get_mandate
MANDATE LIFECYCLEregister_mandate · revoke_mandate · execute_payment
EMERGENCY + POLICYpause · unpause · set_asset_allowed
ACCESS + GOVERNANCEgrant_role · revoke_role · set_role_admin · upgrade
TIMELOCKschedule · execute · cancel · update_delay

SDK perimeter

Useful clients. Zero financial authority.

These packages make the safe path clear, but none can approve its own payment. The registry authenticates and re-checks every value-moving request, even if a package, application, or model is modified.

UNTRUSTED BY DESIGN

Reproduce locally

One command. The same repository gate.

git clone https://github.com/ackrate/ackrate-protocol-contracts.git cd ackrate-protocol-contracts ./scripts/security-scan.sh cargo fmt --manifest-path contracts/mainnet/mandate-registry/Cargo.toml --all -- --check cargo clippy --manifest-path contracts/mainnet/mandate-registry/Cargo.toml --all-targets -- -D warnings cargo test --manifest-path contracts/mainnet/mandate-registry/Cargo.toml cargo build --manifest-path contracts/mainnet/mandate-registry/Cargo.toml --target wasm32v1-none --release cargo fmt --manifest-path contracts/mainnet/timelock-controller/Cargo.toml --all -- --check cargo clippy --manifest-path contracts/mainnet/timelock-controller/Cargo.toml --all-targets -- -D warnings cargo test --manifest-path contracts/mainnet/timelock-controller/Cargo.toml cargo build --manifest-path contracts/mainnet/timelock-controller/Cargo.toml --target wasm32v1-none --release

This portable source gate checks dependencies, formatting, warnings-denied linting, all 34 Mainnet contract tests, and both WASM builds. The governed Mainnet workflow separately pins the release platform and verifies source, toolchain, interfaces, artifact hashes, provenance, and chain state.

Independent verification

Run the gate. Follow every claim to source.

The repository is organized so an external reviewer can reproduce the test and dependency gates, inspect every contract function, verify the trust boundaries, and compare the governed source and artifacts with Mainnet.

Open gate-check report