56 lines
2.7 KiB
Markdown
56 lines
2.7 KiB
Markdown
# Движение Средств (Shine)
|
||
|
||
Документ описывает, как перемещаются средства между счетами в текущей схеме.
|
||
|
||
## 1) Регистрация и увеличение лимита (`shine_users`)
|
||
|
||
### Регистрация пользователя (`create_user_pda`)
|
||
|
||
1. Плательщик: кошелек `signer` (кто отправил транзакцию).
|
||
2. Получатель комиссии: `inflow_vault` (PDA в программе `shine_payments`).
|
||
3. Сумма перевода:
|
||
- `registration_fee_lamports` из economy-конфига `shine_users`;
|
||
- плюс комиссия за `additional_limit` (по формуле через `limit_step` и `lamports_per_limit_step`).
|
||
|
||
### Увеличение лимита (`update_user_pda`)
|
||
|
||
1. Плательщик: кошелек `signer`.
|
||
2. Получатель комиссии: `inflow_vault` (тот же PDA `shine_payments`).
|
||
3. Сумма перевода:
|
||
- только комиссия за `additional_limit` (без регистрационной части).
|
||
|
||
## 2) Покупка билета (`shine_payments`)
|
||
|
||
### Покупка (`buy_ticket`, `buy_ticket_usd`, `buy_ticket_sol`)
|
||
|
||
1. Плательщик: кошелек покупателя (`signer`).
|
||
2. Получатель: `dao_wallet` (казна DAO из `ConfigState`).
|
||
3. В `inflow_vault` на этом шаге средства не зачисляются.
|
||
|
||
## 3) Шаг выплат (`shine_payments::step_payout`)
|
||
|
||
Источник выплат: `inflow_vault` (`ConfigState.inflow_vault`).
|
||
|
||
Порядок очередей:
|
||
1. сначала `Q1`;
|
||
2. потом `Q2`;
|
||
3. потом `Q3`.
|
||
|
||
При шаге выплаты:
|
||
1. Из `inflow_vault` переводится `ticket` получателю тикета.
|
||
2. Из `inflow_vault` переводится DAO-часть в `dao_wallet`.
|
||
- для `Q1` это `1x payout_usd`;
|
||
- для `Q2` это `2x payout_usd`;
|
||
- для `Q3` это `3x payout_usd`;
|
||
3. Из `inflow_vault` переводится `call_reward_lamports` вызывающему шаг.
|
||
|
||
Если очереди пусты:
|
||
1. Весь доступный остаток `inflow_vault` переводится в `dao_wallet`.
|
||
|
||
## 4) Какие адреса задаются настройками
|
||
|
||
1. `dao_wallet` — хранится в `ConfigState` (`shine_payments`), задается при `init`.
|
||
2. `inflow_vault` — PDA `shine_payments`, вычисляется по seed и program id.
|
||
3. Для `shine_users` получатель комиссии не настраивается отдельно:
|
||
- всегда используется PDA `inflow_vault` программы `shine_payments`.
|