Introduction
Buckets, Vaults, and Proofs are the three core asset containers in Scrypto, each serving a distinct purpose in Asset-Oriented Programming. Together they form the mechanism by which resources are stored, moved, and used for authorisation on the Radix network.
Vaults
A Vault is a permanent, on-ledger container that holds a single type of resource (fungible tokens or non-fungible tokens). Vaults are owned by Components — including Account components — and represent the resting state of all assets on the network.
At the end of every transaction, all resources must reside in Vaults. Any resources left outside a Vault cause the transaction to fail, preventing accidental token loss. A Component may hold multiple Vaults, but each Vault holds only one resource type.
Buckets
A Bucket is a temporary, in-transaction container for moving resources between Components. Buckets exist only during transaction execution — they are created when resources are withdrawn from a Vault and destroyed when deposited into another Vault.
The lifecycle of a Bucket within a Transaction Manifest:
- Withdraw resources from an Account Vault → creates a Bucket
- Pass the Bucket to a Component method → transfers ownership
- The Component deposits the Bucket into its own Vault
The Radix Engine enforces that all Buckets must be empty or deposited by the end of the transaction. This guarantee — enforced at the platform level, not by application code — makes it impossible to accidentally lose tokens by sending them to the wrong address.
Proofs
A Proof is a non-transferable cryptographic attestation created from a Vault or Bucket, proving that the caller possesses a certain quantity or type of resource. Proofs do not move the underlying assets — they attest to their existence.
Proofs are placed onto an Auth Zone during transaction execution, where they are checked against Component Access Rules. This is how authorisation works on Radix: rather than checking msg.sender as on Ethereum, a Scrypto method requires a Proof of a specific badge resource.
Virtual Proofs are automatically created by the Radix Engine from transaction signatures. When a user signs a transaction with their wallet key, the engine creates a virtual Proof of the account's signature badge, linking traditional cryptographic signing to Radix's badge-based authorisation.
External Links
- Buckets and Vaults — Radix Documentation
- Resources — Radix Documentation
- Proofs and Auth — Radix Documentation
Connect your wallet to join the discussion.
