> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cargotrading.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Vault Share Contract Reference

> How Cargo vault shares (starting with the Genesis Vault's cvCOCOA) work for integrators: ERC-3643 permissioned transfers, the identity registry, decimals, the backing rule and the events to index.

Every Cargo vault issues its own permissioned **ERC-3643** share contract, one per asset. Each behaves like an ERC-20 for balances and approvals, but every transfer is checked against an on-chain identity registry. The first is **cvCOCOA**, the Genesis Vault share.

## Share Facts

| Property | Every Vault Share | Genesis Vault (cvCOCOA) |
| :- | :- | :- |
| Standard | ERC-3643 (T-REX), ERC-20 compatible interface | Same |
| Name / symbol | "Cargo Vault" + asset / "cv" + asset | Cargo Vault Cocoa / cvCOCOA |
| Unit | 1 share = 1 unit of the receipted asset | 1 share = 1 kg of receipted cocoa |
| Settlement asset | USDC | USDC |
| Chain | Arc (fallback Base) | Arc (fallback Base) |
| Holders | Whitelisted identities only | Same |

> [!NOTE]
>
> Cargo vault shares are **not** ERC-4626 vaults. There is no `deposit()` that mints shares against USDC. New shares are minted only against collateral-manager receipts and sold by the Vault SPV through the auction contracts.

## What Integrators Need to Know

* **Transfers Can Fail.** `transfer` and `transferFrom` revert if the receiver is not a verified identity, or if a compliance rule blocks the transfer. Check eligibility before routing a transfer.
* **The Backing Rule.** Total supply never exceeds receipted units in custody. Minting is guarded on-chain and requires a current collateral-manager receipt.
* **Pricing.** Value positions at NAV from the NAV feed, not from a pool price. For lending, use the lower of reference NAV and hedge-market-implied NAV.
* **Pauses.** The share contract and auctions can be paused by the pause guardian. Treat a paused state as "no transfers, no mints".
* **One Share Contract per Vault.** Treat each vault's shares as a separate asset with its own NAV feed and lot registry.

## Standard ERC-3643 Interface (Excerpt)

```solidity theme={null}
interface ICargoVaultToken {
    // ERC-20
    function balanceOf(address account) external view returns (uint256);
    function totalSupply() external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);

    // ERC-3643
    function identityRegistry() external view returns (address);
    function compliance() external view returns (address);
    function paused() external view returns (bool);
    function isFrozen(address account) external view returns (bool);
}

interface IIdentityRegistry {
    function isVerified(address wallet) external view returns (bool);
}
```

## Events to Index

| Event | Meaning |
| :- | :- |
| `Transfer` | Mint, burn or transfer of shares |
| `Paused` / `Unpaused` | Share contract paused or resumed |
| `AddressFrozen` | A wallet frozen pending review |
| `IdentityRegistered` (registry) | A wallet whitelisted |

The exact ABI, decimals and addresses are published with each deployment on [Contract Addresses](https://docs.cargotrading.xyz/resources/contract-addresses.md) and in [Code Repositories](https://docs.cargotrading.xyz/resources/code-repositories.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.