Instruction
set_max_curve_depth
Hidden admin instruction (not in the public IDL) that sets a single byte, Global.max_curve_depth, to whatever u8 value the caller passes. Only the authority stored in the Global account can call it, and it must sign. There is no range check, it emits no event, and it moves no SOL or tokens. The new value is stored in the last byte of the Global account (offset 1087), which is currently 1. Its name and the CurveDepthExceeded error suggest it limits how deep curve-related operations can nest, but I did not trace where it is enforced.
- Discriminator
- 0x209a98db8e6cdaa5
- Calls in the sample
- 0
- Reproduced, seen by the agent
- —
- Reproduced, never shown to the agent
- —
2391emov64 r6, r52391fmov64 r9, r423920mov64 r8, r323921mov64 r7, r223922stxdw [r10-2464], r123923lddw r1, 0x1ae26e ; "Instruction: SetMaxCurveDepth"23925mov64 r2, 0x1d23926call sol_log_23927ldxdw r1, [r6-4088]23928jeq r1, 0x0, +84 ; -> 2397d23929ldxdw r1, [r6-4096]2392aldxb r1, [r1+0]2392bstxdw [r10-2472], r12392csth [r10-2402], 0xffff2392dstxdw [r10-2392], r92392estxdw [r10-2400], r82392fmov64 r1, r1023930add64 r1, -0x96223931stxdw [r10-4088], r123932mov64 r1, r1023933add64 r1, -0x4a823934mov64 r3, r1023935add64 r3, -0x96023936mov64 r5, r1023937mov64 r2, r723938call fn_2bd2c23939ldxdw r8, [r10-1184]2393aldxdw r6, [r10-1192]2393bldxb r9, [r10-1]2393cjeq r9, 0x2, +83 ; -> 239902393dmov64 r1, r102393eadd64 r1, -0x9402393fmov64 r2, r1023940add64 r2, -0x49823941mov64 r3, 0x49723942call fn_3536723943stxb [r10-1193], r923944stxdw [r10-2376], r823945stxdw [r10-2384], r623946ldxdw r1, [r10-2472]23947stxb [r10-1200], r123948mov64 r1, r1023949add64 r1, -0x9782394amov64 r2, r102394badd64 r2, -0x8e82394clddw r3, 0x1adff92394emov64 r4, r72394fcall fn_00e5223950mov64 r6, 0x223951ldxdw r2, [r10-2424]23952jeq r2, 0x2, +9 ; -> 2395c23953ldxdw r3, [r10-2416]23954mov64 r1, r1023955add64 r1, -0x98823956lddw r4, 0x1ad940 ; "global"23958mov64 r5, 0x623959call fn_005a92395aldxdw r8, [r10-2432]2395bldxdw r6, [r10-2440]2395cldxdw r1, [r10-2360]2395dldxdw r2, [r10-2368]2395eldxdw r3, [r2+0]2395fadd64 r3, -0x123960stxdw [r2+0], r323961jne r3, 0x0, +3 ; -> 2396523962ldxdw r3, [r2+8]23963add64 r3, -0x123964stxdw [r2+8], r323965ldxdw r2, [r1+0]23966add64 r2, -0x123967stxdw [r1+0], r223968jne r2, 0x0, +3 ; -> 2396c23969ldxdw r2, [r1+8]2396aadd64 r2, -0x12396bstxdw [r1+8], r22396cldxdw r1, [r10-2312]2396dldxdw r2, [r10-2320]2396eldxdw r3, [r2+0]2396fadd64 r3, -0x123970stxdw [r2+0], r323971jne r3, 0x0, +3 ; -> 2397523972ldxdw r3, [r2+8]23973add64 r3, -0x123974stxdw [r2+8], r323975ldxdw r2, [r1+0]23976add64 r2, -0x123977stxdw [r1+0], r223978jne r2, 0x0, +23 ; -> 2399023979ldxdw r2, [r1+8]2397aadd64 r2, -0x12397bstxdw [r1+8], r22397cja +19 ; -> 239902397dlddw r1, 0x1b3c602397fcall fn_33e7123980mov64 r1, r023981and64 r1, 0x323982mov64 r2, r123983add64 r2, -0x223984jlt r2, 0x2, +5 ; -> 2398a23985jeq r1, 0x0, +4 ; -> 2398a23986ldxdw r1, [r0-1]23987ldxdw r2, [r0+7]23988ldxdw r2, [r2+0]23989callx r22398amov64 r1, r102398badd64 r1, -0x9982398cmov64 r2, 0x662398dcall fn_32b092398eldxdw r8, [r10-2448]2398fldxdw r6, [r10-2456]23990ldxdw r1, [r10-2464]23991stxdw [r1+8], r823992stxdw [r1+0], r623993exit
// discriminator 209a98db8e6cdaa5 (not in the published IDL)#[derive(Accounts)] // fn_2bd2c (shared with 9 other admin ixs)pub struct SetMaxCurveDepth<'info> {#[account(mut, seeds = [b"global"], bump)] // 2000 ConstraintMut / 2006 ConstraintSeedspub global: Account<'info, Global>, // owner + discriminator checked on load (fn_026ea)#[account(mut, address = global.authority @ PumpError::NotAuthorized)] // pc 2be41 -> 6000; pc 2bea0 mut check -> 2000pub authority: Signer<'info>, // fn_02590#[account(seeds = [b"__event_authority"], bump)] // pc 2bec3 -> 2006pub event_authority: AccountInfo<'info>,pub program: Program<'info, Pump>,}pub fn set_max_curve_depth(ctx: Context<SetMaxCurveDepth>, max_curve_depth: u8) -> Result<()> {msg!("Instruction: SetMaxCurveDepth");// pc 23928: instruction data after discriminator must hold >= 1 byte, else 102 InstructionDidNotDeserialize// no range check on the valuectx.accounts.global.max_curve_depth = max_curve_depth; // struct +0x438, on-chain byte offset 1087 (last byte of 1088)// no event emitted, no CPI, no lamport/token movementOk(()) // exit: fn_00e52 re-serializes the whole Global struct}
Replay model
The executable model the agent wrote. Every tally above comes from running it against mainnet.
// no model entered yet
Accounts
Not published. The accounts and arguments were recovered from the bytecode; see the reconstruction.
program 6EF8rr…BEwF6P