Assessment reports>BPF Stake Program>Threat Model>Instruction: SetLockupChecked

Instruction: SetLockupChecked

This instruction updates the lockup information of a stake account. if the lockup is active, the lockup custodian may update the lockup parameters. If the lockup is not active, the withdraw authority may set a new lockup. This instruction behaves like SetLockup with the additional requirement that the new lockup authority also be a signer.

Input structure

pub struct LockupCheckedArgs { pub unix_timestamp: Option, pub epoch: Option, } pub enum StakeInstruction { /// # Account references /// 0. `[WRITE]` Initialized stake account /// 1. `[SIGNER]` Lockup authority or withdraw authority /// 2. Optional: `[SIGNER]` New lockup authority SetLockupChecked(LockupCheckedArgs), }

Parameters

  • unix_timestamp: Unix timestamp when the lockup expires.

  • epoch: Epoch when the lockup expires.

Accounts

  • stake_account: The initialized stake account whose lockup information will be updated.

    • Signer: No.

    • Init: No.

    • PDA: No.

    • Writable: Yes.

    • Rent checks: None.

    • Ownership checks: The account must be owned by the program.

    • Address checks: None.

  • old_withdraw_or_lockup_authority: Unused.

  • option_new_lockup_authority (optional): The new lockup authority account to be a custodian.

    • Signer: Yes.

    • Init: No.

    • PDA: No.

    • Writable: No.

    • Rent checks: None.

    • Ownership checks: None.

    • Address checks: None.

Additional checks and behavior

  • Only the lockup custodian can update the lockup while it is in force.

  • Only the withdraw authority can set a new lockup if the lockup is not in force.

  • The new lockup authority must be a signer.

Zellic © 2025Back to top ↑