Skip to main content

Spoke

The Spoke module is a core component of the Centrifuge protocol's on-chain infrastructure, responsible for local management and orchestration of asset pools, share classes, vaults, and related operations. It acts as the local registry and integration hub for factory-based deployments and other pool contracts.

Contracts

Spoke

The Spoke contract serves as:

  • A local registry for pools, share classes, and associated vaults.
  • An integration point for factories like TokenFactory, VaultFactory, and PoolEscrowFactory.
  • A router for inter-contract coordination, including dispatching messages via the MessageDispatcher.

Key integrations:

  • TokenFactory – to deploy ShareToken instances.
  • VaultFactory – to deploy pool vaults.
  • PoolEscrowFactory – for creating pool-specific escrows.
  • BalanceSheet – to enable financial tracking and share/token management.

Escrow

There are two primary types of escrow contracts:

  • Global Escrow (Escrow) Used to hold pending requests and ensure secure settlement across the system.

  • Pool Escrow (PoolEscrow) Tied to individual pools, it holds the balance sheet for assets and liabilities associated with that pool.

Factories such as PoolEscrowFactory are responsible for deterministic escrow deployments.

BalanceSheet

The BalanceSheet contract:

  • Tracks asset and share class balances.
  • Authorizes manager contracts to interact with share tokens and vaults.
  • Coordinates with MerkleProofManager and OnOfframpManager to verify and execute off-chain proofs and liquidity bridges.

Vault managers like SyncManager and AsyncRequestManager interact with this module to perform vault-specific logic.

Any contract can be registered as a balance sheet manager. This is the general-purpose extension point for how a pool's assets are held, moved, and allocated. A builder can deploy a custom balance sheet manager that routes deposits into a DeFi lending protocol, manages on/off-ramp flows to fiat, implements a multi-strategy allocation engine, or integrates with external custody solutions. The core enforces correct accounting for whatever the manager does. The allocation logic is entirely pluggable.

ShareToken

ShareToken is a custom ERC20 implementation with additional features:

  • ERC1404 compatibility: Allows restriction enforcement on transfers.

  • ERC20 callbacks: Integrates with ITransferHook for transfer-related hooks.

  • Optional transfer restriction logic provided by:

    • FreezeOnly
    • RedemptionRestrictions
    • FullRestrictions

These hook contracts implement the ITransferHook interface and can be dynamically attached to ShareToken.

Hooks are upgradeable without redeploying the token contract. The share token references a hook contract that can be swapped by the pool manager. A fund can start with full restrictions during a private placement and later switch to freely transferable once the token is ready for DeFi distribution, all without migrating tokens or breaking integrations.

Each ShareToken is instantiated by the TokenFactory and linked to a specific pool and share class.

Factories

  • TokenFactory: Creates ERC20-compliant ShareToken contracts.
  • VaultFactory: Spawns vaults that conform to IVault.
  • PoolEscrowFactory: Deploys dedicated PoolEscrow instances per pool.

Vaults and Managers

Vaults manage capital allocation strategies. The Spoke coordinates with multiple vault interfaces:

  • SyncManager (synchronous interactions)
  • AsyncRequestManager (handles delayed execution flows)

Managers are special contracts allowed to interact with vaults and balance sheets:

  • OnOfframpManager: Restricts on-offramp transactions.
  • MerkleProofManager: Integrates with external DeFi protocols.