Концепции, ценность и типичные сценарии клонирования — меньше кода.
Концепции, ценность и типичные сценарии клонирования — меньше кода.
Preparing Ring content
Preparing Ring content
Preparing Ring content
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, чеклист оператора
Ledger, webhooks, purpose handlers
Actions и HTTP surface
nativePerMainCurrency) никогда не переписывает math store checkout или ad-hoc credit spend (credit.creditBalanceUnitToMainCurrency).POST /api/wallet/transfer остаются вне WalletConductor, чтобы клоны случайно не смешивали rails.Depends-on: после transferNative / ensure conductor раздаёт `wallet:list` через publishWalletListUpdate.
Next-step: dual-audience продуктовый гайд для операторов.
Same-workflow: PSP ledger и webhooks для wallet_topup / native_token_onramp.
See-also: member-facing потоки wallet dashboard.
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, чеклист оператора
Ledger, webhooks, purpose handlers
Actions и HTTP surface
nativePerMainCurrency) никогда не переписывает math store checkout или ad-hoc credit spend (credit.creditBalanceUnitToMainCurrency).POST /api/wallet/transfer остаются вне WalletConductor, чтобы клоны случайно не смешивали rails.Depends-on: после transferNative / ensure conductor раздаёт `wallet:list` через publishWalletListUpdate.
Next-step: dual-audience продуктовый гайд для операторов.
Same-workflow: PSP ledger и webhooks для wallet_topup / native_token_onramp.
See-also: member-facing потоки wallet dashboard.
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, чеклист оператора
Ledger, webhooks, purpose handlers
Actions и HTTP surface
nativePerMainCurrency) никогда не переписывает math store checkout или ad-hoc credit spend (credit.creditBalanceUnitToMainCurrency).POST /api/wallet/transfer остаются вне WalletConductor, чтобы клоны случайно не смешивали rails.Depends-on: после transferNative / ensure conductor раздаёт `wallet:list` через publishWalletListUpdate.
Next-step: dual-audience продуктовый гайд для операторов.
Same-workflow: PSP ledger и webhooks для wallet_topup / native_token_onramp.
See-also: member-facing потоки wallet dashboard.
lib/payments/credit-balance.tsgetFiatCreditAccountingRatecredit.creditBalanceUnitToMainCurrency SSOT |
| Desk | features/wallet/chains/solana/desk-service.ts | Quote + execute (subscriber+) |
| Desk oracle | features/wallet/services/native-token-oracle.ts | nativePerMainCurrency только для desk |
| Custodial send | features/wallet/chains/native-token-transfer-service.ts | Gasless native transfer |
| PSP checkout | lib/payments/conductor/payment-conductor.ts | wallet_topup, native_token_onramp |
| Onramp gate | lib/payments/confidential-token-onramp.ts | assertNativeTokenOnrampAllowed |
| Actions | app/_actions/wallet.ts | Session-facing wrappers |
| NFT buy | features/nft-market/services/solana-market-client.ts | Market purchase settlement |
| Метод | Auth / gates | Делегирует |
|---|---|---|
initiateTopUp | Session; amount 25–2000 | PaymentConductor wallet_topup; возвращает redirect |
initiateNativeOnramp | Session + confidential+ + onramp flag | PaymentConductor native_token_onramp |
quoteDesk / executeDesk | assertTokenDeskSubscriberAccess | desk-service + oracle |
getNativeBalance | Caller userId | native-token-transfer-service |
transferNative | Caller userId | transfer service + wallet_transactions + publishWalletListUpdate(userId, 'updated') |
spendCredits | Caller userId | creditBalanceService + fiat rate (+ credit:balance tunnel через service) |
ensureNativeWallet | Caller передаёт id (OAuth-safe) | ensure-wallet (+ wallet:list когда wallets меняются) |
ensureFunded | Session | ensure + optional credit floor |
purchaseNftListing | Idempotency key | SolanaMarketClient |
Также экспортируется: getWalletConductorNativeChain() → getNativeChain().
| Rate | SSOT | Используется |
|---|---|---|
| Fiat credit accounting | credit.creditBalanceUnitToMainCurrency через getFiatCreditAccountingRate() | spendCredits, desk debit side, PaymentConductor credit_balance |
| Token Desk oracle | platform_settings.web3.oracle.nativePerMainCurrency | только quoteDesk / executeDesk |
Не принадлежит 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.
app/_actions/wallet.ts)| Action | Метод Conductor |
|---|---|
ensureUserWallets | ensureNativeWallet |
getNativeTokenBalanceAction | getNativeBalance |
spendCredits | spendCredits |
transferNativeTokens | transferNative |
executeDeskQuote | executeDesk |
initiateCreditTopupPayment | initiateTopUp |
initiateNativeTokenOnrampPayment | initiateNativeOnramp |
createPinAccessTokenAction | ensureNativeWallet |
Desk quote без action wrapper: только HTTP (POST /api/wallet/desk/quote). NFT buy: app/_actions/nft-market.ts → purchaseNftListing. OAuth: auth.ts → ensureNativeWallet.
| Method | Path | Метод Conductor |
|---|---|---|
POST | /api/wallet/desk/quote | quoteDesk |
POST | /api/wallet/desk/execute | executeDesk |
POST | /api/wallet/ensure | ensureNativeWallet |
GET | /api/wallet/token/balance | getNativeBalance |
POST | /api/wallet/token/transfer | transferNative |
POST | /api/wallet/credit/spend | spendCredits (fiat rate SSOT) |
| Path / surface | Почему |
|---|---|
POST /api/wallet/transfer | Путь EVM SupportedCrypto: не Solana custodial SSOT |
POST /api/wallet/credit/topup | Chain-proof credit add через creditBalanceService (не card top-up) |
GET /api/wallet/credit/spend | 410 deprecated: используйте getSpendSummary / GET /api/wallet/credit/history |
| Store / membership PaymentConductor purposes | Checkout rails, не wallet facade |
См. Архитектура PaymentConductor для CheckoutRedirect и WayForPay для HPP POST.
| Key | Role |
|---|---|
WALLET_ENCRYPTION_KEY | Шифрование custodial ключей |
SOLANA_RPC_URL / SOLANA_TREASURY_PRIVATE_KEY | Custodial 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_RATE | Desk quote HMAC + fallback |
Server SSOT для onramp: lib/ring-config-chain.ts → isNativeTokenOnrampEnabled(). Runtime role gate: assertNativeTokenOnrampAllowed (confidential/admin/superadmin + flag).
getFiatCreditAccountingRate(): никогда не подавайте desk nativePerMainCurrency в debits credit ledger/api/wallet/token/*: retired aliases /api/wallet/ring/* удаленыDeep-dive: инвентарь Server Actions и HTTP.
lib/payments/credit-balance.tsgetFiatCreditAccountingRatecredit.creditBalanceUnitToMainCurrency SSOT |
| Desk | features/wallet/chains/solana/desk-service.ts | Quote + execute (subscriber+) |
| Desk oracle | features/wallet/services/native-token-oracle.ts | nativePerMainCurrency только для desk |
| Custodial send | features/wallet/chains/native-token-transfer-service.ts | Gasless native transfer |
| PSP checkout | lib/payments/conductor/payment-conductor.ts | wallet_topup, native_token_onramp |
| Onramp gate | lib/payments/confidential-token-onramp.ts | assertNativeTokenOnrampAllowed |
| Actions | app/_actions/wallet.ts | Session-facing wrappers |
| NFT buy | features/nft-market/services/solana-market-client.ts | Market purchase settlement |
| Метод | Auth / gates | Делегирует |
|---|---|---|
initiateTopUp | Session; amount 25–2000 | PaymentConductor wallet_topup; возвращает redirect |
initiateNativeOnramp | Session + confidential+ + onramp flag | PaymentConductor native_token_onramp |
quoteDesk / executeDesk | assertTokenDeskSubscriberAccess | desk-service + oracle |
getNativeBalance | Caller userId | native-token-transfer-service |
transferNative | Caller userId | transfer service + wallet_transactions + publishWalletListUpdate(userId, 'updated') |
spendCredits | Caller userId | creditBalanceService + fiat rate (+ credit:balance tunnel через service) |
ensureNativeWallet | Caller передаёт id (OAuth-safe) | ensure-wallet (+ wallet:list когда wallets меняются) |
ensureFunded | Session | ensure + optional credit floor |
purchaseNftListing | Idempotency key | SolanaMarketClient |
Также экспортируется: getWalletConductorNativeChain() → getNativeChain().
| Rate | SSOT | Используется |
|---|---|---|
| Fiat credit accounting | credit.creditBalanceUnitToMainCurrency через getFiatCreditAccountingRate() | spendCredits, desk debit side, PaymentConductor credit_balance |
| Token Desk oracle | platform_settings.web3.oracle.nativePerMainCurrency | только quoteDesk / executeDesk |
Не принадлежит 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.
app/_actions/wallet.ts)| Action | Метод Conductor |
|---|---|
ensureUserWallets | ensureNativeWallet |
getNativeTokenBalanceAction | getNativeBalance |
spendCredits | spendCredits |
transferNativeTokens | transferNative |
executeDeskQuote | executeDesk |
initiateCreditTopupPayment | initiateTopUp |
initiateNativeTokenOnrampPayment | initiateNativeOnramp |
createPinAccessTokenAction | ensureNativeWallet |
Desk quote без action wrapper: только HTTP (POST /api/wallet/desk/quote). NFT buy: app/_actions/nft-market.ts → purchaseNftListing. OAuth: auth.ts → ensureNativeWallet.
| Method | Path | Метод Conductor |
|---|---|---|
POST | /api/wallet/desk/quote | quoteDesk |
POST | /api/wallet/desk/execute | executeDesk |
POST | /api/wallet/ensure | ensureNativeWallet |
GET | /api/wallet/token/balance | getNativeBalance |
POST | /api/wallet/token/transfer | transferNative |
POST | /api/wallet/credit/spend | spendCredits (fiat rate SSOT) |
| Path / surface | Почему |
|---|---|
POST /api/wallet/transfer | Путь EVM SupportedCrypto: не Solana custodial SSOT |
POST /api/wallet/credit/topup | Chain-proof credit add через creditBalanceService (не card top-up) |
GET /api/wallet/credit/spend | 410 deprecated: используйте getSpendSummary / GET /api/wallet/credit/history |
| Store / membership PaymentConductor purposes | Checkout rails, не wallet facade |
См. Архитектура PaymentConductor для CheckoutRedirect и WayForPay для HPP POST.
| Key | Role |
|---|---|
WALLET_ENCRYPTION_KEY | Шифрование custodial ключей |
SOLANA_RPC_URL / SOLANA_TREASURY_PRIVATE_KEY | Custodial 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_RATE | Desk quote HMAC + fallback |
Server SSOT для onramp: lib/ring-config-chain.ts → isNativeTokenOnrampEnabled(). Runtime role gate: assertNativeTokenOnrampAllowed (confidential/admin/superadmin + flag).
getFiatCreditAccountingRate(): никогда не подавайте desk nativePerMainCurrency в debits credit ledger/api/wallet/token/*: retired aliases /api/wallet/ring/* удаленыDeep-dive: инвентарь Server Actions и HTTP.
lib/payments/credit-balance.tsgetFiatCreditAccountingRatecredit.creditBalanceUnitToMainCurrency SSOT |
| Desk | features/wallet/chains/solana/desk-service.ts | Quote + execute (subscriber+) |
| Desk oracle | features/wallet/services/native-token-oracle.ts | nativePerMainCurrency только для desk |
| Custodial send | features/wallet/chains/native-token-transfer-service.ts | Gasless native transfer |
| PSP checkout | lib/payments/conductor/payment-conductor.ts | wallet_topup, native_token_onramp |
| Onramp gate | lib/payments/confidential-token-onramp.ts | assertNativeTokenOnrampAllowed |
| Actions | app/_actions/wallet.ts | Session-facing wrappers |
| NFT buy | features/nft-market/services/solana-market-client.ts | Market purchase settlement |
| Метод | Auth / gates | Делегирует |
|---|---|---|
initiateTopUp | Session; amount 25–2000 | PaymentConductor wallet_topup; возвращает redirect |
initiateNativeOnramp | Session + confidential+ + onramp flag | PaymentConductor native_token_onramp |
quoteDesk / executeDesk | assertTokenDeskSubscriberAccess | desk-service + oracle |
getNativeBalance | Caller userId | native-token-transfer-service |
transferNative | Caller userId | transfer service + wallet_transactions + publishWalletListUpdate(userId, 'updated') |
spendCredits | Caller userId | creditBalanceService + fiat rate (+ credit:balance tunnel через service) |
ensureNativeWallet | Caller передаёт id (OAuth-safe) | ensure-wallet (+ wallet:list когда wallets меняются) |
ensureFunded | Session | ensure + optional credit floor |
purchaseNftListing | Idempotency key | SolanaMarketClient |
Также экспортируется: getWalletConductorNativeChain() → getNativeChain().
| Rate | SSOT | Используется |
|---|---|---|
| Fiat credit accounting | credit.creditBalanceUnitToMainCurrency через getFiatCreditAccountingRate() | spendCredits, desk debit side, PaymentConductor credit_balance |
| Token Desk oracle | platform_settings.web3.oracle.nativePerMainCurrency | только quoteDesk / executeDesk |
Не принадлежит 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.
app/_actions/wallet.ts)| Action | Метод Conductor |
|---|---|
ensureUserWallets | ensureNativeWallet |
getNativeTokenBalanceAction | getNativeBalance |
spendCredits | spendCredits |
transferNativeTokens | transferNative |
executeDeskQuote | executeDesk |
initiateCreditTopupPayment | initiateTopUp |
initiateNativeTokenOnrampPayment | initiateNativeOnramp |
createPinAccessTokenAction | ensureNativeWallet |
Desk quote без action wrapper: только HTTP (POST /api/wallet/desk/quote). NFT buy: app/_actions/nft-market.ts → purchaseNftListing. OAuth: auth.ts → ensureNativeWallet.
| Method | Path | Метод Conductor |
|---|---|---|
POST | /api/wallet/desk/quote | quoteDesk |
POST | /api/wallet/desk/execute | executeDesk |
POST | /api/wallet/ensure | ensureNativeWallet |
GET | /api/wallet/token/balance | getNativeBalance |
POST | /api/wallet/token/transfer | transferNative |
POST | /api/wallet/credit/spend | spendCredits (fiat rate SSOT) |
| Path / surface | Почему |
|---|---|
POST /api/wallet/transfer | Путь EVM SupportedCrypto: не Solana custodial SSOT |
POST /api/wallet/credit/topup | Chain-proof credit add через creditBalanceService (не card top-up) |
GET /api/wallet/credit/spend | 410 deprecated: используйте getSpendSummary / GET /api/wallet/credit/history |
| Store / membership PaymentConductor purposes | Checkout rails, не wallet facade |
См. Архитектура PaymentConductor для CheckoutRedirect и WayForPay для HPP POST.
| Key | Role |
|---|---|
WALLET_ENCRYPTION_KEY | Шифрование custodial ключей |
SOLANA_RPC_URL / SOLANA_TREASURY_PRIVATE_KEY | Custodial 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_RATE | Desk quote HMAC + fallback |
Server SSOT для onramp: lib/ring-config-chain.ts → isNativeTokenOnrampEnabled(). Runtime role gate: assertNativeTokenOnrampAllowed (confidential/admin/superadmin + flag).
getFiatCreditAccountingRate(): никогда не подавайте desk nativePerMainCurrency в debits credit ledger/api/wallet/token/*: retired aliases /api/wallet/ring/* удаленыDeep-dive: инвентарь Server Actions и HTTP.