Marketplace
The marketplace is Token Studio's built-in secondary trading venue. Shareholders can list their pool shares for sale, and investors can browse, discover, and purchase shares across all active pools. All settlements happen on-chain through Stellar Soroban smart contracts.
Access the marketplace: home.dobprotocol.com/marketplace
How It Works
The marketplace follows a simple listing-and-purchase model:
SELLER MARKETPLACE BUYER
| | |
| 1. Create listing | |
| (shares, price, payment token) | |
|--------------------------------->| |
| | 2. Listing visible |
| | on marketplace |
| |<-------------------------------|
| | 3. Buyer selects listing |
| | |
| | 4. Buyer signs purchase TX |
| |<-------------------------------|
| | |
| 5. Shares transferred | 5. Payment transferred |
| from seller to buyer | from buyer to seller |
|<---------------------------------|------------------------------->|
| | |
| | 6. Commission deducted (1.5%) |
| | |
Listing Shares
Creating a Listing
A shareholder creates a listing by specifying:
| Parameter | Description |
|---|---|
| Shares to sell | Number of shares from their holding (1-10,000) |
| Price per share | Price in the chosen payment token |
| Payment token | Token the buyer will pay with (e.g., fUSDC, XLM) |
Listing Rules
- A user can have one active listing per pool at a time
- The listing does not lock or escrow shares -- shares remain in the seller's wallet until purchase
- Listings can be cancelled at any time before purchase
- Each listing receives a unique
sale_addressidentifier (format:SALE_+ 32 hex characters)
Listing Identifier
The sale_address is a randomly generated unique ID, not the pool address:
sale_address: SALE_a1b2c3d4e5f6... (unique per listing)
token_address: CABC123... (pool contract address)
This distinction is important: sale_address identifies the listing, while token_address identifies which pool the shares belong to.
Purchasing Shares
Purchase Flow
- Browse: Buyer visits the marketplace and browses available listings, filtered by pool or across all pools
- Select: Buyer chooses a listing and specifies the number of shares to buy (up to the listed amount)
- Approve: Buyer approves the payment token transfer (if required by the token contract)
- Sign: Buyer signs the purchase transaction with their wallet (Freighter for Stellar)
- Settlement: Smart contract executes the atomic swap -- shares to buyer, payment to seller
- Commission: 1.5% commission deducted from the payment
Purchase Commission
| Component | Amount |
|---|---|
| Share price (per share) | Set by seller |
| Total price | Price per share x number of shares |
| Commission (1.5%) | Deducted from total price |
| Seller receives | Total price - commission |
Example:
Listing: 500 shares at $10/share
Buyer purchases all 500 shares
Total price: $5,000.00
Commission (1.5%): - $75.00
Seller receives: $4,925.00
Buyer receives: 500 shares
Marketplace Views
Browse All Pools
The main marketplace page shows listings across all active pools:
URL: /marketplace
Displays:
- Pool name and ticker
- Number of active listings
- Price range
- Pool performance metrics
Single Pool Marketplace
View all listings for a specific pool:
URL: /marketplace/pool/{pool_address}?network_id={chain_id}
Example:
/marketplace/pool/CABC123...?network_id=10
Displays:
- All active listings for this pool
- Pool details (shares, distributions, APR)
- Listing prices and quantities
- Buy button for each listing
Querying the Marketplace
Use the public REST API or the SDK rather than touching internal storage directly. Common queries:
| Need | Endpoint |
|---|---|
| Active listings for a pool | GET /api/marketplace?pool_address=...&network_id=... |
| A specific listing by sale address | GET /api/marketplace/sale/:sale_address |
| A user's active listings | GET /api/marketplace?owner_address=...&network_id=... |
| Purchase history for a pool | GET /api/marketplace/transactions?pool_address=... |
Listings carry the same fields you'll see in the UI: sale_address, pool_address, owner_address, price_per_share, shares_amount, payment_token_address, network_id, and is_active. Sale addresses look like SALE_<32 hex chars>.
Smart Contract Integration
On Stellar Soroban, marketplace operations interact directly with the pool smart contract:
Listing Flow (On-Chain)
- Seller calls the marketplace contract to create a listing
- Contract records the listing parameters
- Shares are not escrowed -- ownership stays with seller until purchase
Purchase Flow (On-Chain)
- Buyer calls the marketplace contract with the listing ID and payment
- Contract verifies:
- Listing is active
- Seller still owns the shares
- Buyer has sufficient payment token balance
- Atomic swap executes:
- Shares transferred: seller --> buyer
- Payment transferred: buyer --> seller (minus commission)
- Listing updated (deactivated if fully purchased, quantity reduced if partial)
Post-Purchase Sync
After a purchase:
- The platform detects the on-chain share transfer
- The buyer's holdings are updated in the indexed cache so the pool appears in their dashboard
- The transaction shows up in the pool's marketplace history
Price Discovery
The marketplace provides organic price discovery for pool shares:
- No automated market maker -- prices are set by sellers based on their assessment of the pool's value
- Listed price is execution price -- buyers pay exactly what is listed (no slippage)
- Multiple listings -- different sellers may list at different prices, creating a natural order book
- Market signals -- listing activity and pricing trends indicate pool health and investor sentiment
Factors That Influence Share Price
| Factor | Impact on Price |
|---|---|
| Distribution yield (APR) | Higher yield tends to increase price |
| Distribution consistency | Regular distributions build confidence |
| Asset verification (TRUFA score) | Higher scores increase trust |
| Pool age and track record | Proven pools command premium |
| Remaining pool capacity | Scarcity drives price up |
| Broader market conditions | Market sentiment affects demand |
Network Support
| Network | Marketplace Available |
|---|---|
| Stellar Mainnet (10) | Yes |
| Stellar Testnet (9) | Yes |
| Ethereum Mainnet (1) | Planned |
| Base Mainnet (8453) | Planned |
| Polygon Mainnet (137) | Planned |
The marketplace is currently fully operational on Stellar networks, with EVM support planned for a future release.
API Endpoints
The marketplace is accessible through the Token Studio API:
| Endpoint | Method | Description |
|---|---|---|
/api/marketplace | GET | List all active marketplace listings |
/api/marketplace?network_id=10 | GET | Listings filtered by network |
/api/marketplace/pool/{address} | GET | Listings for a specific pool |
/api/marketplace/buy | POST | Execute a share purchase |
/api/marketplace/sell | POST | Create a new listing |
/api/marketplace/cancel | POST | Cancel an active listing |
For programmatic access, see the Agent API documentation.