Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Glossary

Capability

An unforgeable token or key that conveys an explicit right to perform a specific action on a resource, forming the basis of secure, fine-grained authorization systems.
Chainscore © 2026
definition
BLOCKCHAIN SECURITY

What is Capability?

A capability is a secure, unforgeable token of authority that grants its holder the right to perform a specific action on a resource within a system, such as invoking a function or accessing data.

In computer science, a capability is a fundamental security primitive that combines the concepts of authority and designation. Unlike traditional access control lists (ACLs), which check a central registry to see if a principal (like a user) is allowed to access an object, a capability is an object reference that intrinsically carries the permission to use it. Possession of the capability token is proof of authorization, making the system's security object-capability (ocap) model decentralized and compositional.

In blockchain and smart contract contexts, capabilities are implemented as unforgeable references, often as a combination of an address and a function signature. For example, in the Flow blockchain and certain smart contract patterns, you might hold a capability to a Vault resource that only allows you to call its withdraw function up to a certain amount. This design prevents the confused deputy problem, where a malicious contract could trick a privileged component into performing unauthorized actions, as the capability's scope is explicitly limited and cannot be amplified.

The key properties of a robust capability system are: unforgeability (tokens cannot be fabricated), delegability (tokens can be safely passed or shared), and least privilege (tokens grant minimal necessary authority). This model is central to secure resource-oriented programming languages and frameworks like Move (used in Aptos and Sui) and Cadence (used in Flow), where assets are represented as typed resources that can only be manipulated through explicitly acquired and passed capabilities.

etymology
CAPABILITY

Etymology & Origin

The term 'capability' in computer science, particularly in blockchain and decentralized systems, originates from a long-standing security model designed to control access to resources.

In computer science, a capability is an unforgeable token of authority that grants its holder permission to perform a specific action on a specific object. This concept, foundational to capability-based security, emerged from research in the 1960s and 1970s on operating systems like the Cambridge CAP computer and Hydra. Unlike identity-based access control (e.g., 'user X can read file Y'), a capability is an object reference that intrinsically carries access rights, making it a key primitive for constructing secure, decentralized systems.

The model's core principle is that all authority must be represented by a capability object. Possession of the capability is the sole requirement for access; there is no separate global access control list to check. This design promotes the principle of least privilege and enables secure object-oriented patterns. In this paradigm, you cannot access a resource unless you have been explicitly given a reference (the capability) to it, which naturally contains the permissions for its use.

In blockchain contexts, this model has been powerfully adapted. Platforms like the Ethereum-based Radix and the smart contract language Move utilize capability objects to secure digital assets. For instance, a BurnCapability token might be required to destroy an asset, while a MintCapability is needed to create new ones. This ensures that critical functions are only callable by entities holding the specific, unforgeable capability, preventing unauthorized minting or transfers and providing a robust framework for resource-oriented programming.

key-features
CAPABILITY

Key Features

A capability in blockchain is a secure, unforgeable token that represents an authority to perform a specific action or access a resource, enforcing the principle of least privilege.

01

Object-Capability Model

The object-capability (ocap) model is a security paradigm where authority is inseparable from the reference to an object. A capability is both a reference and a permission. This model is foundational to secure smart contract design, as seen in platforms like Ethereum (via externally owned accounts) and Cosmos SDK-based chains, preventing the ambient authority vulnerabilities common in traditional systems.

02

Delegation & Composability

Capabilities can be delegated or composed to create complex permission flows. For example:

  • A multisig wallet can hold a capability to spend funds, which is only executable when a threshold of signatures is met.
  • In DeFi, a user can grant a lending protocol the capability to spend a specific token amount (via an ERC-20 approval), without handing over custody of their entire wallet.
04

Revocation & Attenuation

