> For the complete documentation index, see [llms.txt](https://docs.fast.poker/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fast.poker/for-operators-dealer-service/operator-weight-and-carry.md).

# Operator weight and carry

How your earnings are sized. The program credits **weight** for real protocol work, and your share of a table's rewards is your weight over the total.

## TL;DR

Weight is an on-chain counter the program mints when your dealer does real work. Your payout on a table is `your weight / total weight on that table`. SNG creation and reuse pay large bonuses, and the table creator keeps a **carry** on every future reuse for a tier-based number of epochs. Weight is cumulative and never resets.

## What weight is

Weight is a per-`(table, operator)` on-chain counter (`CrankAction`). The program mints it **only** through the helpers `try_record_crank_action` / `try_record_crank_action_l1` / `try_record_crank_action_v2` / `try_record_first_crank_action`, called from inside instruction handlers when real work lands.

* The operator is a **non-signer** account looked up in `remaining_accounts`. You never sign a transaction to earn weight.
* Weight is **cumulative and never resets**.
* Your share of a table's rewards = `your weight / total weight on that table`.

## Effective weight (ER x1 / L1 x2)

Work runs on two lanes, scored differently at claim sync:

| Lane                    | Where           | Multiplier |
| ----------------------- | --------------- | ---------- |
| ER (Ephemeral Rollup)   | post-commit CPI | x1         |
| L1 (direct instruction) | mainnet         | x2         |

Each lane is a separate counter; effective weight = `ER count + 2 x L1 count`. The per-action numbers below are stated as **effective** weight.

## Per-action weight

Indicative effective weight per credited action (verified against `state/crank_action.rs` and the instruction handlers):

| Action                                                                | Lane | Effective weight |
| --------------------------------------------------------------------- | ---- | ---------------- |
| `tee_deal`                                                            | ER   | 2                |
| `settle`                                                              | ER   | 2                |
| `tee_reveal` / `start_game` / `timeout` / `kick` / clear-leaving-seat | ER   | 1                |
| `settle_table_rewards`                                                | L1   | 2                |
| `process_cashout`                                                     | L1   | 4                |
| `prepare_sng_match`                                                   | L1   | 1                |
| `seat_from_pool`                                                      | L1   | 1                |
| `finalize_sng_match` (SNG creation bonus)                             | L1   | 120              |
| `reset_sng_table` (SNG reuse bonus)                                   | L1   | 50               |

The two SNG bonuses cover bounded setup work as a single credit instead of making each low-level delegation instruction individually farmable.

## Creator carry

The dominant SNG stream. Creating an SNG table makes you its on-chain `creator`. You keep earning a carry on **every future reuse of that table** (even reuses cranked by other operators) for a tier-based number of epochs.

| Tier     | Effective weight / reuse | Reuse epochs | Lifetime carry |
| -------- | ------------------------ | ------------ | -------------- |
| Copper   | 150                      | 80           | 12,000         |
| Bronze   | 150                      | 40           | 6,000          |
| Silver   | 100                      | 24           | 2,400          |
| Gold     | 50                       | 12           | 600            |
| Platinum | 50                       | 6            | 300            |
| Diamond  | 50                       | 3            | 150            |
| Black    | 50                       | 2            | 100            |

Lower tiers carry longer to amortize fixed setup rent. Source of truth: `state/sng_pool.rs`, in `SNG_CREATOR_CARRY_EFFECTIVE_WEIGHT_BY_TIER` and `SNG_CREATOR_CARRY_REUSE_EPOCHS_BY_TIER`.

## Claiming

Rewards use a pull-claim accumulator. Running the claim is **permissionless** (anyone can trigger the claim transaction), but the reward is paid only to the credited operator wallet.

New weight cannot claim old deposits, so adding weight never retroactively dilutes prior operators. See [Reward claim flow](/for-operators-dealer-service/reward-claim.md) for the full lane.

## Routing rewards to another wallet

Credit can be routed to a separate wallet via `credit_to`:

* **Creator carry** follows the stored `table.creator`, which can be set to a `credit_to` wallet at table creation.
* **Deal-loop weight** and **SNG setup / reuse credit** also route to `credit_to`.

This lets a hot crank payer earn on behalf of a cold operator wallet. See [Reward routing (credit\_to)](/for-operators-dealer-service/credit-to-routing.md).
