Skip to main content

Venue Permissioning Gate

The venue permissioning gate controls which venues, markets, and counterparties an account can interact with. It is a Soroban smart contract stack that enforces restricted-asset access at the venue boundary.

Architecture

Three packages form the gate:

Account


┌─────────────────────┐ ┌──────────────────────┐
│ venue-market │ │ Blend v2 pool │
│ (facade) │─────▶│ (unmodified) │
└─────────┬───────────┘ └──────────────────────┘
│ wraps

┌─────────────────────┐
│ venue-wrapper │◀─── Restricted classic asset
│ (transfer gate) │ (AUTH_REQUIRED +
└─────────────────────┘ AUTH_REVOCABLE +
AUTH_CLAWBACK_ENABLED)

venue-wrapper

Holds a restricted Stellar classic asset (with AUTH_REQUIRED, AUTH_REVOCABLE, and AUTH_CLAWBACK_ENABLED flags set) and issues a wrapped token 1:1. The wrapped token is eligible to be listed as a reserve in an unmodified Blend v2 pool.

The permissioning lives in the wrapper's transfer gate — only accounts with appropriate privileges can initiate a wrap, transfer, or unwrap.

venue-market

A facade between the venue-wrapper and a Blend v2 pool. A single Soroban InvokeHostFunction cannot atomically wrap an asset and then supply it to a Blend pool in one transaction — the two steps require distinct contract calls. The venue-market coordinates the two-step flow.

The facade itself enforces nothing durable. All durable permissioning is in the venue-wrapper transfer gate.

Why a restricted asset wrapper?

Stellar classic assets with AUTH_REQUIRED set issue authorization flags per account. The venue-wrapper leverages this to create a permissioned token: only the wrapper itself can authorize new holders, and it does so only when the transfer gate conditions are satisfied.

Live demo

A browser demo running on Stellar testnet is available in apps/venue-demo-web. It drives the full venue gate flow (wrap → supply → redeem → unwrap) against a Blend v2 pool, with Freighter as the wallet.

Packages

PackageDescription
packages/venue-wrapperBoundary wrapper + transfer gate
packages/venue-marketVenue-market facade + Blend v2 integration
apps/venue-demo-webBrowser UI (testnet, Freighter)
packages/test-blend-poolTest stub for Blend-shaped submit (testnet-only, not deployed to mainnet)

Relationship to account permissioning

The venue permissioning gate and the OZ account permissioning layer are independent controls:

  • The OZ Policy Builder governs what operations a smart account is authorized to perform (which contracts it can call, spending limits, thresholds).
  • The venue gate governs which venue contracts an account's wrapped tokens can reach.

An account must satisfy both: a valid OZ policy AND the venue wrapper's transfer gate conditions.

Current state

The venue permissioning stack is implemented and demonstrated on Stellar testnet. It is not yet deployed to mainnet.