A key feature of advanced capability systems is the ability to revoke or attenuate (reduce the power of) a capability.

  • Revocation: The issuer can invalidate a capability, rendering it useless.
  • Attenuation: A capability can be restricted (e.g., limiting spend amount, adding an expiry date, or narrowing the set of allowed actions) before being delegated further, enabling precise control over delegated authority.
05

Contrast with Access Control Lists

Capabilities differ fundamentally from Access Control Lists (ACLs). An ACL is a ledger maintained by a resource, listing who is allowed to access it (subject-based). A capability is held by the user (object-based). This shifts the security model:

  • ACLs: Centralized guard checks a list.
  • Capabilities: Possession of the token is the proof of authority, enabling more decentralized and scalable systems.
how-it-works
CAPABILITY

How It Works

A capability is a secure, unforgeable token of authority that grants its holder the right to perform a specific action on a resource within a system. This foundational computer science concept is central to secure system design and is implemented in blockchain contexts like the Flow network to manage access control.

In computer security, a capability functions as both an object reference and an access right. Unlike traditional access control lists (ACLs) that check a central authority for permissions, the capability itself is the proof. Possession of the capability token is sufficient to perform the authorized operation, embodying the principle of "possession is permission." This design eliminates the need for ambient authority checks, reducing the attack surface and enabling more granular, composable security models.

Within blockchain architectures like Flow, capabilities are implemented as unforgeable references to stored resources. A Capability in Cadence, Flow's resource-oriented smart contract language, is a type that can be issued for a resource stored in an account's storage. It contains a borrow type (e.g., &AnyResource{FungibleToken.Receiver}) that defines exactly what interface can be used to interact with the underlying resource, enforcing type-safe access. This allows users to share specific functionalities of their assets—like the ability to receive tokens—without transferring ownership.

The lifecycle of a capability involves issuance, management, and revocation. An account owner creates (issues) a capability, which can then be stored privately or shared publicly. Other accounts can borrow this capability to get a temporary reference to the resource. Crucially, because capabilities are just references, the issuer can delete their stored capability at any time to revoke access, providing dynamic control. This model is essential for secure resource-oriented programming, where direct ownership and explicit access patterns are paramount.

Capabilities enable powerful patterns in decentralized applications. For example, a user could grant a decentralized exchange (DEX) a capability to withdraw a specific token from their vault up to a certain amount, without handing over their private keys or full custody. The DEX can use this capability only for the authorized operation. This least-privilege access is a stark contrast to the all-or-nothing approve/transferFrom model common in ERC-20 tokens, offering superior security and user control.

examples
CAPABILITY

Examples & Use Cases

Capabilities are a foundational security primitive for managing access control in blockchain systems. Below are key examples of their implementation and practical applications.

01

Resource-Oriented Programming

In languages like Cadence (Flow) and Move (Aptos, Sui), capabilities are a core language feature. They enable resource-oriented programming, where assets are non-copyable types that can only be stored, moved, or destroyed. A capability is a reference to a resource, and its possession is required to call methods on that resource. This enforces strict ownership and access rules at the protocol level, preventing common vulnerabilities like reentrancy attacks.

02

Delegated Authority

Capabilities enable secure authority delegation without transferring ownership. For example, a user can grant a DeFi protocol a capability to interact with a specific token vault, limiting its access to only that vault and for a defined set of actions (e.g., deposit, but not withdraw). This is safer than providing an unrestricted private key or an allowance that must be manually revoked, as the capability's scope is inherently constrained.

03

Composable Smart Contracts

Capabilities facilitate secure contract composability. A smart contract can publish a capability that other contracts can acquire to call its functions. This creates a web of trust where interactions are explicitly permitted, unlike the open callback model of Ethereum which can lead to unexpected reentrancy. This pattern is central to the object-centric architecture of networks like Sui, where capabilities govern how objects interact.

04

Secure Module Initialization

