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

# Core concepts

> Understand Canton identifiers, wallet transports, instruments, and account data.

## Canton network

C8 Wallet is built on [Canton](https://www.canton.network/), a privacy-enabled blockchain designed for institutional finance.

> [!NOTE]
>
> Rather than Ethereum-style addresses, Canton uses:
>
> * **`partyId`** — string identifier for a participant (account)
> * **`instrumentId`** — string identifier for a tokenized asset
>
> Your dApp works with these identifiers throughout the SDK.

## Popup + postMessage architecture

The SDK uses two channels to talk to the wallet, depending on the request type:

> **window\.postMessage**
>
> **Interactive actions** that require user consent, auth, or cryptographic signatures — e.g. connecting an account or signing a transaction.

> **HTTP API**
>
> **Read-only data** retrieval that does not require user intervention — e.g. fetching instruments or balances.

## Instruments and holdings

An **instrument** is a Canton asset type, such as a tokenized currency or security. A **holding** is a specific account's balance of that instrument.

Each account also includes its public key and validator:

```ts theme={null}
type AccountInfoPayload = {
  accountName?: string;
  partyId: string;
  publicKey: string;
  validator: {
    id: string;
    name: string;
  };
  holdings: AccountInfoHolding[];
};
```

The typical flow:

**1. List instruments**

`getInstruments()` — pick an `instrumentId`.

**2. List accounts**

`getAccounts(instrumentId)` — pick a `partyId` and holding.

**3. Submit transfer**

`send({ senderPartyId, instrumentId, amount, receiverPartyId })`.


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