# Glossary

## A

### Account (Solana)

A fundamental building block on Solana. Everything on Solana is an account — wallets, programs, tokens, and custom data storage. Each account has an owner program and can hold SOL or data.

### ATA (Associated Token Account)

A deterministic token account address derived from a wallet address and a token mint. ATAs are the standard way to hold tokens on Solana. The protocol creates ATAs automatically for recipients when they claim.

### Anchor

A framework for building Solana programs in Rust. Provides macros for account validation, IDL generation, and CPI helpers. SimplyVest uses Anchor 0.32.1.

## C

### Cliff

A period at the start of a vesting schedule before any tokens are claimable. After the cliff passes, tokens begin vesting linearly. Example: a 1-year cliff means no tokens for the first year, then monthly unlocks.

### CPI (Cross-Program Invocation)

A call from one Solana program to another. The vesting program uses CPI to transfer tokens (via the Token Program) and create token accounts (via the Associated Token Program).

### Creator

The wallet that creates and funds a vesting stream. Only the creator can cancel a stream.

## D

### D1

Cloudflare's edge SQLite database. Used by the API Worker to store user profiles, organization data, and stream metadata for fast off-chain queries.

### Drizzle ORM

A TypeScript ORM used by the API Worker to interact with the D1 database with type-safe queries and auto-generated migrations.

## I

### IDL (Interface Description Language)

A JSON file generated by Anchor that describes a program's instructions, accounts, and types. The SDK uses the IDL to provide typed client bindings.

### invoke_signed

A Solana CPI function that signs on behalf of a PDA. Only the program holding the PDA seeds can call this — it's how the program proves authority over vault token accounts.

## L

### Linear Vesting

Tokens unlock at a continuous, steady rate over time. For example, 100,000 tokens over 365 days = ~274 tokens per day.

## M

### Milestone Vesting

All tokens unlock when a specific condition is met (triggered by a designated authority), rather than on a time-based schedule.

## O

### oxlint / oxfmt

Rust-based linter and formatter that replace ESLint and Prettier. ~6x faster than ESLint. Used for all JavaScript/TypeScript linting and formatting in the monorepo.

## P

### PDA (Program-Derived Address)

An address on Solana that has no corresponding private key. PDAs are derived deterministically from seeds and a program ID. Only the program that owns the PDA can sign on its behalf using `invoke_signed`.

### Privy

An authentication and wallet infrastructure provider. SimplyVest uses Privy for social logins, email auth, and embedded Solana wallets.

## R

### R2

Cloudflare's S3-compatible object storage. Used to store token metadata images and JSON.

### Reconciler

A cron job (runs every 15 minutes) that syncs on-chain stream events to the D1 database, ensuring the API has up-to-date stream data.

### Recipient

The wallet that receives vested tokens from a stream. Only the recipient can withdraw claimable tokens.

## S

### SPL Token

The standard token program on Solana (`TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA`). Most tokens on Solana are SPL Token mints.

### Stream (Vesting Stream)

An on-chain record of a token vesting arrangement. Contains creator, recipient, amount, time parameters, and claim state. Stored in a PDA.

## T

### Token-2022

The next-generation token program on Solana (`TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`). Supports extensions like transfer hooks, metadata, and confidential transfers.

### tsgo

Native TypeScript compiler built into Node 24 (`@typescript/native-preview`). Used instead of `tsc` for ~50x faster type-checking.

## V

### Vault

A PDA token account that holds locked tokens for a specific vesting stream. Only the program (signing with PDA seeds) can move tokens out. Closed when the stream completes or is cancelled.

### Vesting

The process of releasing tokens to a recipient over time or upon meeting conditions, rather than all at once.