In Move-based blockchains, a module's init function is automatically granted a special Publisher capability upon deployment. This capability is then used to create type-specific capabilities (like BurnCapability or MintCapability) for resources defined in the module. These are then stored securely, often by the module owner, to control future privileged actions like minting new tokens, ensuring the initial deployer maintains ultimate control.

05

Revocable Access

While some capabilities are permanent, systems can be designed with revocable capabilities. The grantor can store a reference to the issued capability and later destroy it, invalidating the delegate's access. This provides a more granular and programmatic revocation mechanism compared to traditional token allowances, which require an on-chain transaction to set to zero and can be front-run.

06

Contrast with Ethereum's Allowance Model

Capabilities offer a distinct security model compared to Ethereum's ERC-20 allowance system.

  • Allowance: A numeric limit set by approve(), granting a spender the right to withdraw tokens up to that amount. It's a quantitative limit on a specific action.
  • Capability: A reference token that grants the right to call specific functions on a specific object. It's a qualitative grant of authority. Capabilities reduce attack surface by not exposing all functions of an asset.
SECURITY MODEL COMPARISON

Capability vs. Access Control List (ACL)

A comparison of two fundamental models for controlling access to resources in a system, such as a blockchain or smart contract platform.

FeatureCapability ModelAccess Control List (ACL) Model

Core Security Primitive

Possession of an unforgeable token (capability)

Entry on a list mapping subjects to permissions

Default Access

No access (least privilege)

Implicit denial (unless explicitly allowed)

Delegation Mechanism

Direct, by transferring or deriving capabilities

Indirect, requires modifying central list

Authority Locality

Object-centric (authority is held by the user)

Subject-centric (authority is managed by the resource)

Principal Concern

Who holds the key?

Is this key on the list?

Revocation Model

Complex, often requires indirection or capability destruction

Centralized, by removing entries from the list

Common Analogy

A physical key that opens a door

A guest list checked by a bouncer at the door

Example in Blockchain

Object-capability patterns in smart contracts (e.g., token allowances)

Permissioned blockchain validator sets or multisig owner lists

ecosystem-usage
CAPABILITY

Ecosystem Usage

A capability is a secure, unforgeable token that grants its holder the authority to perform a specific action on a resource. This section details how this security primitive is implemented and utilized across different blockchain ecosystems.

03

Capability-Based Smart Contract Design

Smart contracts use capabilities to implement robust access control and composability. Instead of checking a caller's address, a contract function checks for the presence of a valid capability token. This pattern enables:

  • Least-privilege security: Users only hold tokens for the specific actions they need.
  • Delegation: Capabilities can be transferred or wrapped for secure delegation of authority.
  • Modularity: Contracts can safely expose powerful functions, knowing only authorized holders can invoke them.
04

Contrast with Allowlist/Address-Based Auth

Capabilities provide a more secure and flexible alternative to traditional allowlists. Key differences:

  • Dynamic vs. Static: A capability is a transferable object, while an allowlist is a static list managed by an admin.
  • Object-Capability Security: Authority is held by the object (the token), not implied by identity. "Only holders of this key can open this door."
  • Reduced Centralization: No need for a central administrator to update a list; authority flows with the capability token itself.
05

Use Case: Token Mint Authority

A canonical example is controlling the right to mint new tokens. Instead of hardcoding a single admin address into a token program, the mint authority is represented as a capability (e.g., a PDA on Solana or a MintCap resource in Move). This token can be held by a multisig wallet, a DAO, or even burned to make the token supply permanently fixed, providing clear and transferable control over a critical function.

06

Related Concept: Object-Capability Model

Capabilities in blockchain are an implementation of the Object-Capability (ocap) model, a computer security paradigm. The core principles are:

  • No ambient authority: A program cannot perform an action unless it possesses a specific capability for it.
  • Capabilities are unforgeable: They can only be obtained through creation, endowment, or delegation from an existing holder.
  • Principle of least authority: Systems are designed by distributing minimal capabilities. This model underpins the security design of several blockchain virtual machines.
