> For the complete documentation index, see [llms.txt](https://docs.vault.ky/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.vault.ky/smart-contracts/accounts-and-pdas.md).

# Accounts and PDAs

Every Vault account is a Program Derived Address. Addresses are deterministic: given the seeds, anyone can derive and inspect the same account.

## PDA seeds

| Account                 | Seeds                                  |
| ----------------------- | -------------------------------------- |
| Global config           | `["global-config"]`                    |
| Campaign                | `["campaign", creator, campaign_seed]` |
| Campaign escrow         | `["escrow", campaign]`                 |
| Contribution receipt    | `["receipt", campaign, contributor]`   |
| Contributor index page  | `["index", campaign, page_number]`     |
| Vault fees              | `["vault-fees"]`                       |
| Cancel authority config | `["cancel-authority-config"]`          |

## Global config

Holds the protocol authority, treasury addresses, the execution wallet, and the global parameters — waiting window length, contribution fee in basis points, refund fee in basis points, the tip threshold, the refund fee cap, and the refund batch size.

Campaigns read these values at creation and copy the ones that must stay fixed onto the campaign account.

## Campaign

The per-campaign state: goal, deadline, funding policy, current state, escrowed totals, tip totals, and the lamport-denominated values fixed at creation.

Because fee rates and caps are copied here at creation, later changes to global config do not alter the terms of a campaign that is already live.

## Campaign escrow

The account that actually holds contributed SOL. One per campaign, derived from the campaign address.

This is the address shown publicly on the campaign page. Anyone can look it up on a block explorer and read its balance without trusting Vault's interface.

## Contribution receipt

One per contributor per campaign. Records the contributor's running totals:

* total contributed and the contribution fee already paid
* the amount currently escrowed
* the amount refunded and any refund fee paid
* the timestamp of the last contribution

The receipt is what makes refunds verifiable. A contributor's entitlement is derived from their own receipt, not from an off-chain ledger.

## Contributor index pages

A paged list of contributor addresses for a campaign, so refunds can be processed in batches without unbounded iteration in a single transaction.

## Rent

PDA custody accounts preserve their rent-exempt minimum. Sweeps move only the balance above that floor, so accounts are never drained below the threshold that keeps them alive.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.vault.ky/smart-contracts/accounts-and-pdas.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
