> For the complete documentation index, see [llms.txt](https://sonic-ai-works.gitbook.io/sonic-networks-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sonic-ai-works.gitbook.io/sonic-networks-docs/documentation/developers/programs/token-program.md).

# Token Program

SONIC custom token-policy program boundary for fee-governance guards, allocation/claim references and production Token-2022 verification.

**Configured custom SONIC program ID:** `9ad5yQCZ1iQ8J2jDnjwK86rKSkRJScmMyXBCGmEZLRdT`\
**Deployment:** **TBA / unverified**

{% hint style="warning" %}
This custom SONIC program is **not** the production SONIC mint and is **not** SPL Token-2022. The mint, owning token program, custom program and authority addresses are independent identities.
{% endhint %}

## Responsibility

The custom program may own SONIC-specific control/reference state such as:

* transfer-fee **policy** guard;
* allocation/claim references;
* vesting/lock registry references;
* treasury/configuration references;
* governance authority and policy version.

It must not duplicate generic Token-2022 transfer/mint mechanics.

## Canonical token policy

```
initial maximum supply     18,446,000,000 SONIC
SONIC decimals             9
atomic initial maximum     18,446,000,000,000,000,000
launch transfer fee        200 bps
policy ceiling             500 bps
Token-2022 maximumFee      TBA
production mint            TBA
```

## Fee-policy guard

A production governance path that changes Token-2022 transfer-fee configuration must enforce:

```rust
require!(basis_points <= 500, TransferFeeAbovePolicyCap);
```

Launch initialization additionally verifies `basis_points == 200`.

The `500 bps` rule is a SONIC policy ceiling. Token-2022 `maximumFee` remains a separate absolute token amount. A single unrestricted TransferFeeConfig signer cannot be described as technically capped by documentation alone.

## Atomic arithmetic

At 9 decimals:

```
1 SONIC = 1_000_000_000 token atomic units
```

The initial maximum atomic supply fits in `u64` but is close to its upper bound. Multiplication and percentage calculations should use checked `u128` intermediates. Downcasts must be checked.

SOL network/priority costs use **lamports** and remain a separate unit.

## Fixed-after-genesis state

The program/release registry should distinguish:

```
PRE_DEPLOYMENT
CONTROLLED_MINT_AUTHORITY
FIXED_AFTER_GENESIS
```

`FIXED_AFTER_GENESIS` requires verified intended issuance plus permanent mint-authority revocation evidence.

## Activation invariant

```
verified custom program where required
+ verified Token-2022 mint
+ verified decimals/supply/authorities
+ launch TransferFeeConfig = 200 bps
+ configured rate <= 500 bps SONIC policy cap
+ verified Token-2022 maximumFee
+ approved policy version
+ explicit capability activation
= production-valid token runtime
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://sonic-ai-works.gitbook.io/sonic-networks-docs/documentation/developers/programs/token-program.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