security-considerations
CAPABILITY

Security Considerations

In capability-based security models, access control is object-centric, where a capability—an unforgeable token of authority—is both the permission and the means to access a resource. This section details the key security properties and considerations of this paradigm.

01

Principle of Least Authority

A core security benefit where a process or user is granted only the minimum capabilities necessary to perform its function. This limits the blast radius of a compromise. For example, a smart contract that only needs to read a token balance would not be given a capability to transfer tokens, preventing unauthorized withdrawals even if the contract is exploited.

02

Unforgeability & Delegation

A secure capability must be unforgeable—it cannot be fabricated by an entity that does not already possess it. However, capabilities can be safely delegated or attenuated. Delegation allows controlled sharing of access, while attenuation creates a new, more restricted capability (e.g., read-only access from a read-write capability). The security model depends on the system's ability to enforce these rules at the runtime or VM level.

03

Ambient Authority vs. Object Capability

Contrasts two security models. In ambient authority (common in traditional systems), a process's identity (like a user ID) is checked against a global access control list for each resource access, leading to confused deputy problems. The object capability model eliminates ambient authority; access is solely determined by possession of a specific capability object, making authority explicit and non-repudiable.

04

Persistence & Revocation

A critical consideration is how long a capability remains valid and how it can be revoked. Persistence refers to a capability's lifespan (e.g., single session, permanent token). Revocation mechanisms are necessary to invalidate capabilities, which can be challenging in decentralized systems. Solutions include indirect capabilities (pointers to revocable grants) or time-bound capabilities that expire.

05

Confused Deputy Problem

A classic security flaw where a program with elevated privileges is tricked into misusing its authority on behalf of a less-privileged attacker. Capability-based systems are inherently resistant to this because there is no ambient authority to confuse; a deputy can only act using the explicit capabilities it was given, not the identity of the caller.

06

Implementation in Blockchain

In blockchain contexts, capabilities are often implemented via reference (e.g., a smart contract address and function selector) combined with the possession of a signed transaction or a token in the caller's wallet. Security relies on the underlying blockchain's integrity for unforgeability. The Cosmos SDK and Flow blockchain are notable for employing object-capability patterns in their architecture.

CAPABILITY

Common Misconceptions

Clarifying frequent misunderstandings about blockchain capabilities, a fundamental security primitive often confused with traditional access control models.

A capability is a cryptographically secure, unforgeable token that represents an unforgeable reference and an access right to a resource or function within a system. It works by combining authority and designation into a single, self-contained object. Unlike traditional access control lists (ACLs) that check a central directory for permissions, the possession of the capability token itself is the proof of authorization. This is often implemented via an object reference paired with a private key or a unique, unguessable identifier. When a user presents a valid capability to a resource, the system verifies the token's authenticity and grants the embedded access without needing to query an external permissions database, enabling fine-grained, decentralized authority.

CAPABILITY

Frequently Asked Questions

Capabilities are a foundational security primitive in computer science, now applied to blockchain to enable fine-grained, secure access control. This FAQ addresses common developer questions about their implementation and use.

A capability is an unforgeable token that represents an unforgeable, delegatable right to perform a specific action on a resource. In blockchain, it functions as a secure reference—like a key—that grants the holder permission to interact with a smart contract function or a digital asset. Unlike traditional identity-based permissions (e.g., checking msg.sender), access is granted solely by possessing the capability object. This is typically implemented by passing a signed token, a specific address, or a reference to an on-chain object. The system works by having the resource's logic verify the validity of the presented capability rather than the identity of the caller, enabling principle of least privilege and secure delegation patterns.

ENQUIRY

Get In Touch
today.

Our experts will offer a free quote and a 30min call to discuss your project.

NDA Protected
24h Response
Directly to Engineering Team
10+
Protocols Shipped
$20M+
TVL Overall
NDA Protected Directly to Engineering Team