---
title: "Buckets, Proofs & Vaults"
path: "/contents/tech/core-concepts/buckets-proofs-and-vaults"
version: "1.3.0"
author: "Hydrate"
createdAt: "2026-02-18T22:38:09.452Z"
updatedAt: "2026-03-16T18:25:43.655Z"
---

# Buckets, Proofs & Vaults

<Infobox>
| **Vault** | Permanent storage container for resources |
| **Bucket** | Temporary container for moving resources between calls |
| **Proof** | Zero-cost ownership evidence (doesn't move the resource) |
</Infobox>

## Overview

Radix's [asset-oriented programming](/contents/tech/core-concepts/asset-oriented-programming) model uses three core container types:

### Vaults

Permanent storage for resources. Every account, component, and dApp stores its assets in vaults. Vaults enforce the conservation law — tokens can only be moved, never duplicated or destroyed (unless explicitly burned).

### [Buckets](https://docs.radixdlt.com/docs/resources-and-data)

Temporary containers for moving resources between method calls within a [transaction manifest](/contents/tech/core-protocols/transaction-manifests). [Buckets](https://docs.radixdlt.com/docs/buckets-and-vaults) must be emptied by the end of a transaction — they cannot be stored, preventing tokens from being "stuck" in contract state.

### [Proofs](https://docs.radixdlt.com/docs/auth)

Non-transferable evidence of resource ownership. Proofs are placed in [auth zones](/contents/tech/core-concepts/access-rules-and-auth-zones) to satisfy [access rules](https://docs.radixdlt.com/docs/authorization) without moving the underlying asset. This enables badge-gated access patterns.