Skip to content

Revenue Splits

WasiAI automatically distributes payments between creators and the marketplace using on-chain splitter contracts.


How Revenue Splitting Works

When a payment is received (inference or license), it flows through a ModelSplitter contract that automatically distributes funds.

Payment Received ($10.00 USDC)
┌─────────────────────────────────────┐
│         ModelSplitter               │
│                                     │
│  1. Marketplace Fee (20%)           │
│     $2.00 → WasiAI Treasury         │
│                                     │
│  2. Creator Share (80%)             │
│     $8.00 → Model Creator           │
│                                     │
└─────────────────────────────────────┘

Revenue Split

All payments are split 80% to Creator / 20% to Marketplace:

Payment Marketplace (20%) Creator (80%)
$1.00 $0.20 $0.80
$10.00 $2.00 $8.00
$100.00 $20.00 $80.00
$1,000.00 $200.00 $800.00

Stakeholders

Creator

The model creator who published the model.

  • Receives: 80% of all payments
  • Payments go directly to the creator's wallet

Marketplace

WasiAI takes a platform fee to sustain operations.

  • Receives: 20%
  • Used for: Infrastructure, development, support

Splitter Contracts

One Splitter Per Model

When a model is published, a dedicated ModelSplitter contract is deployed:

Model Published
SplitterFactory.createSplitter()
ModelSplitter deployed (EIP-1167 clone)
Splitter address stored in Marketplace

Gas Efficiency

Splitters use EIP-1167 minimal proxies: - Deployment cost: ~$0.10-0.30 - All splitters share the same implementation - Only configuration differs

Family Versioning

When you publish a new version of a model, it uses the same splitter as the original:

Model v1 → Splitter A
Model v2 → Splitter A (aliased)
Model v3 → Splitter A (aliased)

This ensures: - Revenue continuity across versions - No need to update payment addresses - Simplified accounting


Payment Sources

Pay-Per-Inference (x402)

User pays $0.01 for inference
USDC sent to ModelSplitter
distribute() called
         ├── $0.002 → Marketplace (20%)
         └── $0.008 → Creator (80%)

License Purchases

User buys $50 perpetual license
USDC sent to ModelSplitter
distribute() called
         ├── $10.00 → Marketplace (20%)
         └── $40.00 → Creator (80%)

Claiming Revenue

Automatic Distribution

Revenue is distributed when distribute() is called on the splitter. This can be: - Called by anyone (no access control) - Called automatically by the backend after payments - Called manually by stakeholders

Checking Pending Balance

const balance = await splitter.getPendingBalance()
console.log(`Pending: ${balance / 1e6} USDC`)

Triggering Distribution

await splitter.distribute()


Transparency

On-Chain Verification

All splits are verifiable on-chain:

  1. View Splitter Config

    const config = await splitter.getConfig()
    // { creator, marketplaceBps }
    

  2. View Distribution Events

    Event: Distributed(total, marketplaceFee, creatorShare)
    

  3. Track on Block Explorer

  4. View all USDC transfers from splitter
  5. Verify amounts match expected splits

No Hidden Fees

WasiAI's fee structure is: - Fixed: 20% marketplace fee, 80% to creator - Transparent: Visible in smart contract


FAQ

What if the creator wallet is compromised?

The creator can request a wallet change through the AgentRegistry with a 24-hour timelock.

How often is revenue distributed?

Revenue accumulates in the splitter and is distributed when distribute() is called. This typically happens after each payment.

Are there minimum payout thresholds?

No. Even $0.001 payments are distributed immediately.

What happens if a wallet is invalid?

The transaction will fail. All addresses are validated during splitter creation.