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

# Features

### 1. Distribution Partner Models & Central Infrastructure

* Participation is restricted to **Distribution Partners**, vetted and approved by Oro.
* Each Distribution Partner is configured with a `kind`: `Custodial` or `SelfCustody`.
  * **Custodial Model**: Each Distribution Partner receives a **central vault**, implemented as a PDA under the Inti program's control. Distribution Partners deposit **USDC** into this vault, which is managed through designated authorities while remaining secure under program oversight.
  * **Self-Custody Model**: A central PDA (associated with the Distribution Partner or a dedicated KYC entity) acts as a **KYC approver** for the Issuance Program and associated authorities. User funds (USDC and Oro tokens) are held directly in the users' Web3 wallets. The Distribution Partner may still maintain a vault for their own operational funds and unlocked Oro tokens.

### 2. User Creation and Management

* **Custodial Model**: Distribution Partners create user accounts by submitting a **KYC-hashed identifier**, which generates a **compressed account** (User PDA) for each user. These accounts store gold balances with extreme efficiency, reducing on-chain storage costs by approximately **1000x**.
* **Self-Custody Model**: Distribution Partners facilitate user onboarding by submitting a **KYC-hashed identifier** and the **user's public wallet address**. This creates a **compressed account** (User PDA) that links the KYC hash to the user's wallet. Gold balances are held and managed directly in the user's wallet, not in the compressed account. The User PDA acts as a KYC record and authorization point.

### 3. Authority Structure

* **Executive Authority**:
  * **Custodial Model**: Controlled by the Distribution Partner for day-to-day operations, such as depositing funds into the central vault, creating users, and purchasing gold for users or the partner.
  * **Self-Custody Model**: Controlled by the Distribution Partner for operations like registering users (linking KYC to wallets) and purchasing gold for the Partner's own reserves. User-specific transactions (buy/sell) are initiated via the Partner's platform but signed by the **User's Wallet**.
* **Withdrawal Authority**:
  * **Custodial Model**: A distinct authority (optionally multi-signature) responsible for withdrawing **unused** USDC and **unlocked** Oro tokens from the central vault.
  * **Self-Custody Model**: Applies to the Distribution Partner's operational vault for withdrawing their **unused** USDC and **unlocked** Oro tokens. Users withdraw funds directly from their own wallets.
* **Update Authority**: Wallet that makes administrative and configuration changes along with API Key management.

### 4. Gold Purchase & Holding Mechanism

* **Custodial Model**:
  * Distribution Partners can purchase gold:
    * For **users**: Gold is **locked** and allocated to the user's compressed account within the central vault system, safeguarding their ownership.
    * For the **Distribution Partner**: Gold remains **unlocked** in their portion of the central vault, allowing the Distribution Partner to manage or withdraw it as needed.
  * USDC is deducted from the central vault, and gold tokens (Oro tokens) are minted to reflect the purchase.
* **Self-Custody Model**:
  * **Users** purchase gold using funds from their own Web3 wallets, facilitated by the Distribution Partner's platform. Transactions are signed by the **User's Wallet**. Gold tokens (Oro tokens) are sent directly to the user's wallet.
  * The **Distribution Partner** can purchase gold for their own reserves, which is held in their operational wallet or vault. USDC is deducted from their operational funds.

### 5. Gold Purchase & Holding Mechanism

* **Custodial Model**: The **Withdrawal Authority** can withdraw **unused** USDC and **unlocked** Oro tokens from the central vault at any time, ensuring liquidity while protecting locked user funds.
* **Self-Custody Model**:
  * **Users** can withdraw/transfer their USDC and Gold tokens directly from their own Web3 wallets at any time.
  * The Distribution Partner's **Withdrawal Authority** can withdraw **unused** USDC and **unlocked** Gold tokens from their own operational vault.
