PROOF

The part you can check

Deployment, every admin power, every instruction, and the test numbers. All of it generated from the program's source at a named commit, not typed into a marketing page.

DEPLOYMENT

TREASURY8BqGog3UcVvwM8JdiRMsuUbZcJRZtEbRbcaQDqXKVyFP
DEALS CREATED1
NEW DEALSOPEN
UPGRADE AUTHORITYFVPQqueD2GVhHMrqtkU3P9rhdcN58BWZL5YVDMd2H3DE
EXPLORERSOLSCAN

CONSTANTS

FEE_BPS (lib.rs:27)50
BPS_DENOMINATOR (lib.rs:28)10,000
MIN_TERM_SECONDS (lib.rs:30)86,400
MAX_TERM_SECONDS (lib.rs:31)7,776,000

Constants in the program, not settings: none of them can be changed without deploying a new program.

ADMIN POWERS // ALL 2, EXHAUSTIVELY

INSTRUCTIONSRCMOVES USER FUNDS
set_treasury(treasury: Pubkey)55NO
set_paused(paused: bool)63NO

That is the complete list. Collateral leaves a vault through exactly three paths, each gated on the caller being that specific party: cancel and repay to the borrower, claim to the lender (lib.rs:202, lib.rs:237). Every deal closes its own accounts and returns their rent to the borrower (lib.rs:453).

EVERY INSTRUCTION

initialize (lib.rs:42)treasury: Pubkey
set_treasury (lib.rs:55)treasury: Pubkey
set_paused (lib.rs:63)paused: bool
fund_deal (lib.rs:143)no args
repay (lib.rs:197)no args
claim (lib.rs:233)no args
cancel (lib.rs:253)no args

20 named errors (lib.rs:648). Refused Token-2022 extensions: TransferHook, ConfidentialTransferMint, ConfidentialTransferFeeConfig, ConfidentialMintBurn, PermanentDelegate (lib.rs:343).

TESTS

TEST CASES, ALL PASSING89
CASES IN THE SHARED SUITE44
ENVIRONMENTS2: LOCAL VALIDATOR, LITESVM

The same suite runs against a local validator and against LiteSVM, whose clock can be moved so the deadline can be crossed. Numbers generated from the repository at 7c657b1.

GENERATED FROM program/ AT 7c657b1 // 4 CONSTANTS // 7 INSTRUCTIONS // 2 ADMIN POWERS