Skip to main content

Lockup

This section focuses on the architecture of accounts created or used in the most important instructions of the Lockup program.

Account architecture

Sablier Lockup program

The sablier_lockup program implements these main functionalities:

  • initialize
  • create_with_timestamps_ll
  • cancel
  • withdraw
  • renounce

We will go into the details and specifics of each one later. For now, we will focus only on the accounts being created.

initialize Instruction

  • NFT collection data PDA: stores collection configuration and metadata
  • NFT collection mint PDA: serves as the master mint authority for all stream NFTs
  • NFT collection metadata PDA: created via Metaplex CPI
  • NFT collection master edition PDA: created via Metaplex CPI
  • NFT collection ATA: associated token account owned by treasury to hold the collection NFT token

The Treasury PDA stores this data:

create_with_timestamps_ll Instruction

Pre-existing accounts required:

  • Deposit Token
  • NFT Collection

The Stream NFT Mint also serves as the "Stream ID" for the cancel, renounce, and withdraw instructions.

Each Stream Data account stores the following parameters:

Each amount data structure consists of the following components:

Each timestamps data structure consists of the following components:

The Flow of the Deposit Token

create_with_timestamps_ll Instruction

cancel Instruction

Only the sender can cancel a stream.

withdraw Instruction