Prop AMM Teardown
The wall#43 other closed program

Stableswap

ghosty4ZU1Qk1HN7Ymz4pZ15QfspzJZgSYFkdKN6ZLKSolscan
0.00
USDC in the pot
0
backers
0
attempts
est. 1,578
transactions in 24 h
Chip in

USDC goes to this target's escrow with the Memo teardown:chip:ghos…6ZLK. You can take your share back any time before a PASS.

The wallet opens only when you click. Minimum 5 USDC.

Escrow CaYctY…eTQ26d · USDC account JSQAd2…oue1Py

print of ELF sha256 45d0063bc7a98d62…, lock at 0.00% match

Snapshot.
Read from mainnet and frozen for this deploy slot.

Loader
Upgradeable loader (v3)
Program data
Upgrade authority
Last deploy slot
425,370,986
ELF sha256
45d0063bc7a98d62989f182378937da3b9be60da4c2aafcefb3243c5cfebd7b6
ELF size
507,888 bytes (496.0 KB)
Snapshot taken
2026-11-02 16:45 UTC
OtterSec verify
no verified build
Corpus
built by the judge machine: up to 1,000 recent mainnet instructions and 10,000 fuzzed variants; the real N is printed once it exists

Teardown kit.
Computed from the ELF and recent transactions, no AI. Hunters start here.

53,956
sBPF instructions in .text
411
functions reached by internal calls
2,750
internal call sites
12
syscalls used

Sections

.text455,752
.rodata16,424
.data.rel.ro6,496
.dynamic176
.dynsym360
.dynstr222
.rel.dyn27,520
.shstrtab72

Syscalls

abortsol_create_program_addresssol_get_clock_sysvarsol_get_rent_sysvarsol_invoke_signed_rustsol_log_sol_log_pubkeysol_memcmp_sol_memcpy_sol_memset_sol_sha256sol_try_find_program_address

sBPF flags 0, names read from .dynsym

Largest functions

Offset in .textBytes
0x2a62018,408
0x1a1a014,872
0x1651813,472
0x34b5013,208
0x2fa8011,512
0xe0b810,384
0x279109,848
0x126209,568
0x5f9c09,256
0x1dbb88,952
0x42fb88,704
0x37ee86,976

Strings in .rodata (43)

Amount must be greater than zeroThe given account is not mutableInstruction: RemoveFromWhitelist
programs/stableswap/src/state.rsindex out of bounds: the len is AccountNotAssociatedTokenAccount
RefCell already mutably borrowedA signer constraint was violatedAn owner constraint was violatedProgramError caused by account: src/lib.rs
/Users/runner/work/platform-tools/platform-tools/out/rust/library/alloc/src/collections/btree/navigate.rs
library/alloc/src/fmt.rs
library/alloc/src/string.rs
src/bpf_writer.rs
library/alloc/src/raw_vec/mod.rs
programs/stableswap/src/state.rs
src/instruction.rs
/Users/runner/work/platform-tools/platform-tools/out/rust/library/alloc/src/raw_vec/mod.rs
src/de/mod.rs
src/extension/mod.rs
programs/stableswap/src/instructions/swap.rs
src/state.rs
library/core/src/unicode/printable.rs
/Users/runner/work/platform-tools/platform-tools/out/rust/library/alloc/src/slice.rs
src/internal.rs
library/core/src/str/mod.rs
src/common.rs
library/alloc/src/slice.rs
library/core/src/fmt/mod.rs
/Users/runner/work/platform-tools/platform-tools/out/rust/library/alloc/src/string.rs
programs/stableswap/src/lib.rs
src/encode.rs
src/ser/mod.rs
/Users/runner/work/platform-tools/platform-tools/out/rust/library/core/src/iter/traits/accum.rs
failed to fill whole buffer()a Display implementation returned an error unexpectedlyUnexpected length of inputInvalid bool representation: ErrorMaxSeedLengthExceededInvalidSeedsIllegalOwnerTryFromIntErrorUnexpected varia…
Kindfromkind
programs/stableswap/src/instructions/add_pair.rsprograms/stableswap/src/instructions/add_token.rsprograms/stableswap/src/instructions/deposit.rsprograms/stableswap/src/instructions/remove_pair.rsexchange_stateprograms/st…
ConstraintHasOneConstraintSigner) when slicing `range end index . Error Number:
AccountNotSignerPermissionDeniedAddrNotAvailabletoken_program_in0123456789abcdefInvalidProgramIdExchange is currently frozenInsufficient liquidity in vaultMint decimals must be 6 for stablecoinsInvalid mint providedSlipp…
(bytes Deadlock
called `Result::unwrap()` on an `Err` valueInstruction: IdlCreateAccountanchor:idlInstruction: IdlResizeAccountdata_len should always be >= the current account spaceInstruction: IdlCloseAccountInstruction: IdlCreateBuffe…
a Display implementation returned an error unexpectedlyErrorMaxSeedLengthExceededInvalidSeedsIllegalOwnerCustomInvalidArgumentInvalidInstructionDataInvalidAccountDataAccountDataTooSmallInsufficientFundsIncorrectProgramId…
The arguments provided to a program instruction were invalidAn instruction's data contents was invalidAn account's data contents was invalidAn account's data was too smallAn account's balance was too small to complete th…
Errorcapacity overflowa formatting trait implementation returned an error when the underlying stream did not
attempt to add with overflowattempt to subtract with overflowattempt to multiply with overflow)..RefCell already borrowed:called `Option::unwrap()` on a `None` valuepanicked at :
but the index is : { , {
,0x00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899[...]begin <= end…
)14:EFIJNOde
INOWY^_
range start index out of range for slice of length slice index starts at but ends at copy_from_slice: source slice length () does not match destination slice length (

Instruction sample

Sampling recent transactions: the cron reads a few at a time from public RPC.

Full kit from the judge

Disassembly, discriminator map over the full corpus, writable and signer patterns, account sizes and owners, CPI targets: computed by the judge machine for this snapshot and published here.

Pot.
Every transfer in and out of the escrow, read from Solana.

0 USDC, no backers yet. The first chip-in opens this pot.

Attempts.
Match percentages and hashes. The source stays encrypted until the verdict.

No attempts yet. Submit a rebuild.

Upgrade history.
One snapshot per deploy slot. A submission is judged against the snapshot it targeted.

Deploy slotELF sha256SizeTaken
425,370,98645d0063bc7a98d62989f182378937da3b9be60da4c2aafcefb3243c5cfebd7b6496.0 KB2026-11-02 16:45 UTC