For Dataset Owners
Publish your dataset once, define the rules, and earn royalties automatically — forever.
For Dataset Owners
LICEN gives you back what the current ecosystem takes away: control and compensation.
When you publish a dataset through LICEN, you define an enforceable usage policy for that dataset. That policy controls who can use it, how much usage is allowed, how long access lasts, how often the same buyer can return, what they can use it for, and how much they pay. Those rules are enforced by a smart contract — not by a terms-of-service PDF that nobody reads.
Before You Start
You'll need:
- A Web3 wallet (LICEN uses Privy — you can connect MetaMask, or sign in with email)
- A small amount of 0G tokens for gas (to anchor your dataset on-chain)
- Your dataset in JSONL format (one JSON object per line, chat-style messages)
{"messages": [{"role": "system", "content": "You are a medical coding assistant."}, {"role": "user", "content": "Code this diagnosis."}, {"role": "assistant", "content": "ICD-10: J18.9"}]}
{"messages": [{"role": "system", "content": "You are a medical coding assistant."}, {"role": "user", "content": "What does E11 mean?"}, {"role": "assistant", "content": "E11 is Type 2 diabetes mellitus."}]}Get testnet tokens from the 0G Faucet →
Publishing a Dataset
1. Connect your wallet
Go to the LICEN app and connect. You can use any EVM wallet or sign in with Google — Privy handles the wallet creation automatically.
2. Navigate to Publish
Click New Dataset from your dashboard.
3. Upload your file
Select your JSONL file. As soon as you select it, encryption begins in your browser:
- A random AES-256-GCM key is generated locally
- Your dataset is encrypted with that key
- The key is sealed inside an ECIES envelope using the Orchestrator's public key
- Only the encrypted blob is ever uploaded — your plaintext never leaves your computer
4. Set your policy
This is where you define the rules of the game. Purpose is only one field. The real product value is that you control the full access policy for your dataset:
| Setting | What it controls |
|---|---|
| Price per epoch | How much (in 0G tokens) a researcher pays per training pass |
| Max epochs per run | Maximum training passes in a single session |
| Max runs per requester | Lifetime cap per researcher wallet |
| Session duration | How long an approved session stays valid |
| Allowed purposes | Which use cases are permitted (medical research, code generation, etc.) |
| Policy expiry | When the dataset stops accepting new access requests |
Together, these settings determine the exact boundary of how your dataset may be used inside LICEN. Researchers cannot request access outside those limits because the contract enforces them at request time.
5. Publish
One wallet transaction does everything:
- Uploads the encrypted dataset to 0G Storage
- Uploads the policy manifest (off-chain metadata) to 0G Storage
- Anchors the
datasetRootand policy hash to the DataPolicy smart contract on 0G Chain
You'll receive a Dataset ID — the Merkle root of your encrypted upload. Keep this. It's your dataset's permanent on-chain identity.
Getting Paid
When a researcher requests access to your dataset:
- They lock escrow in the DataPolicy contract (
royaltyPerEpoch × requestedEpochs) - The training job runs
- The contract automatically settles royalties to your wallet when the job completes
There is no invoicing. There is no chasing payments. The smart contract enforces settlement — it's not optional.
If a job fails or the researcher requested more epochs than were actually used, the difference is refunded to them automatically. You only get paid for actual compute.
Tracking Your Revenue
Your publisher dashboard shows:
- All published datasets with their current status
- Total lifetime royalties per dataset
- Active sessions (jobs currently running on your data)
- Settlement history
Every event — access granted, job started, job completed, royalty paid — is logged on-chain and visible in the audit view.