ВозможностиОрганизации
Документация
    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


    title: Архитектура WalletConductor description: Facade-методы, thin adapters, credit vs native rates, handoff PaymentConductor и проверенные маршруты /api/wallet: денежный counterpart архитектуры PaymentConductor last_modified: "2026-10-16" audience: both

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

    WalletConductor: server-only money facade Ring Platform для custodial native-token wallets и fiat credit ledger. Thin adapters вызывают conductor; PaymentConductor владеет PSP checkout для wallet_topup и native_token_onramp. Browser handoff после top-up: Conductor redirect + followCheckoutResult. См. Архитектура PaymentConductor.

    Гайд оператора / продукта: WalletConductor · Wallet · PaymentConductor

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

    Обзор фичи

    Возможности, two-rate SSOT, чеклист оператора

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

    Ledger, webhooks, purpose handlers

    Wallet API

    Actions и HTTP surface

    Почему эта архитектура важна

    • Один money spine: top-up, Token Desk, custodial send, ad-hoc credit spend и NFT market buy делят один facade вместо разрозненных вызовов PSP/ledger.
    • Чёткое продуктовое разделение: card top-up покупает credit points; desk конвертирует points ↔ native; confidential+ onramp покупает treasury native без добавления points.
    • Безопасные knobs оператора: desk oracle (nativePerMainCurrency) никогда не переписывает math store checkout или ad-hoc credit spend (credit.creditBalanceUnitToMainCurrency).
    • Граница by design: store/membership checkout и внешний EVM POST /api/wallet/transfer остаются вне WalletConductor, чтобы клоны случайно не смешивали rails.

    Поток запроса

    WalletConductor: adapter → facade → deps

    Основные модули

    МодульПутьОтветственность
    Facadefeatures/wallet/conductor/wallet-conductor.tsВсе публичные методы оркестрации
    Provisionfeatures/wallet/services/ensure-wallet.tsAtomic multi-chain wallet create (используется ensureNativeWallet)
    Credit ledgerfeatures/wallet/services/credit-balance-service.tsFiat points add/spend
    Fiat rate →

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

    Related documentation

    Tunnel Protocol

    Depends-on: после transferNative / ensure conductor раздаёт `wallet:list` через publishWalletListUpdate.

    WalletConductor

    Next-step: dual-audience продуктовый гайд для операторов.

    PaymentConductor architecture

    Same-workflow: PSP ledger и webhooks для wallet_topup / native_token_onramp.

    Wallet & Credit System

    See-also: member-facing потоки wallet dashboard.

    1. Документация
    2. /Архитектура
    3. /Wallet Conductor

    5 мин прослушивания


    title: Архитектура WalletConductor description: Facade-методы, thin adapters, credit vs native rates, handoff PaymentConductor и проверенные маршруты /api/wallet: денежный counterpart архитектуры PaymentConductor last_modified: "2026-10-16" audience: both

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

    WalletConductor: server-only money facade Ring Platform для custodial native-token wallets и fiat credit ledger. Thin adapters вызывают conductor; PaymentConductor владеет PSP checkout для wallet_topup и native_token_onramp. Browser handoff после top-up: Conductor redirect + followCheckoutResult. См. Архитектура PaymentConductor.

    Гайд оператора / продукта: WalletConductor · Wallet · PaymentConductor

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

    Обзор фичи

    Возможности, two-rate SSOT, чеклист оператора

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

    Ledger, webhooks, purpose handlers

    Wallet API

    Actions и HTTP surface

    Почему эта архитектура важна

    • Один money spine: top-up, Token Desk, custodial send, ad-hoc credit spend и NFT market buy делят один facade вместо разрозненных вызовов PSP/ledger.
    • Чёткое продуктовое разделение: card top-up покупает credit points; desk конвертирует points ↔ native; confidential+ onramp покупает treasury native без добавления points.
    • Безопасные knobs оператора: desk oracle (nativePerMainCurrency) никогда не переписывает math store checkout или ad-hoc credit spend (credit.creditBalanceUnitToMainCurrency).
    • Граница by design: store/membership checkout и внешний EVM POST /api/wallet/transfer остаются вне WalletConductor, чтобы клоны случайно не смешивали rails.

    Поток запроса

    WalletConductor: adapter → facade → deps

    Основные модули

    МодульПутьОтветственность
    Facadefeatures/wallet/conductor/wallet-conductor.tsВсе публичные методы оркестрации
    Provisionfeatures/wallet/services/ensure-wallet.tsAtomic multi-chain wallet create (используется ensureNativeWallet)
    Credit ledgerfeatures/wallet/services/credit-balance-service.tsFiat points add/spend
    Fiat rate →

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

    Related documentation

    Tunnel Protocol

    Depends-on: после transferNative / ensure conductor раздаёт `wallet:list` через publishWalletListUpdate.

    WalletConductor

    Next-step: dual-audience продуктовый гайд для операторов.

    PaymentConductor architecture

    Same-workflow: PSP ledger и webhooks для wallet_topup / native_token_onramp.

    Wallet & Credit System

    See-also: member-facing потоки wallet dashboard.

    1. Документация
    2. /Архитектура
    3. /Wallet Conductor

    5 мин прослушивания


    title: Архитектура WalletConductor description: Facade-методы, thin adapters, credit vs native rates, handoff PaymentConductor и проверенные маршруты /api/wallet: денежный counterpart архитектуры PaymentConductor last_modified: "2026-10-16" audience: both

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

    WalletConductor: server-only money facade Ring Platform для custodial native-token wallets и fiat credit ledger. Thin adapters вызывают conductor; PaymentConductor владеет PSP checkout для wallet_topup и native_token_onramp. Browser handoff после top-up: Conductor redirect + followCheckoutResult. См. Архитектура PaymentConductor.

    Гайд оператора / продукта: WalletConductor · Wallet · PaymentConductor

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

    Обзор фичи

    Возможности, two-rate SSOT, чеклист оператора

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

    Ledger, webhooks, purpose handlers

    Wallet API

    Actions и HTTP surface

    Почему эта архитектура важна

    • Один money spine: top-up, Token Desk, custodial send, ad-hoc credit spend и NFT market buy делят один facade вместо разрозненных вызовов PSP/ledger.
    • Чёткое продуктовое разделение: card top-up покупает credit points; desk конвертирует points ↔ native; confidential+ onramp покупает treasury native без добавления points.
    • Безопасные knobs оператора: desk oracle (nativePerMainCurrency) никогда не переписывает math store checkout или ad-hoc credit spend (credit.creditBalanceUnitToMainCurrency).
    • Граница by design: store/membership checkout и внешний EVM POST /api/wallet/transfer остаются вне WalletConductor, чтобы клоны случайно не смешивали rails.

    Поток запроса

    WalletConductor: adapter → facade → deps

    Основные модули

    МодульПутьОтветственность
    Facadefeatures/wallet/conductor/wallet-conductor.tsВсе публичные методы оркестрации
    Provisionfeatures/wallet/services/ensure-wallet.tsAtomic multi-chain wallet create (используется ensureNativeWallet)
    Credit ledgerfeatures/wallet/services/credit-balance-service.tsFiat points add/spend
    Fiat rate →

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

    Related documentation

    Tunnel Protocol

    Depends-on: после transferNative / ensure conductor раздаёт `wallet:list` через publishWalletListUpdate.

    WalletConductor

    Next-step: dual-audience продуктовый гайд для операторов.

    PaymentConductor architecture

    Same-workflow: PSP ledger и webhooks для wallet_topup / native_token_onramp.

    Wallet & Credit System

    See-also: member-facing потоки wallet dashboard.

    1. Документация
    2. /Архитектура
    3. /Wallet Conductor

    5 мин прослушивания

    lib/payments/credit-balance.ts
    getFiatCreditAccountingRate
    credit.creditBalanceUnitToMainCurrency SSOT
    Deskfeatures/wallet/chains/solana/desk-service.tsQuote + execute (subscriber+)
    Desk oraclefeatures/wallet/services/native-token-oracle.tsnativePerMainCurrency только для desk
    Custodial sendfeatures/wallet/chains/native-token-transfer-service.tsGasless native transfer
    PSP checkoutlib/payments/conductor/payment-conductor.tswallet_topup, native_token_onramp
    Onramp gatelib/payments/confidential-token-onramp.tsassertNativeTokenOnrampAllowed
    Actionsapp/_actions/wallet.tsSession-facing wrappers
    NFT buyfeatures/nft-market/services/solana-market-client.tsMarket purchase settlement

    Facade API

    МетодAuth / gatesДелегирует
    initiateTopUpSession; amount 25–2000PaymentConductor wallet_topup; возвращает redirect
    initiateNativeOnrampSession + confidential+ + onramp flagPaymentConductor native_token_onramp
    quoteDesk / executeDeskassertTokenDeskSubscriberAccessdesk-service + oracle
    getNativeBalanceCaller userIdnative-token-transfer-service
    transferNativeCaller userIdtransfer service + wallet_transactions + publishWalletListUpdate(userId, 'updated')
    spendCreditsCaller userIdcreditBalanceService + fiat rate (+ credit:balance tunnel через service)
    ensureNativeWalletCaller передаёт id (OAuth-safe)ensure-wallet (+ wallet:list когда wallets меняются)
    ensureFundedSessionensure + optional credit floor
    purchaseNftListingIdempotency keySolanaMarketClient

    Также экспортируется: getWalletConductorNativeChain() → getNativeChain().

    Два rates: не смешивать

    RateSSOTИспользуется
    Fiat credit accountingcredit.creditBalanceUnitToMainCurrency через getFiatCreditAccountingRate()spendCredits, desk debit side, PaymentConductor credit_balance
    Token Desk oracleplatform_settings.web3.oracle.nativePerMainCurrencyтолько quoteDesk / executeDesk
    Граница Conductor

    Не принадлежит WalletConductor: store/membership checkout (store_order, membership_upgrade, credit_balance / native_token rails), lifecycle Membership SubscriptionConductor и внешний EVM POST /api/wallet/transfer (Polygon POL / SupportedCrypto). Для platform native custodial sends предпочитайте /api/wallet/token/transfer.

    Thin adapters (проверено)

    Server Actions (app/_actions/wallet.ts)

    ActionМетод Conductor
    ensureUserWalletsensureNativeWallet
    getNativeTokenBalanceActiongetNativeBalance
    spendCreditsspendCredits
    transferNativeTokenstransferNative
    executeDeskQuoteexecuteDesk
    initiateCreditTopupPaymentinitiateTopUp
    initiateNativeTokenOnrampPaymentinitiateNativeOnramp
    createPinAccessTokenActionensureNativeWallet

    Desk quote без action wrapper: только HTTP (POST /api/wallet/desk/quote). NFT buy: app/_actions/nft-market.ts → purchaseNftListing. OAuth: auth.ts → ensureNativeWallet.

    HTTP-маршруты, вызывающие WalletConductor

    MethodPathМетод Conductor
    POST/api/wallet/desk/quotequoteDesk
    POST/api/wallet/desk/executeexecuteDesk
    POST/api/wallet/ensureensureNativeWallet
    GET/api/wallet/token/balancegetNativeBalance
    POST/api/wallet/token/transfertransferNative
    POST/api/wallet/credit/spendspendCredits (fiat rate SSOT)

    Явно вне facade

    Path / surfaceПочему
    POST /api/wallet/transferПуть EVM SupportedCrypto: не Solana custodial SSOT
    POST /api/wallet/credit/topupChain-proof credit add через creditBalanceService (не card top-up)
    GET /api/wallet/credit/spend410 deprecated: используйте getSpendSummary / GET /api/wallet/credit/history
    Store / membership PaymentConductor purposesCheckout rails, не wallet facade

    Sequence: card → credit points

    initiateTopUp → wallet_topup

    См. Архитектура PaymentConductor для CheckoutRedirect и WayForPay для HPP POST.

    Sequence: ad-hoc credit spend

    spendCredits fiat SSOT

    Environment и config (проверено)

    KeyRole
    WALLET_ENCRYPTION_KEYШифрование custodial ключей
    SOLANA_RPC_URL / SOLANA_TREASURY_PRIVATE_KEYCustodial Solana + gas sponsorship
    CONFIDENTIAL_TOKEN_ONRAMP / NEXT_PUBLIC_CONFIDENTIAL_TOKEN_ONRAMP / desk nativeTokenOnrampГейт native card onramp (isNativeTokenOnrampEnabled)
    credit.creditBalanceUnitToMainCurrencyМножитель accounting fiat ledger
    ORACLE_QUOTE_SECRET / RING_ORACLE_DEFAULT_RATEDesk quote HMAC + fallback

    Server SSOT для onramp: lib/ring-config-chain.ts → isNativeTokenOnrampEnabled(). Runtime role gate: assertNativeTokenOnrampAllowed (confidential/admin/superadmin + flag).

    Заметки по безопасности

    • Custodial ключи никогда не покидают сервер; UI использует Server Actions / authenticated routes
    • Desk требует subscriber+; native onramp требует confidential+ и feature flag
    • Fiat spend должен использовать getFiatCreditAccountingRate(): никогда не подавайте desk nativePerMainCurrency в debits credit ledger
    • Предпочитайте /api/wallet/token/*: retired aliases /api/wallet/ring/* удалены

    Wallet API

    Deep-dive: инвентарь Server Actions и HTTP.

    lib/payments/credit-balance.ts
    getFiatCreditAccountingRate
    credit.creditBalanceUnitToMainCurrency SSOT
    Deskfeatures/wallet/chains/solana/desk-service.tsQuote + execute (subscriber+)
    Desk oraclefeatures/wallet/services/native-token-oracle.tsnativePerMainCurrency только для desk
    Custodial sendfeatures/wallet/chains/native-token-transfer-service.tsGasless native transfer
    PSP checkoutlib/payments/conductor/payment-conductor.tswallet_topup, native_token_onramp
    Onramp gatelib/payments/confidential-token-onramp.tsassertNativeTokenOnrampAllowed
    Actionsapp/_actions/wallet.tsSession-facing wrappers
    NFT buyfeatures/nft-market/services/solana-market-client.tsMarket purchase settlement

    Facade API

    МетодAuth / gatesДелегирует
    initiateTopUpSession; amount 25–2000PaymentConductor wallet_topup; возвращает redirect
    initiateNativeOnrampSession + confidential+ + onramp flagPaymentConductor native_token_onramp
    quoteDesk / executeDeskassertTokenDeskSubscriberAccessdesk-service + oracle
    getNativeBalanceCaller userIdnative-token-transfer-service
    transferNativeCaller userIdtransfer service + wallet_transactions + publishWalletListUpdate(userId, 'updated')
    spendCreditsCaller userIdcreditBalanceService + fiat rate (+ credit:balance tunnel через service)
    ensureNativeWalletCaller передаёт id (OAuth-safe)ensure-wallet (+ wallet:list когда wallets меняются)
    ensureFundedSessionensure + optional credit floor
    purchaseNftListingIdempotency keySolanaMarketClient

    Также экспортируется: getWalletConductorNativeChain() → getNativeChain().

    Два rates: не смешивать

    RateSSOTИспользуется
    Fiat credit accountingcredit.creditBalanceUnitToMainCurrency через getFiatCreditAccountingRate()spendCredits, desk debit side, PaymentConductor credit_balance
    Token Desk oracleplatform_settings.web3.oracle.nativePerMainCurrencyтолько quoteDesk / executeDesk
    Граница Conductor

    Не принадлежит WalletConductor: store/membership checkout (store_order, membership_upgrade, credit_balance / native_token rails), lifecycle Membership SubscriptionConductor и внешний EVM POST /api/wallet/transfer (Polygon POL / SupportedCrypto). Для platform native custodial sends предпочитайте /api/wallet/token/transfer.

    Thin adapters (проверено)

    Server Actions (app/_actions/wallet.ts)

    ActionМетод Conductor
    ensureUserWalletsensureNativeWallet
    getNativeTokenBalanceActiongetNativeBalance
    spendCreditsspendCredits
    transferNativeTokenstransferNative
    executeDeskQuoteexecuteDesk
    initiateCreditTopupPaymentinitiateTopUp
    initiateNativeTokenOnrampPaymentinitiateNativeOnramp
    createPinAccessTokenActionensureNativeWallet

    Desk quote без action wrapper: только HTTP (POST /api/wallet/desk/quote). NFT buy: app/_actions/nft-market.ts → purchaseNftListing. OAuth: auth.ts → ensureNativeWallet.

    HTTP-маршруты, вызывающие WalletConductor

    MethodPathМетод Conductor
    POST/api/wallet/desk/quotequoteDesk
    POST/api/wallet/desk/executeexecuteDesk
    POST/api/wallet/ensureensureNativeWallet
    GET/api/wallet/token/balancegetNativeBalance
    POST/api/wallet/token/transfertransferNative
    POST/api/wallet/credit/spendspendCredits (fiat rate SSOT)

    Явно вне facade

    Path / surfaceПочему
    POST /api/wallet/transferПуть EVM SupportedCrypto: не Solana custodial SSOT
    POST /api/wallet/credit/topupChain-proof credit add через creditBalanceService (не card top-up)
    GET /api/wallet/credit/spend410 deprecated: используйте getSpendSummary / GET /api/wallet/credit/history
    Store / membership PaymentConductor purposesCheckout rails, не wallet facade

    Sequence: card → credit points

    initiateTopUp → wallet_topup

    См. Архитектура PaymentConductor для CheckoutRedirect и WayForPay для HPP POST.

    Sequence: ad-hoc credit spend

    spendCredits fiat SSOT

    Environment и config (проверено)

    KeyRole
    WALLET_ENCRYPTION_KEYШифрование custodial ключей
    SOLANA_RPC_URL / SOLANA_TREASURY_PRIVATE_KEYCustodial Solana + gas sponsorship
    CONFIDENTIAL_TOKEN_ONRAMP / NEXT_PUBLIC_CONFIDENTIAL_TOKEN_ONRAMP / desk nativeTokenOnrampГейт native card onramp (isNativeTokenOnrampEnabled)
    credit.creditBalanceUnitToMainCurrencyМножитель accounting fiat ledger
    ORACLE_QUOTE_SECRET / RING_ORACLE_DEFAULT_RATEDesk quote HMAC + fallback

    Server SSOT для onramp: lib/ring-config-chain.ts → isNativeTokenOnrampEnabled(). Runtime role gate: assertNativeTokenOnrampAllowed (confidential/admin/superadmin + flag).

    Заметки по безопасности

    • Custodial ключи никогда не покидают сервер; UI использует Server Actions / authenticated routes
    • Desk требует subscriber+; native onramp требует confidential+ и feature flag
    • Fiat spend должен использовать getFiatCreditAccountingRate(): никогда не подавайте desk nativePerMainCurrency в debits credit ledger
    • Предпочитайте /api/wallet/token/*: retired aliases /api/wallet/ring/* удалены

    Wallet API

    Deep-dive: инвентарь Server Actions и HTTP.

    lib/payments/credit-balance.ts
    getFiatCreditAccountingRate
    credit.creditBalanceUnitToMainCurrency SSOT
    Deskfeatures/wallet/chains/solana/desk-service.tsQuote + execute (subscriber+)
    Desk oraclefeatures/wallet/services/native-token-oracle.tsnativePerMainCurrency только для desk
    Custodial sendfeatures/wallet/chains/native-token-transfer-service.tsGasless native transfer
    PSP checkoutlib/payments/conductor/payment-conductor.tswallet_topup, native_token_onramp
    Onramp gatelib/payments/confidential-token-onramp.tsassertNativeTokenOnrampAllowed
    Actionsapp/_actions/wallet.tsSession-facing wrappers
    NFT buyfeatures/nft-market/services/solana-market-client.tsMarket purchase settlement

    Facade API

    МетодAuth / gatesДелегирует
    initiateTopUpSession; amount 25–2000PaymentConductor wallet_topup; возвращает redirect
    initiateNativeOnrampSession + confidential+ + onramp flagPaymentConductor native_token_onramp
    quoteDesk / executeDeskassertTokenDeskSubscriberAccessdesk-service + oracle
    getNativeBalanceCaller userIdnative-token-transfer-service
    transferNativeCaller userIdtransfer service + wallet_transactions + publishWalletListUpdate(userId, 'updated')
    spendCreditsCaller userIdcreditBalanceService + fiat rate (+ credit:balance tunnel через service)
    ensureNativeWalletCaller передаёт id (OAuth-safe)ensure-wallet (+ wallet:list когда wallets меняются)
    ensureFundedSessionensure + optional credit floor
    purchaseNftListingIdempotency keySolanaMarketClient

    Также экспортируется: getWalletConductorNativeChain() → getNativeChain().

    Два rates: не смешивать

    RateSSOTИспользуется
    Fiat credit accountingcredit.creditBalanceUnitToMainCurrency через getFiatCreditAccountingRate()spendCredits, desk debit side, PaymentConductor credit_balance
    Token Desk oracleplatform_settings.web3.oracle.nativePerMainCurrencyтолько quoteDesk / executeDesk
    Граница Conductor

    Не принадлежит WalletConductor: store/membership checkout (store_order, membership_upgrade, credit_balance / native_token rails), lifecycle Membership SubscriptionConductor и внешний EVM POST /api/wallet/transfer (Polygon POL / SupportedCrypto). Для platform native custodial sends предпочитайте /api/wallet/token/transfer.

    Thin adapters (проверено)

    Server Actions (app/_actions/wallet.ts)

    ActionМетод Conductor
    ensureUserWalletsensureNativeWallet
    getNativeTokenBalanceActiongetNativeBalance
    spendCreditsspendCredits
    transferNativeTokenstransferNative
    executeDeskQuoteexecuteDesk
    initiateCreditTopupPaymentinitiateTopUp
    initiateNativeTokenOnrampPaymentinitiateNativeOnramp
    createPinAccessTokenActionensureNativeWallet

    Desk quote без action wrapper: только HTTP (POST /api/wallet/desk/quote). NFT buy: app/_actions/nft-market.ts → purchaseNftListing. OAuth: auth.ts → ensureNativeWallet.

    HTTP-маршруты, вызывающие WalletConductor

    MethodPathМетод Conductor
    POST/api/wallet/desk/quotequoteDesk
    POST/api/wallet/desk/executeexecuteDesk
    POST/api/wallet/ensureensureNativeWallet
    GET/api/wallet/token/balancegetNativeBalance
    POST/api/wallet/token/transfertransferNative
    POST/api/wallet/credit/spendspendCredits (fiat rate SSOT)

    Явно вне facade

    Path / surfaceПочему
    POST /api/wallet/transferПуть EVM SupportedCrypto: не Solana custodial SSOT
    POST /api/wallet/credit/topupChain-proof credit add через creditBalanceService (не card top-up)
    GET /api/wallet/credit/spend410 deprecated: используйте getSpendSummary / GET /api/wallet/credit/history
    Store / membership PaymentConductor purposesCheckout rails, не wallet facade

    Sequence: card → credit points

    initiateTopUp → wallet_topup

    См. Архитектура PaymentConductor для CheckoutRedirect и WayForPay для HPP POST.

    Sequence: ad-hoc credit spend

    spendCredits fiat SSOT

    Environment и config (проверено)

    KeyRole
    WALLET_ENCRYPTION_KEYШифрование custodial ключей
    SOLANA_RPC_URL / SOLANA_TREASURY_PRIVATE_KEYCustodial Solana + gas sponsorship
    CONFIDENTIAL_TOKEN_ONRAMP / NEXT_PUBLIC_CONFIDENTIAL_TOKEN_ONRAMP / desk nativeTokenOnrampГейт native card onramp (isNativeTokenOnrampEnabled)
    credit.creditBalanceUnitToMainCurrencyМножитель accounting fiat ledger
    ORACLE_QUOTE_SECRET / RING_ORACLE_DEFAULT_RATEDesk quote HMAC + fallback

    Server SSOT для onramp: lib/ring-config-chain.ts → isNativeTokenOnrampEnabled(). Runtime role gate: assertNativeTokenOnrampAllowed (confidential/admin/superadmin + flag).

    Заметки по безопасности

    • Custodial ключи никогда не покидают сервер; UI использует Server Actions / authenticated routes
    • Desk требует subscriber+; native onramp требует confidential+ и feature flag
    • Fiat spend должен использовать getFiatCreditAccountingRate(): никогда не подавайте desk nativePerMainCurrency в debits credit ledger
    • Предпочитайте /api/wallet/token/*: retired aliases /api/wallet/ring/* удалены

    Wallet API

    Deep-dive: инвентарь Server Actions и HTTP.