Концепции, ценность и типичные сценарии клонирования — меньше кода.
Концепции, ценность и типичные сценарии клонирования — меньше кода.
Preparing Ring content
Preparing Ring content
Preparing Ring content
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.
| Возможность | Метод | Результат |
|---|---|---|
| Карта → credit points | initiateTopUp | PaymentConductor wallet_topup → начисление в fiat ledger |
| Карта/PayPal → treasury native | initiateNativeOnramp | PaymentConductor native_token_onramp (confidential+) |
| Token Desk | quoteDesk / executeDesk | Credit points ↔ native по desk oracle (subscriber+) |
| Custodial перевод | transferNative | Gasless native перевод + строка wallet_transactions |
| Native баланс | getNativeBalance | Custodial баланс в native chain платформы |
Не в WalletConductor: списание при checkout store/membership (PaymentConductor credit_balance / SubscriptionConductor) и внешний EVM POST /api/wallet/transfer. Это намеренно отдельные SSOT-пути.
| Курс | SSOT | Где используется |
|---|---|---|
| Учёт fiat credit | ring-config.json → credit.creditBalanceUnitToMainCurrency (обычно 1) через getMainCurrencyCreditAccountingRate() | spendCredits, сторона списания desk, checkout credit_balance |
| Token Desk oracle | platform_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).
Subscriber+ конвертирует points ↔ native по desk oracle. Изменение nativePerMainCurrency никогда не меняет математику store или ad-hoc списания кредитов.
Confidential+ карта/PayPal → treasury native (за feature-флагом). Не начисляет credit points.
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.
| Возможность | Метод | Результат |
|---|---|---|
| Карта → credit points | initiateTopUp | PaymentConductor wallet_topup → начисление в fiat ledger |
| Карта/PayPal → treasury native | initiateNativeOnramp | PaymentConductor native_token_onramp (confidential+) |
| Token Desk | quoteDesk / executeDesk | Credit points ↔ native по desk oracle (subscriber+) |
| Custodial перевод | transferNative | Gasless native перевод + строка wallet_transactions |
| Native баланс | getNativeBalance | Custodial баланс в native chain платформы |
Не в WalletConductor: списание при checkout store/membership (PaymentConductor credit_balance / SubscriptionConductor) и внешний EVM POST /api/wallet/transfer. Это намеренно отдельные SSOT-пути.
| Курс | SSOT | Где используется |
|---|---|---|
| Учёт fiat credit | ring-config.json → credit.creditBalanceUnitToMainCurrency (обычно 1) через getMainCurrencyCreditAccountingRate() | spendCredits, сторона списания desk, checkout credit_balance |
| Token Desk oracle | platform_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).
Subscriber+ конвертирует points ↔ native по desk oracle. Изменение nativePerMainCurrency никогда не меняет математику store или ad-hoc списания кредитов.
Confidential+ карта/PayPal → treasury native (за feature-флагом). Не начисляет credit points.
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.
| Возможность | Метод | Результат |
|---|---|---|
| Карта → credit points | initiateTopUp | PaymentConductor wallet_topup → начисление в fiat ledger |
| Карта/PayPal → treasury native | initiateNativeOnramp | PaymentConductor native_token_onramp (confidential+) |
| Token Desk | quoteDesk / executeDesk | Credit points ↔ native по desk oracle (subscriber+) |
| Custodial перевод | transferNative | Gasless native перевод + строка wallet_transactions |
| Native баланс | getNativeBalance | Custodial баланс в native chain платформы |
Не в WalletConductor: списание при checkout store/membership (PaymentConductor credit_balance / SubscriptionConductor) и внешний EVM POST /api/wallet/transfer. Это намеренно отдельные SSOT-пути.
| Курс | SSOT | Где используется |
|---|---|---|
| Учёт fiat credit | ring-config.json → credit.creditBalanceUnitToMainCurrency (обычно 1) через getMainCurrencyCreditAccountingRate() | spendCredits, сторона списания desk, checkout credit_balance |
| Token Desk oracle | platform_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).
Subscriber+ конвертирует points ↔ native по desk oracle. Изменение nativePerMainCurrency никогда не меняет математику store или ad-hoc списания кредитов.
Confidential+ карта/PayPal → treasury native (за feature-флагом). Не начисляет credit points.
| Ad-hoc списание кредитов |
spendCredits |
Списание из fiat ledger по creditBalanceUnitToMainCurrency |
| Выдача кошелька | ensureNativeWallet | Атомарные multi-chain кошельки (OAuth-safe, без сессии) |
| Гейт минимального кредита | ensureFunded | Выдача с проверкой сессии + минимальный порог кредита |
| Покупка на NFT market | purchaseNftListing | Идемпотентная покупка за RING через Solana market client |
Подтвердите SSOT единицы кредита
Оставьте credit.creditBalanceUnitToMainCurrency: 1 в ring-config.json, если вы намеренно не масштабируете points относительно fiat. Изменения desk oracle никогда не влияют на checkout магазина или POST /api/wallet/credit/spend.
Отделите desk oracle от fiat
Superadmin задаёт nativePerMainCurrency только для конвертации на desk. Не ожидайте этот курс при ad-hoc списании кредитов.
Осторожно включайте 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 ledger | features/wallet/services/credit-balance-service.ts |
| Fiat-курс | lib/ring-config-core.ts → getCreditUnitToMainCurrencyRate / lib/payments/credit-balance.ts → getMainCurrencyCreditAccountingRate |
| Desk | features/wallet/chains/solana/desk-service.ts |
| Desk oracle | features/wallet/services/native-token-oracle.ts |
| Custodial перевод | features/wallet/chains/native-token-transfer-service.ts |
| PSP checkout | lib/payments/conductor/payment-conductor.ts |
| Store credit rail | lib/payments/processors/credit-balance.processor.ts (PaymentConductor, не WC) |
| Actions | app/_actions/wallet.ts |
| Покупка NFT | features/nft-market/services/solana-market-client.ts |
| Метод | Auth / гейты | Примечания |
|---|---|---|
ensureNativeWallet | Вызывающий передаёт id | OAuth-safe; возвращает { ok, native, wallets } |
ensureFunded | Сессия | Выдача + опциональный минимум кредита |
initiateTopUp | Сессия | Сумма 25–2000; purpose wallet_topup |
initiateNativeOnramp | Сессия + confidential metadata | Опциональный processor paypal/stripe/wayforpay |
quoteDesk / executeDesk | assertTokenDeskSubscriberAccess | Solana desk SSOT |
transferNative | Вызывающий передаёт userId | Пишет wallet_transactions; обновляет контакты |
spendCredits | Вызывающий передаёт userId | По умолчанию usdRate = getMainCurrencyCreditAccountingRate() |
purchaseNftListing | Ключ идемпотентности | Статус: pending → submitted → confirmed / failed |
getNativeBalance | Вызывающий передаёт userId | Тонкая обёртка над transfer service |
Вкладка Card не передаёт processor (SSOT в env). Вкладка PayPal задаёт processor=paypal. Клиент: lib/payments/checkout-redirect.ts.
| Ключ | Роль |
|---|---|
WALLET_ENCRYPTION_KEY | Шифрование custodial ключей |
SOLANA_RPC_URL / SOLANA_TREASURY_PRIVATE_KEY | Custodial Solana + спонсирование gas |
CONFIDENTIAL_TOKEN_ONRAMP / desk nativeTokenOnramp | Гейт native onramp картой |
credit.creditBalanceUnitToMainCurrency | Множитель учёта fiat ledger |
ORACLE_QUOTE_SECRET / RING_ORACLE_DEFAULT_RATE | HMAC котировки desk + fallback |
PSP rails для пополнения и onramp.
| Ad-hoc списание кредитов |
spendCredits |
Списание из fiat ledger по creditBalanceUnitToMainCurrency |
| Выдача кошелька | ensureNativeWallet | Атомарные multi-chain кошельки (OAuth-safe, без сессии) |
| Гейт минимального кредита | ensureFunded | Выдача с проверкой сессии + минимальный порог кредита |
| Покупка на NFT market | purchaseNftListing | Идемпотентная покупка за RING через Solana market client |
Подтвердите SSOT единицы кредита
Оставьте credit.creditBalanceUnitToMainCurrency: 1 в ring-config.json, если вы намеренно не масштабируете points относительно fiat. Изменения desk oracle никогда не влияют на checkout магазина или POST /api/wallet/credit/spend.
Отделите desk oracle от fiat
Superadmin задаёт nativePerMainCurrency только для конвертации на desk. Не ожидайте этот курс при ad-hoc списании кредитов.
Осторожно включайте 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 ledger | features/wallet/services/credit-balance-service.ts |
| Fiat-курс | lib/ring-config-core.ts → getCreditUnitToMainCurrencyRate / lib/payments/credit-balance.ts → getMainCurrencyCreditAccountingRate |
| Desk | features/wallet/chains/solana/desk-service.ts |
| Desk oracle | features/wallet/services/native-token-oracle.ts |
| Custodial перевод | features/wallet/chains/native-token-transfer-service.ts |
| PSP checkout | lib/payments/conductor/payment-conductor.ts |
| Store credit rail | lib/payments/processors/credit-balance.processor.ts (PaymentConductor, не WC) |
| Actions | app/_actions/wallet.ts |
| Покупка NFT | features/nft-market/services/solana-market-client.ts |
| Метод | Auth / гейты | Примечания |
|---|---|---|
ensureNativeWallet | Вызывающий передаёт id | OAuth-safe; возвращает { ok, native, wallets } |
ensureFunded | Сессия | Выдача + опциональный минимум кредита |
initiateTopUp | Сессия | Сумма 25–2000; purpose wallet_topup |
initiateNativeOnramp | Сессия + confidential metadata | Опциональный processor paypal/stripe/wayforpay |
quoteDesk / executeDesk | assertTokenDeskSubscriberAccess | Solana desk SSOT |
transferNative | Вызывающий передаёт userId | Пишет wallet_transactions; обновляет контакты |
spendCredits | Вызывающий передаёт userId | По умолчанию usdRate = getMainCurrencyCreditAccountingRate() |
purchaseNftListing | Ключ идемпотентности | Статус: pending → submitted → confirmed / failed |
getNativeBalance | Вызывающий передаёт userId | Тонкая обёртка над transfer service |
Вкладка Card не передаёт processor (SSOT в env). Вкладка PayPal задаёт processor=paypal. Клиент: lib/payments/checkout-redirect.ts.
| Ключ | Роль |
|---|---|
WALLET_ENCRYPTION_KEY | Шифрование custodial ключей |
SOLANA_RPC_URL / SOLANA_TREASURY_PRIVATE_KEY | Custodial Solana + спонсирование gas |
CONFIDENTIAL_TOKEN_ONRAMP / desk nativeTokenOnramp | Гейт native onramp картой |
credit.creditBalanceUnitToMainCurrency | Множитель учёта fiat ledger |
ORACLE_QUOTE_SECRET / RING_ORACLE_DEFAULT_RATE | HMAC котировки desk + fallback |
PSP rails для пополнения и onramp.
| Ad-hoc списание кредитов |
spendCredits |
Списание из fiat ledger по creditBalanceUnitToMainCurrency |
| Выдача кошелька | ensureNativeWallet | Атомарные multi-chain кошельки (OAuth-safe, без сессии) |
| Гейт минимального кредита | ensureFunded | Выдача с проверкой сессии + минимальный порог кредита |
| Покупка на NFT market | purchaseNftListing | Идемпотентная покупка за RING через Solana market client |
Подтвердите SSOT единицы кредита
Оставьте credit.creditBalanceUnitToMainCurrency: 1 в ring-config.json, если вы намеренно не масштабируете points относительно fiat. Изменения desk oracle никогда не влияют на checkout магазина или POST /api/wallet/credit/spend.
Отделите desk oracle от fiat
Superadmin задаёт nativePerMainCurrency только для конвертации на desk. Не ожидайте этот курс при ad-hoc списании кредитов.
Осторожно включайте 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 ledger | features/wallet/services/credit-balance-service.ts |
| Fiat-курс | lib/ring-config-core.ts → getCreditUnitToMainCurrencyRate / lib/payments/credit-balance.ts → getMainCurrencyCreditAccountingRate |
| Desk | features/wallet/chains/solana/desk-service.ts |
| Desk oracle | features/wallet/services/native-token-oracle.ts |
| Custodial перевод | features/wallet/chains/native-token-transfer-service.ts |
| PSP checkout | lib/payments/conductor/payment-conductor.ts |
| Store credit rail | lib/payments/processors/credit-balance.processor.ts (PaymentConductor, не WC) |
| Actions | app/_actions/wallet.ts |
| Покупка NFT | features/nft-market/services/solana-market-client.ts |
| Метод | Auth / гейты | Примечания |
|---|---|---|
ensureNativeWallet | Вызывающий передаёт id | OAuth-safe; возвращает { ok, native, wallets } |
ensureFunded | Сессия | Выдача + опциональный минимум кредита |
initiateTopUp | Сессия | Сумма 25–2000; purpose wallet_topup |
initiateNativeOnramp | Сессия + confidential metadata | Опциональный processor paypal/stripe/wayforpay |
quoteDesk / executeDesk | assertTokenDeskSubscriberAccess | Solana desk SSOT |
transferNative | Вызывающий передаёт userId | Пишет wallet_transactions; обновляет контакты |
spendCredits | Вызывающий передаёт userId | По умолчанию usdRate = getMainCurrencyCreditAccountingRate() |
purchaseNftListing | Ключ идемпотентности | Статус: pending → submitted → confirmed / failed |
getNativeBalance | Вызывающий передаёт userId | Тонкая обёртка над transfer service |
Вкладка Card не передаёт processor (SSOT в env). Вкладка PayPal задаёт processor=paypal. Клиент: lib/payments/checkout-redirect.ts.
| Ключ | Роль |
|---|---|
WALLET_ENCRYPTION_KEY | Шифрование custodial ключей |
SOLANA_RPC_URL / SOLANA_TREASURY_PRIVATE_KEY | Custodial Solana + спонсирование gas |
CONFIDENTIAL_TOKEN_ONRAMP / desk nativeTokenOnramp | Гейт native onramp картой |
credit.creditBalanceUnitToMainCurrency | Множитель учёта fiat ledger |
ORACLE_QUOTE_SECRET / RING_ORACLE_DEFAULT_RATE | HMAC котировки desk + fallback |
PSP rails для пополнения и onramp.