ВозможностиОрганизации
Документация
    Ring Platform

    Децентрализованное самостроящееся будущее

    Войти
    Организации
    Возможности
    Магазин
    Документация
    Концепции платформы
    RING ЭкономикаSonoratek LLCГлобальное влияниеAI встречает Web3
    Начать
    Быстрый стартКалькуляторДорожная карта
    Конфиденциальность|Контакты
    v1.104.26|Sonoratek LLC

    Documentation

    Концепции, ценность и типичные сценарии клонирования — меньше кода.

    Добро пожаловать в Ring
    Краткий справочник
    С чего начать
    Предварительные требования
    Установка
    Первый успех
    Следующие шаги
    Функции
    Store
    Склад и остатки
    Управление вендорами
    Комиссии и расчёты
    SubscriptionConductor
    PaymentConductor
    Интеграция платежей
    Интеграция WayForPay
    Web3 Кошелек
    WalletConductor
    Реферальные коды (Refcodes)
    NFT Exhibition Marketplace
    Система Стейкинга Токенов
    Entities
    Opportunities
    AI Matcher
    Real-Time Messaging
    Peer Games
    Модуль Новостей - Цифровой Газетный Опыт
    Блоги участников
    Система Резервирования Имён Пользователей
    Научный редактор
    Notifications
    Push-уведомления через FCM (Ring)
    Email AI-CRM
    Протокол Tunnel
    Authentication
    Безопасность и соответствие
    Система локалей
    Мобильный Опыт
    Паттерны Оптимизации Производительности
    Примеры
    Quick Start
    Базовая настройка
    White Label
    Custom Branding
    Интеграция Web3
    Реальные Проекты
    Advanced Features
    Кастомизация
    Быстрый старт — ваш первый клон Ring
    Руководство по кастомизации
    Vertical Presets (SSOT)
    Руководство по Ringization
    Branding
    Темы оформления
    Features
    Localization
    Настройка токеномики
    Интеграция платёжного шлюза
    Референсные деплои Ring
    Конфигурация проекта
    Публичные переменные окружения
    Секреты Order Lab
    Project ID WalletConnect (Reown Cloud)
    Поддерживаемые сервисы
    Вики NODUS (знания проекта)
    Плейбук конфигурации
    Web3
    Token launch jurisdictions
    Кошелёк
    Советы по безопасности кошелька
    Интеграции
    Ethereum-кошельки (Wagmi v3)
    Развёртывание
    Развёртывание на собственном сервере
    Vercel
    Docker
    Конфигурация Окружения
    Мониторинг и аналитика
    Оптимизация производительности
    Резервное копирование и восстановление
    Архитектура
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    Архитектура PaymentConductor
    Wallet Conductor
    Архитектура News Kingdom
    Бекенд Сервисы
    Интеграция Firebase
    Разработка
    Ring MCP Server
    OSS и enterprise

    Быстрый вход (CTO · аудиторы · агенты)

    Приветствие — миссия и аудитории
    Краткий справочник
    С чего начать
    Архитектура и Auth.js
    Режимы бэкенда и базы данных (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безопасность и соответствие требованиям
    ringdom.org — база LegioX
    Исходный код — лицензия MIT (GitHub)

    Documentation

    Концепции, ценность и типичные сценарии клонирования — меньше кода.

    Добро пожаловать в Ring
    Краткий справочник
    С чего начать
    Предварительные требования
    Установка
    Первый успех
    Следующие шаги
    Функции
    Store
    Склад и остатки
    Управление вендорами
    Комиссии и расчёты
    SubscriptionConductor
    PaymentConductor
    Интеграция платежей
    Интеграция WayForPay
    Web3 Кошелек
    WalletConductor
    Реферальные коды (Refcodes)
    NFT Exhibition Marketplace
    Система Стейкинга Токенов
    Entities
    Opportunities
    AI Matcher
    Real-Time Messaging
    Peer Games
    Модуль Новостей - Цифровой Газетный Опыт
    Блоги участников
    Система Резервирования Имён Пользователей
    Научный редактор
    Notifications
    Push-уведомления через FCM (Ring)
    Email AI-CRM
    Протокол Tunnel
    Authentication
    Безопасность и соответствие
    Система локалей
    Мобильный Опыт
    Паттерны Оптимизации Производительности
    Примеры
    Quick Start
    Базовая настройка
    White Label
    Custom Branding
    Интеграция Web3
    Реальные Проекты
    Advanced Features
    Кастомизация
    Быстрый старт — ваш первый клон Ring
    Руководство по кастомизации
    Vertical Presets (SSOT)
    Руководство по Ringization
    Branding
    Темы оформления
    Features
    Localization
    Настройка токеномики
    Интеграция платёжного шлюза
    Референсные деплои Ring
    Конфигурация проекта
    Публичные переменные окружения
    Секреты Order Lab
    Project ID WalletConnect (Reown Cloud)
    Поддерживаемые сервисы
    Вики NODUS (знания проекта)
    Плейбук конфигурации
    Web3
    Token launch jurisdictions
    Кошелёк
    Советы по безопасности кошелька
    Интеграции
    Ethereum-кошельки (Wagmi v3)
    Развёртывание
    Развёртывание на собственном сервере
    Vercel
    Docker
    Конфигурация Окружения
    Мониторинг и аналитика
    Оптимизация производительности
    Резервное копирование и восстановление
    Архитектура
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    Архитектура PaymentConductor
    Wallet Conductor
    Архитектура News Kingdom
    Бекенд Сервисы
    Интеграция Firebase
    Разработка
    Ring MCP Server
    OSS и enterprise

    Быстрый вход (CTO · аудиторы · агенты)

    Приветствие — миссия и аудитории
    Краткий справочник
    С чего начать
    Архитектура и Auth.js
    Режимы бэкенда и базы данных (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безопасность и соответствие требованиям
    ringdom.org — база LegioX
    Исходный код — лицензия MIT (GitHub)

    Documentation

    Концепции, ценность и типичные сценарии клонирования — меньше кода.

    Добро пожаловать в Ring
    Краткий справочник
    С чего начать
    Предварительные требования
    Установка
    Первый успех
    Следующие шаги
    Функции
    Store
    Склад и остатки
    Управление вендорами
    Комиссии и расчёты
    SubscriptionConductor
    PaymentConductor
    Интеграция платежей
    Интеграция WayForPay
    Web3 Кошелек
    WalletConductor
    Реферальные коды (Refcodes)
    NFT Exhibition Marketplace
    Система Стейкинга Токенов
    Entities
    Opportunities
    AI Matcher
    Real-Time Messaging
    Peer Games
    Модуль Новостей - Цифровой Газетный Опыт
    Блоги участников
    Система Резервирования Имён Пользователей
    Научный редактор
    Notifications
    Push-уведомления через FCM (Ring)
    Email AI-CRM
    Протокол Tunnel
    Authentication
    Безопасность и соответствие
    Система локалей
    Мобильный Опыт
    Паттерны Оптимизации Производительности
    Примеры
    Quick Start
    Базовая настройка
    White Label
    Custom Branding
    Интеграция Web3
    Реальные Проекты
    Advanced Features
    Кастомизация
    Быстрый старт — ваш первый клон Ring
    Руководство по кастомизации
    Vertical Presets (SSOT)
    Руководство по Ringization
    Branding
    Темы оформления
    Features
    Localization
    Настройка токеномики
    Интеграция платёжного шлюза
    Референсные деплои Ring
    Конфигурация проекта
    Публичные переменные окружения
    Секреты Order Lab
    Project ID WalletConnect (Reown Cloud)
    Поддерживаемые сервисы
    Вики NODUS (знания проекта)
    Плейбук конфигурации
    Web3
    Token launch jurisdictions
    Кошелёк
    Советы по безопасности кошелька
    Интеграции
    Ethereum-кошельки (Wagmi v3)
    Развёртывание
    Развёртывание на собственном сервере
    Vercel
    Docker
    Конфигурация Окружения
    Мониторинг и аналитика
    Оптимизация производительности
    Резервное копирование и восстановление
    Архитектура
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    Архитектура PaymentConductor
    Wallet Conductor
    Архитектура News Kingdom
    Бекенд Сервисы
    Интеграция Firebase
    Разработка
    Ring MCP Server
    OSS и enterprise

    Быстрый вход (CTO · аудиторы · агенты)

    Приветствие — миссия и аудитории
    Краткий справочник
    С чего начать
    Архитектура и Auth.js
    Режимы бэкенда и базы данных (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безопасность и соответствие требованиям
    ringdom.org — база LegioX
    Исходный код — лицензия MIT (GitHub)
    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    WalletConductor

    WalletConductor — оркестрационный фасад Ring Platform для денежных путей custodial native-token web3 и fiat credit. Тонкие адаптеры (app/_actions/wallet.ts, /api/wallet/token/*, /api/wallet/desk/*, покупка на NFT market) вызывают conductor; он делегирует PSP в PaymentConductor, а математику ledger в creditBalanceService.

    Используйте вкладки Основатель / Разработчик в боковой панели документации для фильтрации этой страницы. UI продукта для участников: Wallet. Инвентарь HTTP/actions: Wallet API.

    Краткое резюме

    Один слой для денег кошелька: карта → credit points, desk → native token, gasless custodial переводы, ad-hoc списание кредитов и покупки на NFT market. Учёт fiat-списаний использует credit.creditBalanceUnitToMainCurrency (обычно 1), никогда не desk oracle. Внешний EVM POL/USDT через POST /api/wallet/transfer остаётся вне этого conductor.

    WalletConductor — money paths

    Чем владеет WalletConductor

    ВозможностьМетодРезультат
    Карта → credit pointsinitiateTopUpPaymentConductor wallet_topup → начисление в fiat ledger
    Карта/PayPal → treasury nativeinitiateNativeOnrampPaymentConductor native_token_onramp (confidential+)
    Token DeskquoteDesk / executeDeskCredit points ↔ native по desk oracle (subscriber+)
    Custodial переводtransferNativeGasless native перевод + строка wallet_transactions
    Native балансgetNativeBalanceCustodial баланс в native chain платформы
    Граница Conductor

    Не в WalletConductor: списание при checkout store/membership (PaymentConductor credit_balance / SubscriptionConductor) и внешний EVM POST /api/wallet/transfer. Это намеренно отдельные SSOT-пути.

    Два курса: не смешивать

    КурсSSOTГде используется
    Учёт fiat creditring-config.json → credit.creditBalanceUnitToMainCurrency (обычно 1) через getMainCurrencyCreditAccountingRate()spendCredits, сторона списания desk, checkout credit_balance
    Token Desk oracleplatform_settings.web3.oracle.nativePerMainCurrency через native-token-oracle.tsТолько quoteDesk / executeDesk points ↔ native

    Почему это важно для вашего клона

    WalletConductor: денежный хребет для оператора за продуктом Wallet. Участники видят UI пополнения, desk и переводов; ваш клон остаётся согласованным, потому что каждый путь идёт через один фасад, а не через разрозненные вызовы PSP и ledger.

    Пополнение кредита

    Любой авторизованный участник покупает credit points картой. Points: единицы fiat ledger (1:1 с mainCurrency магазина, когда creditBalanceUnitToMainCurrency равен 1).

    Token Desk

    Subscriber+ конвертирует points ↔ native по desk oracle. Изменение nativePerMainCurrency никогда не меняет математику store или ad-hoc списания кредитов.

    Native onramp

    Confidential+ карта/PayPal → treasury native (за feature-флагом). Не начисляет credit points.

    Реализация

    Фасад: features/wallet/conductor/wallet-conductor.ts (server-only).

    Подключение поверхности

    1. 1

      Вызывайте фасад, а не ledger

      UI и маршруты должны импортировать WalletConductor (или тонкие обёртки в app/_actions/wallet.ts). Не списывайте через creditBalanceService из UI фич для путей, которыми владеет conductor.

    2. 2

      Держите SSOT fiat-курса

      Для путей списания не передавайте usdRate или передавайте getMainCurrencyCreditAccountingRate(). Никогда не подавайте nativePerMainCurrency / desk oracle в списания fiat ledger.

    3. 3

      Соблюдайте границу EVM

      Custodial native перевод: transferNative. Внешний SupportedCrypto (POL/USDT) остаётся на POST /api/wallet/transfer; не встраивайте его в WalletConductor без явного редизайна.

    Карта модулей

    СлойПуть
    Фасадfeatures/wallet/conductor/wallet-conductor.ts
    Выдача

    Связанная документация

    Generative Gallery

    Credit-first биллинг генерации через spendCredits + ledger generative_usage.

    Архитектура WalletConductor

    Адаптеры, карта маршрутов, последовательности, SSOT env.

    Фича Wallet

    Архитектура продукта и сценарии участников.

    Wallet API

    Actions, HTTP-маршруты, таблицы SSOT курсов.

    1. Документация
    2. /Функции
    3. /WalletConductor

    Обновлено 14 июл. 2026 г.5 мин прослушивания

    WalletConductor

    WalletConductor — оркестрационный фасад Ring Platform для денежных путей custodial native-token web3 и fiat credit. Тонкие адаптеры (app/_actions/wallet.ts, /api/wallet/token/*, /api/wallet/desk/*, покупка на NFT market) вызывают conductor; он делегирует PSP в PaymentConductor, а математику ledger в creditBalanceService.

    Используйте вкладки Основатель / Разработчик в боковой панели документации для фильтрации этой страницы. UI продукта для участников: Wallet. Инвентарь HTTP/actions: Wallet API.

    Краткое резюме

    Один слой для денег кошелька: карта → credit points, desk → native token, gasless custodial переводы, ad-hoc списание кредитов и покупки на NFT market. Учёт fiat-списаний использует credit.creditBalanceUnitToMainCurrency (обычно 1), никогда не desk oracle. Внешний EVM POL/USDT через POST /api/wallet/transfer остаётся вне этого conductor.

    WalletConductor — money paths

    Чем владеет WalletConductor

    ВозможностьМетодРезультат
    Карта → credit pointsinitiateTopUpPaymentConductor wallet_topup → начисление в fiat ledger
    Карта/PayPal → treasury nativeinitiateNativeOnrampPaymentConductor native_token_onramp (confidential+)
    Token DeskquoteDesk / executeDeskCredit points ↔ native по desk oracle (subscriber+)
    Custodial переводtransferNativeGasless native перевод + строка wallet_transactions
    Native балансgetNativeBalanceCustodial баланс в native chain платформы
    Граница Conductor

    Не в WalletConductor: списание при checkout store/membership (PaymentConductor credit_balance / SubscriptionConductor) и внешний EVM POST /api/wallet/transfer. Это намеренно отдельные SSOT-пути.

    Два курса: не смешивать

    КурсSSOTГде используется
    Учёт fiat creditring-config.json → credit.creditBalanceUnitToMainCurrency (обычно 1) через getMainCurrencyCreditAccountingRate()spendCredits, сторона списания desk, checkout credit_balance
    Token Desk oracleplatform_settings.web3.oracle.nativePerMainCurrency через native-token-oracle.tsТолько quoteDesk / executeDesk points ↔ native

    Почему это важно для вашего клона

    WalletConductor: денежный хребет для оператора за продуктом Wallet. Участники видят UI пополнения, desk и переводов; ваш клон остаётся согласованным, потому что каждый путь идёт через один фасад, а не через разрозненные вызовы PSP и ledger.

    Пополнение кредита

    Любой авторизованный участник покупает credit points картой. Points: единицы fiat ledger (1:1 с mainCurrency магазина, когда creditBalanceUnitToMainCurrency равен 1).

    Token Desk

    Subscriber+ конвертирует points ↔ native по desk oracle. Изменение nativePerMainCurrency никогда не меняет математику store или ad-hoc списания кредитов.

    Native onramp

    Confidential+ карта/PayPal → treasury native (за feature-флагом). Не начисляет credit points.

    Реализация

    Фасад: features/wallet/conductor/wallet-conductor.ts (server-only).

    Подключение поверхности

    1. 1

      Вызывайте фасад, а не ledger

      UI и маршруты должны импортировать WalletConductor (или тонкие обёртки в app/_actions/wallet.ts). Не списывайте через creditBalanceService из UI фич для путей, которыми владеет conductor.

    2. 2

      Держите SSOT fiat-курса

      Для путей списания не передавайте usdRate или передавайте getMainCurrencyCreditAccountingRate(). Никогда не подавайте nativePerMainCurrency / desk oracle в списания fiat ledger.

    3. 3

      Соблюдайте границу EVM

      Custodial native перевод: transferNative. Внешний SupportedCrypto (POL/USDT) остаётся на POST /api/wallet/transfer; не встраивайте его в WalletConductor без явного редизайна.

    Карта модулей

    СлойПуть
    Фасадfeatures/wallet/conductor/wallet-conductor.ts
    Выдача

    Связанная документация

    Generative Gallery

    Credit-first биллинг генерации через spendCredits + ledger generative_usage.

    Архитектура WalletConductor

    Адаптеры, карта маршрутов, последовательности, SSOT env.

    Фича Wallet

    Архитектура продукта и сценарии участников.

    Wallet API

    Actions, HTTP-маршруты, таблицы SSOT курсов.

    1. Документация
    2. /Функции
    3. /WalletConductor

    Обновлено 14 июл. 2026 г.5 мин прослушивания

    WalletConductor

    WalletConductor — оркестрационный фасад Ring Platform для денежных путей custodial native-token web3 и fiat credit. Тонкие адаптеры (app/_actions/wallet.ts, /api/wallet/token/*, /api/wallet/desk/*, покупка на NFT market) вызывают conductor; он делегирует PSP в PaymentConductor, а математику ledger в creditBalanceService.

    Используйте вкладки Основатель / Разработчик в боковой панели документации для фильтрации этой страницы. UI продукта для участников: Wallet. Инвентарь HTTP/actions: Wallet API.

    Краткое резюме

    Один слой для денег кошелька: карта → credit points, desk → native token, gasless custodial переводы, ad-hoc списание кредитов и покупки на NFT market. Учёт fiat-списаний использует credit.creditBalanceUnitToMainCurrency (обычно 1), никогда не desk oracle. Внешний EVM POL/USDT через POST /api/wallet/transfer остаётся вне этого conductor.

    WalletConductor — money paths

    Чем владеет WalletConductor

    ВозможностьМетодРезультат
    Карта → credit pointsinitiateTopUpPaymentConductor wallet_topup → начисление в fiat ledger
    Карта/PayPal → treasury nativeinitiateNativeOnrampPaymentConductor native_token_onramp (confidential+)
    Token DeskquoteDesk / executeDeskCredit points ↔ native по desk oracle (subscriber+)
    Custodial переводtransferNativeGasless native перевод + строка wallet_transactions
    Native балансgetNativeBalanceCustodial баланс в native chain платформы
    Граница Conductor

    Не в WalletConductor: списание при checkout store/membership (PaymentConductor credit_balance / SubscriptionConductor) и внешний EVM POST /api/wallet/transfer. Это намеренно отдельные SSOT-пути.

    Два курса: не смешивать

    КурсSSOTГде используется
    Учёт fiat creditring-config.json → credit.creditBalanceUnitToMainCurrency (обычно 1) через getMainCurrencyCreditAccountingRate()spendCredits, сторона списания desk, checkout credit_balance
    Token Desk oracleplatform_settings.web3.oracle.nativePerMainCurrency через native-token-oracle.tsТолько quoteDesk / executeDesk points ↔ native

    Почему это важно для вашего клона

    WalletConductor: денежный хребет для оператора за продуктом Wallet. Участники видят UI пополнения, desk и переводов; ваш клон остаётся согласованным, потому что каждый путь идёт через один фасад, а не через разрозненные вызовы PSP и ledger.

    Пополнение кредита

    Любой авторизованный участник покупает credit points картой. Points: единицы fiat ledger (1:1 с mainCurrency магазина, когда creditBalanceUnitToMainCurrency равен 1).

    Token Desk

    Subscriber+ конвертирует points ↔ native по desk oracle. Изменение nativePerMainCurrency никогда не меняет математику store или ad-hoc списания кредитов.

    Native onramp

    Confidential+ карта/PayPal → treasury native (за feature-флагом). Не начисляет credit points.

    Реализация

    Фасад: features/wallet/conductor/wallet-conductor.ts (server-only).

    Подключение поверхности

    1. 1

      Вызывайте фасад, а не ledger

      UI и маршруты должны импортировать WalletConductor (или тонкие обёртки в app/_actions/wallet.ts). Не списывайте через creditBalanceService из UI фич для путей, которыми владеет conductor.

    2. 2

      Держите SSOT fiat-курса

      Для путей списания не передавайте usdRate или передавайте getMainCurrencyCreditAccountingRate(). Никогда не подавайте nativePerMainCurrency / desk oracle в списания fiat ledger.

    3. 3

      Соблюдайте границу EVM

      Custodial native перевод: transferNative. Внешний SupportedCrypto (POL/USDT) остаётся на POST /api/wallet/transfer; не встраивайте его в WalletConductor без явного редизайна.

    Карта модулей

    СлойПуть
    Фасадfeatures/wallet/conductor/wallet-conductor.ts
    Выдача

    Связанная документация

    Generative Gallery

    Credit-first биллинг генерации через spendCredits + ledger generative_usage.

    Архитектура WalletConductor

    Адаптеры, карта маршрутов, последовательности, SSOT env.

    Фича Wallet

    Архитектура продукта и сценарии участников.

    Wallet API

    Actions, HTTP-маршруты, таблицы SSOT курсов.

    1. Документация
    2. /Функции
    3. /WalletConductor

    Обновлено 14 июл. 2026 г.5 мин прослушивания

    Ad-hoc списание кредитов
    spendCredits
    Списание из fiat ledger по creditBalanceUnitToMainCurrency
    Выдача кошелькаensureNativeWalletАтомарные multi-chain кошельки (OAuth-safe, без сессии)
    Гейт минимального кредитаensureFundedВыдача с проверкой сессии + минимальный порог кредита
    Покупка на NFT marketpurchaseNftListingИдемпотентная покупка за RING через Solana market client

    Покупка на NFT market

    Подходящие покупатели платят RING из custodial кошелька через purchaseNftListing (идемпотентная строка продажи).

    Чеклист оператора

    1. 1

      Подтвердите SSOT единицы кредита

      Оставьте credit.creditBalanceUnitToMainCurrency: 1 в ring-config.json, если вы намеренно не масштабируете points относительно fiat. Изменения desk oracle никогда не влияют на checkout магазина или POST /api/wallet/credit/spend.

    2. 2

      Отделите desk oracle от fiat

      Superadmin задаёт nativePerMainCurrency только для конвертации на desk. Не ожидайте этот курс при ad-hoc списании кредитов.

    3. 3

      Осторожно включайте native onramp

      Native onramp картой доступен для confidential+ и стоит за feature-флагом (CONFIDENTIAL_TOKEN_ONRAMP / desk nativeTokenOnramp). Держите его выключенным, пока не готовы treasury ops и compliance.

    Из UI предпочитайте Server Actions. HTTP-маршруты кошелька оставьте для MCP и не-React клиентов. Предпочитайте /api/wallet/token/*: устаревшие алиасы /api/wallet/ring/* удалены.

    features/wallet/services/ensure-wallet.ts
    Credit ledgerfeatures/wallet/services/credit-balance-service.ts
    Fiat-курсlib/ring-config-core.ts → getCreditUnitToMainCurrencyRate / lib/payments/credit-balance.ts → getMainCurrencyCreditAccountingRate
    Deskfeatures/wallet/chains/solana/desk-service.ts
    Desk oraclefeatures/wallet/services/native-token-oracle.ts
    Custodial переводfeatures/wallet/chains/native-token-transfer-service.ts
    PSP checkoutlib/payments/conductor/payment-conductor.ts
    Store credit raillib/payments/processors/credit-balance.processor.ts (PaymentConductor, не WC)
    Actionsapp/_actions/wallet.ts
    Покупка NFTfeatures/nft-market/services/solana-market-client.ts

    Контракты методов

    МетодAuth / гейтыПримечания
    ensureNativeWalletВызывающий передаёт idOAuth-safe; возвращает { ok, native, wallets }
    ensureFundedСессияВыдача + опциональный минимум кредита
    initiateTopUpСессияСумма 25–2000; purpose wallet_topup
    initiateNativeOnrampСессия + confidential metadataОпциональный processor paypal/stripe/wayforpay
    quoteDesk / executeDeskassertTokenDeskSubscriberAccessSolana desk SSOT
    transferNativeВызывающий передаёт userIdПишет wallet_transactions; обновляет контакты
    spendCreditsВызывающий передаёт userIdПо умолчанию usdRate = getMainCurrencyCreditAccountingRate()
    purchaseNftListingКлюч идемпотентностиСтатус: pending → submitted → confirmed / failed
    getNativeBalanceВызывающий передаёт userIdТонкая обёртка над transfer service

    Последовательность: пополнение кредита картой

    initiateTopUp → wallet_topup

    Вкладка Card не передаёт processor (SSOT в env). Вкладка PayPal задаёт processor=paypal. Клиент: lib/payments/checkout-redirect.ts.

    Последовательность: ad-hoc списание кредитов

    spendCredits fiat SSOT

    Окружение и конфигурация (проверено)

    КлючРоль
    WALLET_ENCRYPTION_KEYШифрование custodial ключей
    SOLANA_RPC_URL / SOLANA_TREASURY_PRIVATE_KEYCustodial Solana + спонсирование gas
    CONFIDENTIAL_TOKEN_ONRAMP / desk nativeTokenOnrampГейт native onramp картой
    credit.creditBalanceUnitToMainCurrencyМножитель учёта fiat ledger
    ORACLE_QUOTE_SECRET / RING_ORACLE_DEFAULT_RATEHMAC котировки desk + fallback

    PaymentConductor

    PSP rails для пополнения и onramp.

    Ad-hoc списание кредитов
    spendCredits
    Списание из fiat ledger по creditBalanceUnitToMainCurrency
    Выдача кошелькаensureNativeWalletАтомарные multi-chain кошельки (OAuth-safe, без сессии)
    Гейт минимального кредитаensureFundedВыдача с проверкой сессии + минимальный порог кредита
    Покупка на NFT marketpurchaseNftListingИдемпотентная покупка за RING через Solana market client

    Покупка на NFT market

    Подходящие покупатели платят RING из custodial кошелька через purchaseNftListing (идемпотентная строка продажи).

    Чеклист оператора

    1. 1

      Подтвердите SSOT единицы кредита

      Оставьте credit.creditBalanceUnitToMainCurrency: 1 в ring-config.json, если вы намеренно не масштабируете points относительно fiat. Изменения desk oracle никогда не влияют на checkout магазина или POST /api/wallet/credit/spend.

    2. 2

      Отделите desk oracle от fiat

      Superadmin задаёт nativePerMainCurrency только для конвертации на desk. Не ожидайте этот курс при ad-hoc списании кредитов.

    3. 3

      Осторожно включайте native onramp

      Native onramp картой доступен для confidential+ и стоит за feature-флагом (CONFIDENTIAL_TOKEN_ONRAMP / desk nativeTokenOnramp). Держите его выключенным, пока не готовы treasury ops и compliance.

    Из UI предпочитайте Server Actions. HTTP-маршруты кошелька оставьте для MCP и не-React клиентов. Предпочитайте /api/wallet/token/*: устаревшие алиасы /api/wallet/ring/* удалены.

    features/wallet/services/ensure-wallet.ts
    Credit ledgerfeatures/wallet/services/credit-balance-service.ts
    Fiat-курсlib/ring-config-core.ts → getCreditUnitToMainCurrencyRate / lib/payments/credit-balance.ts → getMainCurrencyCreditAccountingRate
    Deskfeatures/wallet/chains/solana/desk-service.ts
    Desk oraclefeatures/wallet/services/native-token-oracle.ts
    Custodial переводfeatures/wallet/chains/native-token-transfer-service.ts
    PSP checkoutlib/payments/conductor/payment-conductor.ts
    Store credit raillib/payments/processors/credit-balance.processor.ts (PaymentConductor, не WC)
    Actionsapp/_actions/wallet.ts
    Покупка NFTfeatures/nft-market/services/solana-market-client.ts

    Контракты методов

    МетодAuth / гейтыПримечания
    ensureNativeWalletВызывающий передаёт idOAuth-safe; возвращает { ok, native, wallets }
    ensureFundedСессияВыдача + опциональный минимум кредита
    initiateTopUpСессияСумма 25–2000; purpose wallet_topup
    initiateNativeOnrampСессия + confidential metadataОпциональный processor paypal/stripe/wayforpay
    quoteDesk / executeDeskassertTokenDeskSubscriberAccessSolana desk SSOT
    transferNativeВызывающий передаёт userIdПишет wallet_transactions; обновляет контакты
    spendCreditsВызывающий передаёт userIdПо умолчанию usdRate = getMainCurrencyCreditAccountingRate()
    purchaseNftListingКлюч идемпотентностиСтатус: pending → submitted → confirmed / failed
    getNativeBalanceВызывающий передаёт userIdТонкая обёртка над transfer service

    Последовательность: пополнение кредита картой

    initiateTopUp → wallet_topup

    Вкладка Card не передаёт processor (SSOT в env). Вкладка PayPal задаёт processor=paypal. Клиент: lib/payments/checkout-redirect.ts.

    Последовательность: ad-hoc списание кредитов

    spendCredits fiat SSOT

    Окружение и конфигурация (проверено)

    КлючРоль
    WALLET_ENCRYPTION_KEYШифрование custodial ключей
    SOLANA_RPC_URL / SOLANA_TREASURY_PRIVATE_KEYCustodial Solana + спонсирование gas
    CONFIDENTIAL_TOKEN_ONRAMP / desk nativeTokenOnrampГейт native onramp картой
    credit.creditBalanceUnitToMainCurrencyМножитель учёта fiat ledger
    ORACLE_QUOTE_SECRET / RING_ORACLE_DEFAULT_RATEHMAC котировки desk + fallback

    PaymentConductor

    PSP rails для пополнения и onramp.

    Ad-hoc списание кредитов
    spendCredits
    Списание из fiat ledger по creditBalanceUnitToMainCurrency
    Выдача кошелькаensureNativeWalletАтомарные multi-chain кошельки (OAuth-safe, без сессии)
    Гейт минимального кредитаensureFundedВыдача с проверкой сессии + минимальный порог кредита
    Покупка на NFT marketpurchaseNftListingИдемпотентная покупка за RING через Solana market client

    Покупка на NFT market

    Подходящие покупатели платят RING из custodial кошелька через purchaseNftListing (идемпотентная строка продажи).

    Чеклист оператора

    1. 1

      Подтвердите SSOT единицы кредита

      Оставьте credit.creditBalanceUnitToMainCurrency: 1 в ring-config.json, если вы намеренно не масштабируете points относительно fiat. Изменения desk oracle никогда не влияют на checkout магазина или POST /api/wallet/credit/spend.

    2. 2

      Отделите desk oracle от fiat

      Superadmin задаёт nativePerMainCurrency только для конвертации на desk. Не ожидайте этот курс при ad-hoc списании кредитов.

    3. 3

      Осторожно включайте native onramp

      Native onramp картой доступен для confidential+ и стоит за feature-флагом (CONFIDENTIAL_TOKEN_ONRAMP / desk nativeTokenOnramp). Держите его выключенным, пока не готовы treasury ops и compliance.

    Из UI предпочитайте Server Actions. HTTP-маршруты кошелька оставьте для MCP и не-React клиентов. Предпочитайте /api/wallet/token/*: устаревшие алиасы /api/wallet/ring/* удалены.

    features/wallet/services/ensure-wallet.ts
    Credit ledgerfeatures/wallet/services/credit-balance-service.ts
    Fiat-курсlib/ring-config-core.ts → getCreditUnitToMainCurrencyRate / lib/payments/credit-balance.ts → getMainCurrencyCreditAccountingRate
    Deskfeatures/wallet/chains/solana/desk-service.ts
    Desk oraclefeatures/wallet/services/native-token-oracle.ts
    Custodial переводfeatures/wallet/chains/native-token-transfer-service.ts
    PSP checkoutlib/payments/conductor/payment-conductor.ts
    Store credit raillib/payments/processors/credit-balance.processor.ts (PaymentConductor, не WC)
    Actionsapp/_actions/wallet.ts
    Покупка NFTfeatures/nft-market/services/solana-market-client.ts

    Контракты методов

    МетодAuth / гейтыПримечания
    ensureNativeWalletВызывающий передаёт idOAuth-safe; возвращает { ok, native, wallets }
    ensureFundedСессияВыдача + опциональный минимум кредита
    initiateTopUpСессияСумма 25–2000; purpose wallet_topup
    initiateNativeOnrampСессия + confidential metadataОпциональный processor paypal/stripe/wayforpay
    quoteDesk / executeDeskassertTokenDeskSubscriberAccessSolana desk SSOT
    transferNativeВызывающий передаёт userIdПишет wallet_transactions; обновляет контакты
    spendCreditsВызывающий передаёт userIdПо умолчанию usdRate = getMainCurrencyCreditAccountingRate()
    purchaseNftListingКлюч идемпотентностиСтатус: pending → submitted → confirmed / failed
    getNativeBalanceВызывающий передаёт userIdТонкая обёртка над transfer service

    Последовательность: пополнение кредита картой

    initiateTopUp → wallet_topup

    Вкладка Card не передаёт processor (SSOT в env). Вкладка PayPal задаёт processor=paypal. Клиент: lib/payments/checkout-redirect.ts.

    Последовательность: ad-hoc списание кредитов

    spendCredits fiat SSOT

    Окружение и конфигурация (проверено)

    КлючРоль
    WALLET_ENCRYPTION_KEYШифрование custodial ключей
    SOLANA_RPC_URL / SOLANA_TREASURY_PRIVATE_KEYCustodial Solana + спонсирование gas
    CONFIDENTIAL_TOKEN_ONRAMP / desk nativeTokenOnrampГейт native onramp картой
    credit.creditBalanceUnitToMainCurrencyМножитель учёта fiat ledger
    ORACLE_QUOTE_SECRET / RING_ORACLE_DEFAULT_RATEHMAC котировки desk + fallback

    PaymentConductor

    PSP rails для пополнения и onramp.