МожливостіСутності
Документація
    Ring Platform

    Децентралізоване самобудівне майбутнє

    Увійти
    Сутності
    Можливості
    Магазин
    Документація
    Концепції
    RING ЕкономікаSonoratek LLCГлобальний впливAI зустрічає Web3
    Розпочати
    Швидкий стартКалькуляторДорожня карта
    Конфіденційність|Контакти
    v1.104.26|Sonoratek LLC

    Documentation

    Концепції, цінність і типові сценарії

    Ласкаво просимо до Ring
    Швидкий довідник
    Початок роботи
    Передумови
    Встановлення
    Валідація першого успіху
    Наступні кроки
    Функції
    Магазин
    Склад і залишки
    Керування вендорами
    Комісії та розрахунки
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Інтеграція платежів
    Публічні пули та DAO-банки
    Інтеграція WayForPay
    Web3 Гаманець
    WalletConductor
    Кредитні винагороди
    Партнерська та реферальна підтримка
    Реферальні коди (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Система Стейкінга Токенів
    Лабораторія проєкту власника (Owner Project Lab)
    Сутності
    Можливості
    AI Matcher
    Повідомлення
    Завдання Ring
    WebRTC-дзвінки та STUNner TURN
    Ігри з друзями
    Модуль Новин - Цифровий Газетний Досвід
    Блоги учасників
    Сторінки публічного профілю
    Віджети профілю облікового запису
    Ring File Cabinet
    Система Резервування Імен Користувачів
    Науковий редактор
    Notifications
    Push-сповіщення через FCM (Ring)
    Email AI-CRM
    Ring Mailer і RingdomX Mail
    Протокол Tunnel
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Безпека та відповідність
    Консоль адміністратора
    Адмінська Wiki
    Керування через Telegram
    Система локалей
    Мобільний Досвід
    Паттерни Оптимізації Продуктивності
    Приклади
    Швидкий старт
    Базове налаштування
    Білий лейбл
    Користувацьке брендування
    Інтеграція Web3
    Реальні приклади
    Розширені функції
    Кастомізація
    Швидкий старт — ваш перший клон Ring
    Повний посібник налаштування
    Вертикальні пресети (SSOT)
    Ringization playbook
    Брендування
    Теми
    Функції
    Локалізація
    Налаштування токеноміки
    Інтеграція платіжних шлюзів
    Еталонні деплої Ring
    Конфігурація
    Публічні змінні середовища
    Секрети Order Lab
    Project ID WalletConnect (Reown Cloud)
    Підтримувані сервіси
    Вікі NODUS (знання проєкту)
    Плейбук конфігурації
    Web3
    Token launch jurisdictions
    Гаманець
    Поради з безпеки гаманця
    Інтеграції
    Ethereum гаманці (Wagmi v3)
    RingFileBase (API об’єктного сховища)
    Ring CDN (edge RingFileBase)
    Розгортання
    Розгортання на власному сервері
    Vercel
    Docker
    Конфігурація Середовища
    Моніторинг та Аналітика
    Оптимізація продуктивності
    Резервне копіювання і відновлення
    Архітектура
    Data Model
    Security
    Real Time
    Синхронізація discovery після мутацій
    Архітектура PaymentConductor
    Архітектура WalletConductor
    Архітектура 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
    Швидкий довідник
    Початок роботи
    Передумови
    Встановлення
    Валідація першого успіху
    Наступні кроки
    Функції
    Магазин
    Склад і залишки
    Керування вендорами
    Комісії та розрахунки
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Інтеграція платежів
    Публічні пули та DAO-банки
    Інтеграція WayForPay
    Web3 Гаманець
    WalletConductor
    Кредитні винагороди
    Партнерська та реферальна підтримка
    Реферальні коди (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Система Стейкінга Токенів
    Лабораторія проєкту власника (Owner Project Lab)
    Сутності
    Можливості
    AI Matcher
    Повідомлення
    Завдання Ring
    WebRTC-дзвінки та STUNner TURN
    Ігри з друзями
    Модуль Новин - Цифровий Газетний Досвід
    Блоги учасників
    Сторінки публічного профілю
    Віджети профілю облікового запису
    Ring File Cabinet
    Система Резервування Імен Користувачів
    Науковий редактор
    Notifications
    Push-сповіщення через FCM (Ring)
    Email AI-CRM
    Ring Mailer і RingdomX Mail
    Протокол Tunnel
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Безпека та відповідність
    Консоль адміністратора
    Адмінська Wiki
    Керування через Telegram
    Система локалей
    Мобільний Досвід
    Паттерни Оптимізації Продуктивності
    Приклади
    Швидкий старт
    Базове налаштування
    Білий лейбл
    Користувацьке брендування
    Інтеграція Web3
    Реальні приклади
    Розширені функції
    Кастомізація
    Швидкий старт — ваш перший клон Ring
    Повний посібник налаштування
    Вертикальні пресети (SSOT)
    Ringization playbook
    Брендування
    Теми
    Функції
    Локалізація
    Налаштування токеноміки
    Інтеграція платіжних шлюзів
    Еталонні деплої Ring
    Конфігурація
    Публічні змінні середовища
    Секрети Order Lab
    Project ID WalletConnect (Reown Cloud)
    Підтримувані сервіси
    Вікі NODUS (знання проєкту)
    Плейбук конфігурації
    Web3
    Token launch jurisdictions
    Гаманець
    Поради з безпеки гаманця
    Інтеграції
    Ethereum гаманці (Wagmi v3)
    RingFileBase (API об’єктного сховища)
    Ring CDN (edge RingFileBase)
    Розгортання
    Розгортання на власному сервері
    Vercel
    Docker
    Конфігурація Середовища
    Моніторинг та Аналітика
    Оптимізація продуктивності
    Резервне копіювання і відновлення
    Архітектура
    Data Model
    Security
    Real Time
    Синхронізація discovery після мутацій
    Архітектура PaymentConductor
    Архітектура WalletConductor
    Архітектура 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
    Швидкий довідник
    Початок роботи
    Передумови
    Встановлення
    Валідація першого успіху
    Наступні кроки
    Функції
    Магазин
    Склад і залишки
    Керування вендорами
    Комісії та розрахунки
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Інтеграція платежів
    Публічні пули та DAO-банки
    Інтеграція WayForPay
    Web3 Гаманець
    WalletConductor
    Кредитні винагороди
    Партнерська та реферальна підтримка
    Реферальні коди (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Система Стейкінга Токенів
    Лабораторія проєкту власника (Owner Project Lab)
    Сутності
    Можливості
    AI Matcher
    Повідомлення
    Завдання Ring
    WebRTC-дзвінки та STUNner TURN
    Ігри з друзями
    Модуль Новин - Цифровий Газетний Досвід
    Блоги учасників
    Сторінки публічного профілю
    Віджети профілю облікового запису
    Ring File Cabinet
    Система Резервування Імен Користувачів
    Науковий редактор
    Notifications
    Push-сповіщення через FCM (Ring)
    Email AI-CRM
    Ring Mailer і RingdomX Mail
    Протокол Tunnel
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Безпека та відповідність
    Консоль адміністратора
    Адмінська Wiki
    Керування через Telegram
    Система локалей
    Мобільний Досвід
    Паттерни Оптимізації Продуктивності
    Приклади
    Швидкий старт
    Базове налаштування
    Білий лейбл
    Користувацьке брендування
    Інтеграція Web3
    Реальні приклади
    Розширені функції
    Кастомізація
    Швидкий старт — ваш перший клон Ring
    Повний посібник налаштування
    Вертикальні пресети (SSOT)
    Ringization playbook
    Брендування
    Теми
    Функції
    Локалізація
    Налаштування токеноміки
    Інтеграція платіжних шлюзів
    Еталонні деплої Ring
    Конфігурація
    Публічні змінні середовища
    Секрети Order Lab
    Project ID WalletConnect (Reown Cloud)
    Підтримувані сервіси
    Вікі NODUS (знання проєкту)
    Плейбук конфігурації
    Web3
    Token launch jurisdictions
    Гаманець
    Поради з безпеки гаманця
    Інтеграції
    Ethereum гаманці (Wagmi v3)
    RingFileBase (API об’єктного сховища)
    Ring CDN (edge RingFileBase)
    Розгортання
    Розгортання на власному сервері
    Vercel
    Docker
    Конфігурація Середовища
    Моніторинг та Аналітика
    Оптимізація продуктивності
    Резервне копіювання і відновлення
    Архітектура
    Data Model
    Security
    Real Time
    Синхронізація discovery після мутацій
    Архітектура PaymentConductor
    Архітектура WalletConductor
    Архітектура 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 — це server-only грошовий фасад Ring Platform для кастодіальних гаманців native token і фіатного кредитного ledger. Тонкі адаптери викликають conductor; PaymentConductor володіє checkout PSP для wallet_topup і native_token_onramp. Передача браузера після top-up — це redirect Conductor + followCheckoutResult — див. Архітектура PaymentConductor.

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

    Використовуйте вкладки Founder / Developer на бічній панелі документації, щоб відфільтрувати цю сторінку. Огляд функції (цінність + чекліст): WalletConductor. Інвентар HTTP/actions: Wallet API.

    Огляд функції

    Можливості, SSOT двох курсів, чекліст оператора

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

    Ledger, webhooks, обробники purpose

    Wallet API

    Actions і HTTP-поверхня

    Чому ця архітектура важлива

    • Єдиний грошовий стрижень — top-up, Token Desk, кастодіальне надсилання, разове витрачання кредитів і купівля на NFT market використовують один фасад замість розрізнених викликів PSP/ledger.
    • Чіткий поділ продукту — поповнення карткою купує credit points; desk конвертує points ↔ native; onramp confidential+ купує treasury native без додавання points.
    • Безпечні ручки оператора — desk oracle (nativePerMainCurrency) ніколи не переписує математику store checkout або разового витрачання кредитів (credit.creditBalanceUnitToMainCurrency).
    • Межа за задумом — checkout store/membership і зовнішній EVM POST /api/wallet/transfer залишаються поза WalletConductor, щоб клони випадково не змішували рейки.

    Потік запиту

    WalletConductor — адаптери → фасад → залежності

    Основні модулі

    МодульШляхВідповідальність
    Фасадfeatures/wallet/conductor/wallet-conductor.tsУсі публічні методи оркестрації
    Provisionfeatures/wallet/services/ensure-wallet.tsАтомарне створення гаманця в кількох мережах (використовується ensureNativeWallet)
    Credit ledgerfeatures/wallet/services/credit-balance-service.tsДодавання/витрачання фіатних points
    Fiat rate →

    Пов’язана документація

    Related documentation

    Tunnel Protocol

    Залежність: після transferNative / ensure conductor розсилає `wallet:list` через publishWalletListUpdate.

    WalletConductor

    Наступний крок: продуктовий гайд для операторів із двома аудиторіями.

    PaymentConductor architecture

    Той самий процес: PSP ledger і webhooks для wallet_topup / native_token_onramp.

    Wallet & Credit System

    Див. також: потоки dashboard гаманця для учасника.

    1. Документація
    2. /Архітектура
    3. /Архітектура WalletConductor

    Оновлено 6 вер. 2026 р.5 хв прослуховування

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

    WalletConductor — це server-only грошовий фасад Ring Platform для кастодіальних гаманців native token і фіатного кредитного ledger. Тонкі адаптери викликають conductor; PaymentConductor володіє checkout PSP для wallet_topup і native_token_onramp. Передача браузера після top-up — це redirect Conductor + followCheckoutResult — див. Архітектура PaymentConductor.

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

    Використовуйте вкладки Founder / Developer на бічній панелі документації, щоб відфільтрувати цю сторінку. Огляд функції (цінність + чекліст): WalletConductor. Інвентар HTTP/actions: Wallet API.

    Огляд функції

    Можливості, SSOT двох курсів, чекліст оператора

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

    Ledger, webhooks, обробники purpose

    Wallet API

    Actions і HTTP-поверхня

    Чому ця архітектура важлива

    • Єдиний грошовий стрижень — top-up, Token Desk, кастодіальне надсилання, разове витрачання кредитів і купівля на NFT market використовують один фасад замість розрізнених викликів PSP/ledger.
    • Чіткий поділ продукту — поповнення карткою купує credit points; desk конвертує points ↔ native; onramp confidential+ купує treasury native без додавання points.
    • Безпечні ручки оператора — desk oracle (nativePerMainCurrency) ніколи не переписує математику store checkout або разового витрачання кредитів (credit.creditBalanceUnitToMainCurrency).
    • Межа за задумом — checkout store/membership і зовнішній EVM POST /api/wallet/transfer залишаються поза WalletConductor, щоб клони випадково не змішували рейки.

    Потік запиту

    WalletConductor — адаптери → фасад → залежності

    Основні модулі

    МодульШляхВідповідальність
    Фасадfeatures/wallet/conductor/wallet-conductor.tsУсі публічні методи оркестрації
    Provisionfeatures/wallet/services/ensure-wallet.tsАтомарне створення гаманця в кількох мережах (використовується ensureNativeWallet)
    Credit ledgerfeatures/wallet/services/credit-balance-service.tsДодавання/витрачання фіатних points
    Fiat rate →

    Пов’язана документація

    Related documentation

    Tunnel Protocol

    Залежність: після transferNative / ensure conductor розсилає `wallet:list` через publishWalletListUpdate.

    WalletConductor

    Наступний крок: продуктовий гайд для операторів із двома аудиторіями.

    PaymentConductor architecture

    Той самий процес: PSP ledger і webhooks для wallet_topup / native_token_onramp.

    Wallet & Credit System

    Див. також: потоки dashboard гаманця для учасника.

    1. Документація
    2. /Архітектура
    3. /Архітектура WalletConductor

    Оновлено 6 вер. 2026 р.5 хв прослуховування

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

    WalletConductor — це server-only грошовий фасад Ring Platform для кастодіальних гаманців native token і фіатного кредитного ledger. Тонкі адаптери викликають conductor; PaymentConductor володіє checkout PSP для wallet_topup і native_token_onramp. Передача браузера після top-up — це redirect Conductor + followCheckoutResult — див. Архітектура PaymentConductor.

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

    Використовуйте вкладки Founder / Developer на бічній панелі документації, щоб відфільтрувати цю сторінку. Огляд функції (цінність + чекліст): WalletConductor. Інвентар HTTP/actions: Wallet API.

    Огляд функції

    Можливості, SSOT двох курсів, чекліст оператора

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

    Ledger, webhooks, обробники purpose

    Wallet API

    Actions і HTTP-поверхня

    Чому ця архітектура важлива

    • Єдиний грошовий стрижень — top-up, Token Desk, кастодіальне надсилання, разове витрачання кредитів і купівля на NFT market використовують один фасад замість розрізнених викликів PSP/ledger.
    • Чіткий поділ продукту — поповнення карткою купує credit points; desk конвертує points ↔ native; onramp confidential+ купує treasury native без додавання points.
    • Безпечні ручки оператора — desk oracle (nativePerMainCurrency) ніколи не переписує математику store checkout або разового витрачання кредитів (credit.creditBalanceUnitToMainCurrency).
    • Межа за задумом — checkout store/membership і зовнішній EVM POST /api/wallet/transfer залишаються поза WalletConductor, щоб клони випадково не змішували рейки.

    Потік запиту

    WalletConductor — адаптери → фасад → залежності

    Основні модулі

    МодульШляхВідповідальність
    Фасадfeatures/wallet/conductor/wallet-conductor.tsУсі публічні методи оркестрації
    Provisionfeatures/wallet/services/ensure-wallet.tsАтомарне створення гаманця в кількох мережах (використовується ensureNativeWallet)
    Credit ledgerfeatures/wallet/services/credit-balance-service.tsДодавання/витрачання фіатних points
    Fiat rate →

    Пов’язана документація

    Related documentation

    Tunnel Protocol

    Залежність: після transferNative / ensure conductor розсилає `wallet:list` через publishWalletListUpdate.

    WalletConductor

    Наступний крок: продуктовий гайд для операторів із двома аудиторіями.

    PaymentConductor architecture

    Той самий процес: PSP ledger і webhooks для wallet_topup / native_token_onramp.

    Wallet & Credit System

    Див. також: потоки dashboard гаманця для учасника.

    1. Документація
    2. /Архітектура
    3. /Архітектура WalletConductor

    Оновлено 6 вер. 2026 р.5 хв прослуховування

    lib/payments/credit-balance.ts
    getFiatCreditAccountingRate
    SSOT credit.creditBalanceUnitToMainCurrency
    Deskfeatures/wallet/chains/solana/desk-service.tsКотирування + виконання (subscriber+)
    Desk oraclefeatures/wallet/services/native-token-oracle.tsnativePerMainCurrency лише для desk
    Custodial sendfeatures/wallet/chains/native-token-transfer-service.tsGasless надсилання native
    PSP checkoutlib/payments/conductor/payment-conductor.tswallet_topup, native_token_onramp
    Onramp gatelib/payments/confidential-token-onramp.tsassertNativeTokenOnrampAllowed
    Actionsapp/_actions/wallet.tsОбгортки для сесії
    NFT buyfeatures/nft-market/services/solana-market-client.tsРозрахунок купівлі на market

    API фасаду

    МетодAuth / gatesДелегує до
    initiateTopUpСесія; amount 25–2000PaymentConductor wallet_topup; повертає redirect
    initiateNativeOnrampСесія + 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 supplies id (OAuth-safe)ensure-wallet (+ wallet:list коли wallets змінюються)
    ensureFundedСесіяensure + необов’язковий credit floor
    purchaseNftListingIdempotency keySolanaMarketClient

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

    Два курси — не змішуйте

    КурсSSOTВикористовується в
    Облік фіатних кредитівcredit.creditBalanceUnitToMainCurrency через getFiatCreditAccountingRate()spendCredits, debit side desk, PaymentConductor credit_balance
    Oracle Token Deskplatform_settings.web3.oracle.nativePerMainCurrencyлише quoteDesk / executeDesk
    Межа Conductor

    Не належить WalletConductor: checkout store/membership (store_order, membership_upgrade, рейки credit_balance / native_token), життєвий цикл membership SubscriptionConductor і зовнішній EVM POST /api/wallet/transfer (Polygon POL / SupportedCrypto). Для кастодіальних надсилань native платформи надавайте перевагу /api/wallet/token/transfer.

    Тонкі адаптери (перевірено)

    Server Actions (app/_actions/wallet.ts)

    ДіяМетод Conductor
    ensureUserWalletsensureNativeWallet
    getNativeTokenBalanceActiongetNativeBalance
    spendCreditsspendCredits
    transferNativeTokenstransferNative
    executeDeskQuoteexecuteDesk
    initiateCreditTopupPaymentinitiateTopUp
    initiateNativeTokenOnrampPaymentinitiateNativeOnramp
    createPinAccessTokenActionensureNativeWallet

    Desk quote не має action-обгортки — лише HTTP (POST /api/wallet/desk/quote). Купівля NFT: app/_actions/nft-market.ts → purchaseNftListing. OAuth: auth.ts → ensureNativeWallet.

    HTTP-маршрути, які викликають WalletConductor

    МетодPathМетод 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)

    Явно поза фасадом

    Шлях / поверхняЧому
    POST /api/wallet/transferШлях EVM SupportedCrypto — не Solana custodial SSOT
    POST /api/wallet/credit/topupChain-proof додавання кредитів через creditBalanceService (не card top-up)
    GET /api/wallet/credit/spend410 deprecated — використовуйте getSpendSummary / GET /api/wallet/credit/history
    Store / membership purposes PaymentConductorCheckout-рейки, а не фасад wallet

    Послідовність — картка → credit points

    initiateTopUp → wallet_topup

    Див. Архітектура PaymentConductor щодо CheckoutRedirect і WayForPay щодо HPP POST.

    Послідовність — разове витрачання кредитів

    spendCredits — SSOT фіатного курсу

    Середовище й конфігурація (перевірено)

    КлючРоль
    WALLET_ENCRYPTION_KEYШифрування кастодіальних ключів
    SOLANA_RPC_URL / SOLANA_TREASURY_PRIVATE_KEYКастодіальний Solana + спонсорування gas
    CONFIDENTIAL_TOKEN_ONRAMP / NEXT_PUBLIC_CONFIDENTIAL_TOKEN_ONRAMP / desk nativeTokenOnrampGate native card onramp (isNativeTokenOnrampEnabled)
    credit.creditBalanceUnitToMainCurrencyМножник обліку фіатного ledger
    ORACLE_QUOTE_SECRET / RING_ORACLE_DEFAULT_RATEHMAC котирування desk + fallback

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

    Нотатки з безпеки

    • Кастодіальні ключі ніколи не залишають сервер; UI використовує Server Actions / автентифіковані маршрути
    • Desk потребує subscriber+; native onramp потребує confidential+ і feature flag
    • Фіатне витрачання має використовувати getFiatCreditAccountingRate() — ніколи не передавайте desk nativePerMainCurrency у дебети кредитного ledger
    • Надавайте перевагу /api/wallet/token/* — застарілі псевдоніми /api/wallet/ring/* видалено

    Wallet API

    Поглиблення: Server Actions та інвентар HTTP.

    lib/payments/credit-balance.ts
    getFiatCreditAccountingRate
    SSOT credit.creditBalanceUnitToMainCurrency
    Deskfeatures/wallet/chains/solana/desk-service.tsКотирування + виконання (subscriber+)
    Desk oraclefeatures/wallet/services/native-token-oracle.tsnativePerMainCurrency лише для desk
    Custodial sendfeatures/wallet/chains/native-token-transfer-service.tsGasless надсилання native
    PSP checkoutlib/payments/conductor/payment-conductor.tswallet_topup, native_token_onramp
    Onramp gatelib/payments/confidential-token-onramp.tsassertNativeTokenOnrampAllowed
    Actionsapp/_actions/wallet.tsОбгортки для сесії
    NFT buyfeatures/nft-market/services/solana-market-client.tsРозрахунок купівлі на market

    API фасаду

    МетодAuth / gatesДелегує до
    initiateTopUpСесія; amount 25–2000PaymentConductor wallet_topup; повертає redirect
    initiateNativeOnrampСесія + 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 supplies id (OAuth-safe)ensure-wallet (+ wallet:list коли wallets змінюються)
    ensureFundedСесіяensure + необов’язковий credit floor
    purchaseNftListingIdempotency keySolanaMarketClient

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

    Два курси — не змішуйте

    КурсSSOTВикористовується в
    Облік фіатних кредитівcredit.creditBalanceUnitToMainCurrency через getFiatCreditAccountingRate()spendCredits, debit side desk, PaymentConductor credit_balance
    Oracle Token Deskplatform_settings.web3.oracle.nativePerMainCurrencyлише quoteDesk / executeDesk
    Межа Conductor

    Не належить WalletConductor: checkout store/membership (store_order, membership_upgrade, рейки credit_balance / native_token), життєвий цикл membership SubscriptionConductor і зовнішній EVM POST /api/wallet/transfer (Polygon POL / SupportedCrypto). Для кастодіальних надсилань native платформи надавайте перевагу /api/wallet/token/transfer.

    Тонкі адаптери (перевірено)

    Server Actions (app/_actions/wallet.ts)

    ДіяМетод Conductor
    ensureUserWalletsensureNativeWallet
    getNativeTokenBalanceActiongetNativeBalance
    spendCreditsspendCredits
    transferNativeTokenstransferNative
    executeDeskQuoteexecuteDesk
    initiateCreditTopupPaymentinitiateTopUp
    initiateNativeTokenOnrampPaymentinitiateNativeOnramp
    createPinAccessTokenActionensureNativeWallet

    Desk quote не має action-обгортки — лише HTTP (POST /api/wallet/desk/quote). Купівля NFT: app/_actions/nft-market.ts → purchaseNftListing. OAuth: auth.ts → ensureNativeWallet.

    HTTP-маршрути, які викликають WalletConductor

    МетодPathМетод 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)

    Явно поза фасадом

    Шлях / поверхняЧому
    POST /api/wallet/transferШлях EVM SupportedCrypto — не Solana custodial SSOT
    POST /api/wallet/credit/topupChain-proof додавання кредитів через creditBalanceService (не card top-up)
    GET /api/wallet/credit/spend410 deprecated — використовуйте getSpendSummary / GET /api/wallet/credit/history
    Store / membership purposes PaymentConductorCheckout-рейки, а не фасад wallet

    Послідовність — картка → credit points

    initiateTopUp → wallet_topup

    Див. Архітектура PaymentConductor щодо CheckoutRedirect і WayForPay щодо HPP POST.

    Послідовність — разове витрачання кредитів

    spendCredits — SSOT фіатного курсу

    Середовище й конфігурація (перевірено)

    КлючРоль
    WALLET_ENCRYPTION_KEYШифрування кастодіальних ключів
    SOLANA_RPC_URL / SOLANA_TREASURY_PRIVATE_KEYКастодіальний Solana + спонсорування gas
    CONFIDENTIAL_TOKEN_ONRAMP / NEXT_PUBLIC_CONFIDENTIAL_TOKEN_ONRAMP / desk nativeTokenOnrampGate native card onramp (isNativeTokenOnrampEnabled)
    credit.creditBalanceUnitToMainCurrencyМножник обліку фіатного ledger
    ORACLE_QUOTE_SECRET / RING_ORACLE_DEFAULT_RATEHMAC котирування desk + fallback

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

    Нотатки з безпеки

    • Кастодіальні ключі ніколи не залишають сервер; UI використовує Server Actions / автентифіковані маршрути
    • Desk потребує subscriber+; native onramp потребує confidential+ і feature flag
    • Фіатне витрачання має використовувати getFiatCreditAccountingRate() — ніколи не передавайте desk nativePerMainCurrency у дебети кредитного ledger
    • Надавайте перевагу /api/wallet/token/* — застарілі псевдоніми /api/wallet/ring/* видалено

    Wallet API

    Поглиблення: Server Actions та інвентар HTTP.

    lib/payments/credit-balance.ts
    getFiatCreditAccountingRate
    SSOT credit.creditBalanceUnitToMainCurrency
    Deskfeatures/wallet/chains/solana/desk-service.tsКотирування + виконання (subscriber+)
    Desk oraclefeatures/wallet/services/native-token-oracle.tsnativePerMainCurrency лише для desk
    Custodial sendfeatures/wallet/chains/native-token-transfer-service.tsGasless надсилання native
    PSP checkoutlib/payments/conductor/payment-conductor.tswallet_topup, native_token_onramp
    Onramp gatelib/payments/confidential-token-onramp.tsassertNativeTokenOnrampAllowed
    Actionsapp/_actions/wallet.tsОбгортки для сесії
    NFT buyfeatures/nft-market/services/solana-market-client.tsРозрахунок купівлі на market

    API фасаду

    МетодAuth / gatesДелегує до
    initiateTopUpСесія; amount 25–2000PaymentConductor wallet_topup; повертає redirect
    initiateNativeOnrampСесія + 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 supplies id (OAuth-safe)ensure-wallet (+ wallet:list коли wallets змінюються)
    ensureFundedСесіяensure + необов’язковий credit floor
    purchaseNftListingIdempotency keySolanaMarketClient

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

    Два курси — не змішуйте

    КурсSSOTВикористовується в
    Облік фіатних кредитівcredit.creditBalanceUnitToMainCurrency через getFiatCreditAccountingRate()spendCredits, debit side desk, PaymentConductor credit_balance
    Oracle Token Deskplatform_settings.web3.oracle.nativePerMainCurrencyлише quoteDesk / executeDesk
    Межа Conductor

    Не належить WalletConductor: checkout store/membership (store_order, membership_upgrade, рейки credit_balance / native_token), життєвий цикл membership SubscriptionConductor і зовнішній EVM POST /api/wallet/transfer (Polygon POL / SupportedCrypto). Для кастодіальних надсилань native платформи надавайте перевагу /api/wallet/token/transfer.

    Тонкі адаптери (перевірено)

    Server Actions (app/_actions/wallet.ts)

    ДіяМетод Conductor
    ensureUserWalletsensureNativeWallet
    getNativeTokenBalanceActiongetNativeBalance
    spendCreditsspendCredits
    transferNativeTokenstransferNative
    executeDeskQuoteexecuteDesk
    initiateCreditTopupPaymentinitiateTopUp
    initiateNativeTokenOnrampPaymentinitiateNativeOnramp
    createPinAccessTokenActionensureNativeWallet

    Desk quote не має action-обгортки — лише HTTP (POST /api/wallet/desk/quote). Купівля NFT: app/_actions/nft-market.ts → purchaseNftListing. OAuth: auth.ts → ensureNativeWallet.

    HTTP-маршрути, які викликають WalletConductor

    МетодPathМетод 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)

    Явно поза фасадом

    Шлях / поверхняЧому
    POST /api/wallet/transferШлях EVM SupportedCrypto — не Solana custodial SSOT
    POST /api/wallet/credit/topupChain-proof додавання кредитів через creditBalanceService (не card top-up)
    GET /api/wallet/credit/spend410 deprecated — використовуйте getSpendSummary / GET /api/wallet/credit/history
    Store / membership purposes PaymentConductorCheckout-рейки, а не фасад wallet

    Послідовність — картка → credit points

    initiateTopUp → wallet_topup

    Див. Архітектура PaymentConductor щодо CheckoutRedirect і WayForPay щодо HPP POST.

    Послідовність — разове витрачання кредитів

    spendCredits — SSOT фіатного курсу

    Середовище й конфігурація (перевірено)

    КлючРоль
    WALLET_ENCRYPTION_KEYШифрування кастодіальних ключів
    SOLANA_RPC_URL / SOLANA_TREASURY_PRIVATE_KEYКастодіальний Solana + спонсорування gas
    CONFIDENTIAL_TOKEN_ONRAMP / NEXT_PUBLIC_CONFIDENTIAL_TOKEN_ONRAMP / desk nativeTokenOnrampGate native card onramp (isNativeTokenOnrampEnabled)
    credit.creditBalanceUnitToMainCurrencyМножник обліку фіатного ledger
    ORACLE_QUOTE_SECRET / RING_ORACLE_DEFAULT_RATEHMAC котирування desk + fallback

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

    Нотатки з безпеки

    • Кастодіальні ключі ніколи не залишають сервер; UI використовує Server Actions / автентифіковані маршрути
    • Desk потребує subscriber+; native onramp потребує confidential+ і feature flag
    • Фіатне витрачання має використовувати getFiatCreditAccountingRate() — ніколи не передавайте desk nativePerMainCurrency у дебети кредитного ledger
    • Надавайте перевагу /api/wallet/token/* — застарілі псевдоніми /api/wallet/ring/* видалено

    Wallet API

    Поглиблення: Server Actions та інвентар HTTP.