#
Marketplace and Offers
Trustless, on-chain atomic swaps for currencies, tokens, and identities — no intermediary required
#
What Is the Verus Marketplace?
The Verus marketplace is a decentralized, on-chain trading system built into the protocol. It enables peer-to-peer atomic swaps of any blockchain asset — currencies, tokens, and VerusIDs — without intermediaries, escrow services, or centralized order books.
Every offer is a blockchain transaction. Every trade is an atomic swap. Either both sides complete, or neither does. There's nothing to trust except the blockchain's consensus rules.
┌────────────────────────────────────────────────────┐
│ VERUS MARKETPLACE │
│ │
│ Seller Buyer │
│ ┌──────────┐ ┌──────────┐ │
│ │ makeoffer │ │ takeoffer │ │
│ │ │ │ │ │
│ │ Offers: │ On-chain │ Accepts: │ │
│ │ 10 VRSC │ ←─ atomic ─────→ │ myid@ │ │
│ │ for │ swap │ for │ │
│ │ myid@ │ │ 10 VRSC │ │
│ └──────────┘ └──────────┘ │
│ │
│ Either BOTH sides execute, or NEITHER does. │
└────────────────────────────────────────────────────┘
#
What Can Be Traded?
The marketplace supports trading any combination of these asset types:
This flexibility means the marketplace handles use cases that would require multiple different platforms in other ecosystems — token exchanges, NFT marketplaces, domain name auctions, and identity sales — all in one system.
#
How Offers Work
#
Creating an Offer (makeoffer)
When you create an offer with makeoffer, you specify:
- What you're offering — a currency amount or an identity
- What you want in return — a currency amount or an identity definition
- Expiry height — when the offer expires (default: ~20 blocks / ~20 minutes)
- Change address — where leftover funds go
# Offer 10 VRSC for the identity "coolname@"
verus makeoffer "*" '{
"changeaddress": "RMyAddress",
"expiryheight": 930000,
"offer": {
"currency": "VRSCTEST",
"amount": 10
},
"for": {
"name": "coolname",
"parent": "iJhCezBExJHvtyH3fGhNnt2NhU4Ztkf2yq",
"primaryaddresses": ["RMyAddress"],
"minimumsignatures": 1
}
}'
The offer is posted on-chain as a partial transaction. Your funds (or identity) are committed but not yet spent — they're locked until someone takes the offer, or it expires.
#
Taking an Offer (takeoffer)
When you find an offer you want to accept, you use takeoffer to complete the swap:
# Accept the offer — pay 10 VRSC, receive "coolname@"
verus takeoffer "*" '{
"txid": "abc123...",
"changeaddress": "RBuyerAddress",
"deliver": {
"currency": "VRSCTEST",
"amount": 10
},
"accept": {
"name": "coolname",
"parent": "iJhCezBExJHvtyH3fGhNnt2NhU4Ztkf2yq",
"primaryaddresses": ["RBuyerAddress"],
"minimumsignatures": 1
}
}'
The takeoffer command completes the partial transaction, creating a single atomic transaction where:
- The seller's offered asset goes to the buyer
- The buyer's payment goes to the seller
- Both transfers happen in the same transaction — atomic and indivisible
#
Finding Offers (getoffers)
Browse existing offers for any identity or currency:
# Find offers involving an identity
verus getoffers "coolname@" false true
# Find offers involving a currency
verus getoffers "VRSCTEST" true true
The third parameter (true) includes raw transaction hex, which is needed to take the offer.
#
Listing Your Offers (listopenoffers)
# List your active offers
verus listopenoffers
# Include expired offers
verus listopenoffers true
#
Closing Offers (closeoffers)
Cancel active offers or reclaim funds from expired ones:
# Cancel specific offers
verus closeoffers '["txid1", "txid2"]' "RMyAddress"
# Close all expired offers (reclaim locked funds)
verus closeoffers
#
Offer Lifecycle
1. CREATE (makeoffer)
├─ Funds/identity locked in partial transaction
├─ Offer visible via getoffers
└─ Offer visible in listopenoffers
2. ACTIVE (waiting for taker)
├─ Anyone can view the offer
├─ Anyone can take the offer
└─ Seller can close/cancel at any time
3. RESOLUTION (one of three outcomes)
├─ TAKEN (takeoffer) → Atomic swap completes
│ ├─ Seller receives payment
│ └─ Buyer receives asset
├─ EXPIRED (expiryheight reached)
│ └─ Seller reclaims funds via closeoffers
└─ CANCELLED (closeoffers before expiry)
└─ Seller reclaims funds immediately
#
The Identity Marketplace
One of the most distinctive features of the Verus marketplace is identity trading. VerusIDs are first-class blockchain objects that can be bought, sold, and traded just like currencies.
#
Selling an Identity
# Sell "premiumname@" for 100 VRSC
verus makeoffer "premiumname@" '{
"changeaddress": "RSellerAddress",
"expiryheight": 950000,
"offer": {
"identity": "premiumname@"
},
"for": {
"address": "RSellerAddress",
"currency": "VRSCTEST",
"amount": 100
}
}'
Important: The identity itself must have funds to cover the transaction fee. Send a small amount first:
verus sendtoaddress "premiumname@" 0.1
#
Buying an Identity
When buying an identity, the accept field defines the new ownership — who controls it after the swap:
verus takeoffer "*" '{
"txid": "offer_txid_here",
"changeaddress": "RBuyerAddress",
"deliver": {
"currency": "VRSCTEST",
"amount": 100
},
"accept": {
"name": "premiumname",
"parent": "iJhCezBExJHvtyH3fGhNnt2NhU4Ztkf2yq",
"primaryaddresses": ["RBuyerAddress"],
"minimumsignatures": 1
}
}'
#
Trading Existing Identities
You can make offers to buy existing identities from their current owners. The offer specifies the identity you want and what you're willing to pay. The current owner can accept by taking the offer, which atomically transfers ownership.
Note: You cannot make offers for identities that don't exist yet. The identity must already be registered on-chain.
#
Currency-to-Currency Trading
The marketplace also handles direct currency swaps without going through a basket AMM:
# Offer 1000 MYTOKEN for 5 VRSC
verus makeoffer "*" '{
"changeaddress": "RMyAddress",
"expiryheight": 940000,
"offer": {
"currency": "MYTOKEN",
"amount": 1000
},
"for": {
"address": "RMyAddress",
"currency": "VRSCTEST",
"amount": 5
}
}'
This is useful when:
- There's no basket currency connecting the two tokens
- You want a specific price (limit order) rather than the AMM price
- You're trading large amounts and want to avoid AMM slippage
#
Marketplace vs. AMM Conversions
Verus offers two ways to exchange assets, each suited to different scenarios:
In practice, users often use both: the AMM for routine currency conversions, and the marketplace for identity trading and large block trades.
#
Comparison to Centralized Exchanges
The tradeoff: centralized exchanges offer faster execution, deeper liquidity, and familiar UIs. The Verus marketplace offers trustlessness, self-custody, and unique capabilities (identity trading) that centralized platforms cannot provide.
#
Security Considerations
- Verify before taking — Always inspect offer details with
getoffersbefore committing funds - Set reasonable expiry — Don't leave offers open for thousands of blocks; use
expiryheightappropriate to your timeframe - Close expired offers — Run
closeoffersperiodically to reclaim funds locked in expired offers - Double-check
primaryaddresses— When buying an identity, the addresses inacceptdetermine who controls it. Get this wrong and you lose the identity. - Fund identities before selling — The identity must have a small balance to cover the
makeoffertransaction fee
#
Key Takeaways
- Fully on-chain — Every offer is a blockchain transaction. No off-chain order books, no centralized matching engines.
- Truly atomic — Swaps either complete entirely or not at all. No partial fills, no stuck states.
- Universal asset support — Trade currencies, tokens, and identities in any combination.
- No intermediary — Direct peer-to-peer trades. The blockchain is the only "exchange."
- Identity marketplace — Buy, sell, and auction VerusIDs — a capability unique to Verus.
- Complements the AMM — Use the marketplace for limit orders and identity trades; use baskets for instant liquidity.
#
Related Commands
- makeoffer — Create a swap offer
- takeoffer — Accept an existing offer
- getoffers — Browse offers for an asset
- listopenoffers — List your open offers
- closeoffers — Cancel or reclaim offers
#
Related Guides
- How To: Create a Marketplace Offer — Step-by-step trading guide
- Basket Currencies and DeFi — AMM-based conversions
As of Verus v1.2.x.