Documentation

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

    Ласкаво просимо до Ring
    Швидкий довідник
    Початок роботи
    Передумови
    Встановлення
    Валідація першого успіху
    Наступні кроки
    Функції
    Магазин
    Склад і залишки
    Керування вендорами
    Комісії та розрахунки
    SubscriptionConductor
    PaymentConductor
    Інтеграція платежів
    Інтеграція WayForPay
    Web3 Гаманець
    Реферальні коди (Refcodes)
    NFT Exhibition Marketplace
    Система Стейкінга Токенів
    Сутності
    Можливості
    Повідомлення
    Модуль Новин - Цифровий Газетний Досвід
    Блоги учасників
    Система Резервування Імен Користувачів
    Науковий редактор
    Notifications
    Push-сповіщення через FCM (Ring)
    Email AI-CRM
    Протокол Tunnel
    Authentication
    Безпека та відповідність
    Система локалей
    Мобільний Досвід
    Паттерни Оптимізації Продуктивності
    Приклади
    Швидкий старт
    Білий лейбл
    Інтеграція Web3
    Реальні приклади
    Кастомізація
    Швидкий старт — ваш перший клон Ring
    Повний посібник налаштування
    Брендування
    Теми
    Функції
    Локалізація
    Налаштування токеноміки
    Інтеграція платіжних шлюзів
    Еталонні деплої Ring
    Web3
    Token launch jurisdictions
    Інтеграції
    Ethereum гаманці (Wagmi v3)
    Розгортання
    Self-hosted розгортання
    Vercel
    Docker
    Конфігурація Середовища
    Моніторинг та аналітика
    Оптимізація продуктивності
    Резервне копіювання та відновлення
    Архітектура
    Data Model
    Security
    Real Time
    Архітектура PaymentConductor
    Розробка
    Ring MCP Server

    Швидкий вхід (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
    Інтеграція платежів
    Інтеграція WayForPay
    Web3 Гаманець
    Реферальні коди (Refcodes)
    NFT Exhibition Marketplace
    Система Стейкінга Токенів
    Сутності
    Можливості
    Повідомлення
    Модуль Новин - Цифровий Газетний Досвід
    Блоги учасників
    Система Резервування Імен Користувачів
    Науковий редактор
    Notifications
    Push-сповіщення через FCM (Ring)
    Email AI-CRM
    Протокол Tunnel
    Authentication
    Безпека та відповідність
    Система локалей
    Мобільний Досвід
    Паттерни Оптимізації Продуктивності
    Приклади
    Швидкий старт
    Білий лейбл
    Інтеграція Web3
    Реальні приклади
    Кастомізація
    Швидкий старт — ваш перший клон Ring
    Повний посібник налаштування
    Брендування
    Теми
    Функції
    Локалізація
    Налаштування токеноміки
    Інтеграція платіжних шлюзів
    Еталонні деплої Ring
    Web3
    Token launch jurisdictions
    Інтеграції
    Ethereum гаманці (Wagmi v3)
    Розгортання
    Self-hosted розгортання
    Vercel
    Docker
    Конфігурація Середовища
    Моніторинг та аналітика
    Оптимізація продуктивності
    Резервне копіювання та відновлення
    Архітектура
    Data Model
    Security
    Real Time
    Архітектура PaymentConductor
    Розробка
    Ring MCP Server

    Швидкий вхід (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
    Інтеграція платежів
    Інтеграція WayForPay
    Web3 Гаманець
    Реферальні коди (Refcodes)
    NFT Exhibition Marketplace
    Система Стейкінга Токенів
    Сутності
    Можливості
    Повідомлення
    Модуль Новин - Цифровий Газетний Досвід
    Блоги учасників
    Система Резервування Імен Користувачів
    Науковий редактор
    Notifications
    Push-сповіщення через FCM (Ring)
    Email AI-CRM
    Протокол Tunnel
    Authentication
    Безпека та відповідність
    Система локалей
    Мобільний Досвід
    Паттерни Оптимізації Продуктивності
    Приклади
    Швидкий старт
    Білий лейбл
    Інтеграція Web3
    Реальні приклади
    Кастомізація
    Швидкий старт — ваш перший клон Ring
    Повний посібник налаштування
    Брендування
    Теми
    Функції
    Локалізація
    Налаштування токеноміки
    Інтеграція платіжних шлюзів
    Еталонні деплої Ring
    Web3
    Token launch jurisdictions
    Інтеграції
    Ethereum гаманці (Wagmi v3)
    Розгортання
    Self-hosted розгортання
    Vercel
    Docker
    Конфігурація Середовища
    Моніторинг та аналітика
    Оптимізація продуктивності
    Резервне копіювання та відновлення
    Архітектура
    Data Model
    Security
    Real Time
    Архітектура PaymentConductor
    Розробка
    Ring MCP Server

    Швидкий вхід (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)
    1. Документація
    2. /Функції
    3. /NFT Exhibition Marketplace

    Оновлено 12 лип. 2026 р.4 хв прослуховування

    Ring Platform Logo

    Завантаження документації...

    Підготовка контенту платформи Ring

    1. Документація
    2. /Функції
    3. /NFT Exhibition Marketplace

    Оновлено 12 лип. 2026 р.4 хв прослуховування

    Ring Platform Logo

    Завантаження документації...

    Підготовка контенту платформи Ring

    1. Документація
    2. /Функції
    3. /NFT Exhibition Marketplace

    Оновлено 12 лип. 2026 р.4 хв прослуховування

    Ring Platform Logo

    Завантаження документації...

    Підготовка контенту платформи Ring

    NFT Exhibition Marketplace

    The shipped marketplace is Solana-first with two lanes: verified Ringdom KEYS gate NFTs, and an open member creator lane for on-platform Metaplex Core collections. Both settle in RING (ledger-dev PoC when gateMarketProgramId is empty).

    The NFT Exhibition Marketplace lets members list, browse, buy, and cancel eligible assets. For KEYS gates, a purchase transfers ownership, but ownership alone does not unlock product access — buyers must stake through GateEscrow before GateResolver.hasFeature grants the related feature. For member mints, purchase is ownership + RING only (no stake CTA, no feature unlock).

    SurfaceVerified truth
    Marketplace/nft/market, /nft/market/[listingId], /nft/market/sell
    Member create/nft/create, /nft/create/[collectionId]
    Collections/nft/collections, /nft/collections/[slug]
    SearchSearch redirects land on /nft/market?q=...
    FeeduseCursorFeed with moduleId="nft-market"; optional lane=keys|member
    PaymentRING only
    KEYS symbolKEYS from gate collection metadata
    Member collectionsnft_member_collections + listing lane: 'member'
    Listing storagenft_listings
    Sale ledgernft_market_sales
    Collection cachenft_market_collections
    Migrations031_nft_exhibition_market_schema.sql, 032_nft_member_collections_schema.sql

    Why this matters for your clone

    The marketplace turns tradeable vendor access keys into a visible economy and lets privileged members create their own on-platform collections without opening an external NFT import path.

    KEYS resale liquidity

    Vendor-grade gates can move from one member to another without making membership transferable.

    Member creator lane

    Members create Metaplex Core collections, mint, and list for RING — ownership transfer only, no GateEscrow features.

    Keep KEYS access gated

    A KEYS buyer must stake the gate before features activate. Listing and staking are mutually exclusive.

    Implementation Map

    PathRole
    app/[locale]/nft/market/page.tsxServer page, parses q, collection, slug, lane, sort
    app/[locale]/nft/create/page.tsxMember create/mint/list wizard (requires hasMemberPrivileges)
    app/[locale]/nft/market/sell/page.tsxKEYS seller wizard (excludes member_mint)
    app/_actions/nft-member.tscreateMemberCollectionAction, mintMemberAssetAction, listMemberAssetAction
    features/nft-market/member/*Collection/mint services + assertMemberAssetCanBeListed
    features/nft-market/listing-policy.tsKEYS tradeable SKU / stake / collection checks (lane K only)

    Future On-Chain Work

    Related Documentation

    Solana NFT Gates

    Primary sale, KEYS collection metadata, GateEscrow staking, and template activation.

    Wallet

    Native RING balance and custodial Solana wallet flows used for marketplace settlement.

    Subscriptions

    How nft_gate fits beside other access providers.

    Security

    Production guardrails before audited on-chain marketplace deployment.

    NFT Exhibition Marketplace

    The shipped marketplace is Solana-first with two lanes: verified Ringdom KEYS gate NFTs, and an open member creator lane for on-platform Metaplex Core collections. Both settle in RING (ledger-dev PoC when gateMarketProgramId is empty).

    The NFT Exhibition Marketplace lets members list, browse, buy, and cancel eligible assets. For KEYS gates, a purchase transfers ownership, but ownership alone does not unlock product access — buyers must stake through GateEscrow before GateResolver.hasFeature grants the related feature. For member mints, purchase is ownership + RING only (no stake CTA, no feature unlock).

    SurfaceVerified truth
    Marketplace/nft/market, /nft/market/[listingId], /nft/market/sell
    Member create/nft/create, /nft/create/[collectionId]
    Collections/nft/collections, /nft/collections/[slug]
    SearchSearch redirects land on /nft/market?q=...
    FeeduseCursorFeed with moduleId="nft-market"; optional lane=keys|member
    PaymentRING only
    KEYS symbolKEYS from gate collection metadata
    Member collectionsnft_member_collections + listing lane: 'member'
    Listing storagenft_listings
    Sale ledgernft_market_sales
    Collection cachenft_market_collections
    Migrations031_nft_exhibition_market_schema.sql, 032_nft_member_collections_schema.sql

    Why this matters for your clone

    The marketplace turns tradeable vendor access keys into a visible economy and lets privileged members create their own on-platform collections without opening an external NFT import path.

    KEYS resale liquidity

    Vendor-grade gates can move from one member to another without making membership transferable.

    Member creator lane

    Members create Metaplex Core collections, mint, and list for RING — ownership transfer only, no GateEscrow features.

    Keep KEYS access gated

    A KEYS buyer must stake the gate before features activate. Listing and staking are mutually exclusive.

    Implementation Map

    PathRole
    app/[locale]/nft/market/page.tsxServer page, parses q, collection, slug, lane, sort
    app/[locale]/nft/create/page.tsxMember create/mint/list wizard (requires hasMemberPrivileges)
    app/[locale]/nft/market/sell/page.tsxKEYS seller wizard (excludes member_mint)
    app/_actions/nft-member.tscreateMemberCollectionAction, mintMemberAssetAction, listMemberAssetAction
    features/nft-market/member/*Collection/mint services + assertMemberAssetCanBeListed
    features/nft-market/listing-policy.tsKEYS tradeable SKU / stake / collection checks (lane K only)

    Future On-Chain Work

    Related Documentation

    Solana NFT Gates

    Primary sale, KEYS collection metadata, GateEscrow staking, and template activation.

    Wallet

    Native RING balance and custodial Solana wallet flows used for marketplace settlement.

    Subscriptions

    How nft_gate fits beside other access providers.

    Security

    Production guardrails before audited on-chain marketplace deployment.

    NFT Exhibition Marketplace

    The shipped marketplace is Solana-first with two lanes: verified Ringdom KEYS gate NFTs, and an open member creator lane for on-platform Metaplex Core collections. Both settle in RING (ledger-dev PoC when gateMarketProgramId is empty).

    The NFT Exhibition Marketplace lets members list, browse, buy, and cancel eligible assets. For KEYS gates, a purchase transfers ownership, but ownership alone does not unlock product access — buyers must stake through GateEscrow before GateResolver.hasFeature grants the related feature. For member mints, purchase is ownership + RING only (no stake CTA, no feature unlock).

    SurfaceVerified truth
    Marketplace/nft/market, /nft/market/[listingId], /nft/market/sell
    Member create/nft/create, /nft/create/[collectionId]
    Collections/nft/collections, /nft/collections/[slug]
    SearchSearch redirects land on /nft/market?q=...
    FeeduseCursorFeed with moduleId="nft-market"; optional lane=keys|member
    PaymentRING only
    KEYS symbolKEYS from gate collection metadata
    Member collectionsnft_member_collections + listing lane: 'member'
    Listing storagenft_listings
    Sale ledgernft_market_sales
    Collection cachenft_market_collections
    Migrations031_nft_exhibition_market_schema.sql, 032_nft_member_collections_schema.sql

    Why this matters for your clone

    The marketplace turns tradeable vendor access keys into a visible economy and lets privileged members create their own on-platform collections without opening an external NFT import path.

    KEYS resale liquidity

    Vendor-grade gates can move from one member to another without making membership transferable.

    Member creator lane

    Members create Metaplex Core collections, mint, and list for RING — ownership transfer only, no GateEscrow features.

    Keep KEYS access gated

    A KEYS buyer must stake the gate before features activate. Listing and staking are mutually exclusive.

    Implementation Map

    PathRole
    app/[locale]/nft/market/page.tsxServer page, parses q, collection, slug, lane, sort
    app/[locale]/nft/create/page.tsxMember create/mint/list wizard (requires hasMemberPrivileges)
    app/[locale]/nft/market/sell/page.tsxKEYS seller wizard (excludes member_mint)
    app/_actions/nft-member.tscreateMemberCollectionAction, mintMemberAssetAction, listMemberAssetAction
    features/nft-market/member/*Collection/mint services + assertMemberAssetCanBeListed
    features/nft-market/listing-policy.tsKEYS tradeable SKU / stake / collection checks (lane K only)

    Future On-Chain Work

    Related Documentation

    Solana NFT Gates

    Primary sale, KEYS collection metadata, GateEscrow staking, and template activation.

    Wallet

    Native RING balance and custodial Solana wallet flows used for marketplace settlement.

    Subscriptions

    How nft_gate fits beside other access providers.

    Security

    Production guardrails before audited on-chain marketplace deployment.

    Use RING settlement

    Buyers pay in the clone native token through the custodial Solana wallet path.

    Operator Checklist

    • Enable NFT gates and marketplace config (nft.marketplaceEnabled).
    • Enable member collections PoC with nft.memberCollectionsEnabled and caps (maxCollectionsPerMember, maxMintsPerCollection).
    • Mint or import eligible vendor gates from the KEYS collection for lane K.
    • Confirm KEYS sellers understand that staked gates must be unstaked before listing.
    • Confirm KEYS buyers understand that a bought gate must be staked before benefits activate.
    • Confirm member mints never promise GateEscrow feature unlock.
    • Keep mainnet GateMarket disabled until the Anchor programs pass audit and Squads authority setup.

    Membership NFTs are soulbound and never listable. KEYS lane remains only for vendor-store-deed, vendor-dagi-key, vendor-annual-store-license, and vendor-quarterly-store-license. Member lane assets use source: member_mint and are never GateEscrow feature keys.

    User Journey

    Dual-lane marketplace journey
    features/nft-market/services/listing-service.ts
    Dual-lane draft/activate; member vs KEYS policy branch
    features/nft-market/services/solana-market-client.tsLedger-dev list/cancel/buy; Anchor branch blocked until program IDs
    features/wallet/conductor/wallet-conductor.tspurchaseNftListing for both lanes

    Listing and Purchase Sequence

    NFT market list and buy

    Listing Policy

    1. 1

      isNftMarketplaceEnabled() must pass. Member create/mint also requires isMemberCollectionsEnabled().

    2. 2

      Lane K: slug must be one of the four tradeable SKUs. Template/ownership must not be soulbound; asset verifies against KEYS; no active stake.

    3. 3

      Lane M: hasMemberPrivileges, ownership source: member_mint, collection active, not soulbound, no active listing. No GateEscrow stake check for listing.

    4. 4

      An active listing blocks duplicate listings for the same asset. For KEYS: a staked gate blocks listing; an active listing means feature access is not active through staking.

    Configuration Keys

    KeyEffect
    nft.marketplaceEnabledMaster secondary-market switch
    nft.memberCollectionsEnabledEnables member create/mint/list PoC
    nft.maxCollectionsPerMemberCap (default 3)
    nft.maxMintsPerCollectionCap (default 50)
    nft.gateMarketProgramIdEmpty = ledger-dev; non-empty Anchor path throws in this build
    nft.marketplaceFeeRecipientOptional RING fee recipient
    nft.marketplaceFeeBpsFee split basis points, clamped 0–10000

    Persistence

    • 031_nft_exhibition_market_schema.sql — listings, sales, collection cache
    • 032_nft_member_collections_schema.sql — nft_member_collections + listing lane / collectionId indexes + KEYS lane backfill

    SolanaMarketClient.buyGate settles through ledger-dev RING transfers when gateMarketProgramId is empty. Member lane reuses the same purchase path. The Anchor GateMarket CPI path is intentionally not implemented in this build.

    The future program scaffold lives under solana/programs/{gate-escrow,gate-market}. solana/SECURITY.md blocks production or mainnet deployment until Smart Contract Security Auditor review, Squads authorities, pinned deployment records, and invariant tests are complete.

    Use RING settlement

    Buyers pay in the clone native token through the custodial Solana wallet path.

    Operator Checklist

    • Enable NFT gates and marketplace config (nft.marketplaceEnabled).
    • Enable member collections PoC with nft.memberCollectionsEnabled and caps (maxCollectionsPerMember, maxMintsPerCollection).
    • Mint or import eligible vendor gates from the KEYS collection for lane K.
    • Confirm KEYS sellers understand that staked gates must be unstaked before listing.
    • Confirm KEYS buyers understand that a bought gate must be staked before benefits activate.
    • Confirm member mints never promise GateEscrow feature unlock.
    • Keep mainnet GateMarket disabled until the Anchor programs pass audit and Squads authority setup.

    Membership NFTs are soulbound and never listable. KEYS lane remains only for vendor-store-deed, vendor-dagi-key, vendor-annual-store-license, and vendor-quarterly-store-license. Member lane assets use source: member_mint and are never GateEscrow feature keys.

    User Journey

    Dual-lane marketplace journey
    features/nft-market/services/listing-service.ts
    Dual-lane draft/activate; member vs KEYS policy branch
    features/nft-market/services/solana-market-client.tsLedger-dev list/cancel/buy; Anchor branch blocked until program IDs
    features/wallet/conductor/wallet-conductor.tspurchaseNftListing for both lanes

    Listing and Purchase Sequence

    NFT market list and buy

    Listing Policy

    1. 1

      isNftMarketplaceEnabled() must pass. Member create/mint also requires isMemberCollectionsEnabled().

    2. 2

      Lane K: slug must be one of the four tradeable SKUs. Template/ownership must not be soulbound; asset verifies against KEYS; no active stake.

    3. 3

      Lane M: hasMemberPrivileges, ownership source: member_mint, collection active, not soulbound, no active listing. No GateEscrow stake check for listing.

    4. 4

      An active listing blocks duplicate listings for the same asset. For KEYS: a staked gate blocks listing; an active listing means feature access is not active through staking.

    Configuration Keys

    KeyEffect
    nft.marketplaceEnabledMaster secondary-market switch
    nft.memberCollectionsEnabledEnables member create/mint/list PoC
    nft.maxCollectionsPerMemberCap (default 3)
    nft.maxMintsPerCollectionCap (default 50)
    nft.gateMarketProgramIdEmpty = ledger-dev; non-empty Anchor path throws in this build
    nft.marketplaceFeeRecipientOptional RING fee recipient
    nft.marketplaceFeeBpsFee split basis points, clamped 0–10000

    Persistence

    • 031_nft_exhibition_market_schema.sql — listings, sales, collection cache
    • 032_nft_member_collections_schema.sql — nft_member_collections + listing lane / collectionId indexes + KEYS lane backfill

    SolanaMarketClient.buyGate settles through ledger-dev RING transfers when gateMarketProgramId is empty. Member lane reuses the same purchase path. The Anchor GateMarket CPI path is intentionally not implemented in this build.

    The future program scaffold lives under solana/programs/{gate-escrow,gate-market}. solana/SECURITY.md blocks production or mainnet deployment until Smart Contract Security Auditor review, Squads authorities, pinned deployment records, and invariant tests are complete.

    Use RING settlement

    Buyers pay in the clone native token through the custodial Solana wallet path.

    Operator Checklist

    • Enable NFT gates and marketplace config (nft.marketplaceEnabled).
    • Enable member collections PoC with nft.memberCollectionsEnabled and caps (maxCollectionsPerMember, maxMintsPerCollection).
    • Mint or import eligible vendor gates from the KEYS collection for lane K.
    • Confirm KEYS sellers understand that staked gates must be unstaked before listing.
    • Confirm KEYS buyers understand that a bought gate must be staked before benefits activate.
    • Confirm member mints never promise GateEscrow feature unlock.
    • Keep mainnet GateMarket disabled until the Anchor programs pass audit and Squads authority setup.

    Membership NFTs are soulbound and never listable. KEYS lane remains only for vendor-store-deed, vendor-dagi-key, vendor-annual-store-license, and vendor-quarterly-store-license. Member lane assets use source: member_mint and are never GateEscrow feature keys.

    User Journey

    Dual-lane marketplace journey
    features/nft-market/services/listing-service.ts
    Dual-lane draft/activate; member vs KEYS policy branch
    features/nft-market/services/solana-market-client.tsLedger-dev list/cancel/buy; Anchor branch blocked until program IDs
    features/wallet/conductor/wallet-conductor.tspurchaseNftListing for both lanes

    Listing and Purchase Sequence

    NFT market list and buy

    Listing Policy

    1. 1

      isNftMarketplaceEnabled() must pass. Member create/mint also requires isMemberCollectionsEnabled().

    2. 2

      Lane K: slug must be one of the four tradeable SKUs. Template/ownership must not be soulbound; asset verifies against KEYS; no active stake.

    3. 3

      Lane M: hasMemberPrivileges, ownership source: member_mint, collection active, not soulbound, no active listing. No GateEscrow stake check for listing.

    4. 4

      An active listing blocks duplicate listings for the same asset. For KEYS: a staked gate blocks listing; an active listing means feature access is not active through staking.

    Configuration Keys

    KeyEffect
    nft.marketplaceEnabledMaster secondary-market switch
    nft.memberCollectionsEnabledEnables member create/mint/list PoC
    nft.maxCollectionsPerMemberCap (default 3)
    nft.maxMintsPerCollectionCap (default 50)
    nft.gateMarketProgramIdEmpty = ledger-dev; non-empty Anchor path throws in this build
    nft.marketplaceFeeRecipientOptional RING fee recipient
    nft.marketplaceFeeBpsFee split basis points, clamped 0–10000

    Persistence

    • 031_nft_exhibition_market_schema.sql — listings, sales, collection cache
    • 032_nft_member_collections_schema.sql — nft_member_collections + listing lane / collectionId indexes + KEYS lane backfill

    SolanaMarketClient.buyGate settles through ledger-dev RING transfers when gateMarketProgramId is empty. Member lane reuses the same purchase path. The Anchor GateMarket CPI path is intentionally not implemented in this build.

    The future program scaffold lives under solana/programs/{gate-escrow,gate-market}. solana/SECURITY.md blocks production or mainnet deployment until Smart Contract Security Auditor review, Squads authorities, pinned deployment records, and invariant tests are complete.