Listing Datasets
Learn how to list your data on the DataXchange marketplace.
Prerequisites
Before listing data:
- PRIV Plugin installed: With data collection enabled
- Wallet connected: To receive payments
- Sufficient data: At least 1,000 data points
Creating a Listing
Step 1: Prepare Your Data
Export your data from the PRIV plugin:
- Open the PRIV plugin
- Go to "My Data" > "Export"
- Select date range and categories
- Click "Prepare for Marketplace"
The plugin automatically:
- Anonymizes wallet addresses
- Applies k-anonymity (k=50 default)
- Encrypts the dataset
- Generates metadata
Step 2: Set Pricing
Choose your price based on:
| Factor | Impact |
|---|---|
| Data points | 50,000+ = premium |
| Time range | 30+ days = premium |
| Category demand | DeFi/NFT = high demand |
| Uniqueness | Rare protocols = premium |
Suggested pricing:
| Dataset Size | Suggested Price |
|---|---|
| 1,000 - 10,000 points | 10-50 PRIV |
| 10,000 - 50,000 points | 50-200 PRIV |
| 50,000 - 100,000 points | 200-500 PRIV |
| 100,000+ points | 500+ PRIV |
Step 3: Add Metadata
Provide clear descriptions:
{
"title": "DeFi Trading Activity - January 2024",
"description": "Comprehensive swap and LP data from major DEXs on Base",
"category": "defi_trading",
"events": ["swap", "lp_add", "lp_remove", "stake"],
"protocols": ["uniswap", "aerodrome", "balancer"],
"chains": [8453],
"timeRange": {
"start": "2024-01-01",
"end": "2024-01-31"
},
"dataPoints": 75000,
"schema": {
"fields": ["timestamp", "event", "tokens", "amounts", "user_hash"],
"types": ["datetime", "string", "array", "array", "string"]
}
}Step 4: Review Sample
A sample is automatically generated for buyer preview:
{
"sample": [
{
"timestamp": "2024-01-15T10:30:00Z",
"event": "swap",
"tokens": ["ETH", "USDC"],
"amounts": ["1.5", "2500"],
"user_hash": "anon_abc123"
}
],
"sampleSize": 10,
"totalSize": 75000
}Step 5: Submit Listing
- Review all details
- Sign the transaction
- Pay gas fee (~$0.05 on Base)
- Listing goes live immediately
Listing via API
For programmatic listing:
import { DataXchange } from '@priv/contracts'
async function createListing(data: Buffer, metadata: Metadata) {
// 1. Encrypt data
const { encryptedData, encryptionKey } = await encrypt(data)
// 2. Upload to IPFS
const dataHash = await ipfs.add(encryptedData)
// 3. Store encryption key securely
await secureStorage.set(dataHash, encryptionKey)
// 4. Create on-chain listing
const listingId = await dataXchange.createListing(
dataHash,
parseEther('100'), // 100 PRIV
metadata.dataPoints,
calculateTimeRange(metadata),
keccak256(metadata.category)
)
return listingId
}Data Requirements
Required Fields
Every dataset must include:
| Field | Type | Description |
|---|---|---|
timestamp | datetime | Event time (ISO 8601) |
event | string | Event type |
user_hash | string | Anonymized user ID |
Recommended Fields
Additional fields increase value:
| Field | Type | Description |
|---|---|---|
tokens | array | Involved tokens |
amounts | array | Transaction amounts |
protocol | string | dApp/protocol name |
chain_id | number | Blockchain ID |
tx_hash_prefix | string | First 8 chars of tx hash |
Prohibited Data
Never include:
- Raw wallet addresses
- Private keys or seed phrases
- Passwords or auth tokens
- Personal identifiable information (PII)
- Exact transaction hashes
Anonymization
Automatic Anonymization
The PRIV plugin applies:
-
Address Hashing
0x742d35Cc6634C0532925a3b844Bc9e7595f01234 → anon_a1b2c3d4e5f6... -
Timestamp Bucketing
2024-01-15T10:32:47Z → 2024-01-15T10:30:00Z (5-min buckets) -
Amount Bucketing
1.7823 ETH → 1-2 ETH range
K-Anonymity
Each record is indistinguishable from k-1 others:
Before k-anonymity:
User A: Swapped 1.5 ETH for USDC at 10:30
After k-anonymity (k=50):
Group of 50 users: Swapped 1-2 ETH for stablecoins between 10:00-11:00Updating Listings
Change Price
await dataXchange.updateListing(listingId, newPrice, true)Via plugin:
- Go to "My Listings"
- Click listing
- Update price
- Sign transaction
Pause Listing
Temporarily hide from marketplace:
await dataXchange.updateListing(listingId, currentPrice, false)Remove Listing
Permanently delete:
await dataXchange.cancelListing(listingId)Cancelled listings cannot be restored. Create a new listing if needed.
Best Practices
Pricing
- Research similar listings for market rates
- Start lower to build reputation
- Increase prices as you gain reviews
Metadata
- Write clear, specific descriptions
- List all included events and protocols
- Be honest about data limitations
Quality
- Ensure high completeness (95%+)
- Cover meaningful time ranges
- Include diverse event types
Updates
- Consider creating new listings for fresh data
- Monitor your listings for questions
- Respond to disputes promptly
Earnings
Tracking Earnings
View in plugin:
- Go to "DataXchange" > "My Earnings"
- See pending and withdrawn amounts
- Track sales by listing
Withdrawing
- Click "Withdraw"
- Enter amount (or "Max")
- Confirm transaction
- PRIV arrives in wallet
No minimum withdrawal. Instant settlement.
Taxes
DataXchange earnings may be taxable income. Export earnings data for tax reporting.
Next Steps
- Seller Guide - Advanced seller strategies
- API Reference - Programmatic access