ON-CHAIN ATTRIBUTION FOR SOLANA
Pay for users who stay.
Give every creator, newsletter and partner app its own link. Earnout tags the transactions they bring, waits out your retention window, and pays only for wallets that are still there. Whatever nobody earned comes back to you.
- Campaign
- Perps launch, wk 1
- Channel
- #07 (sealed)
- Retention
- 30 days
- Wallets tagged
- 412
- Gone before day 30
- -225
- Flagged as one cluster
- -41
- Qualified
- 146
- x price per user
- $4.00
- Evidence root
- 7f3a...c91e
- Settled on
- Solana, batch 3
of 62 airdropped tokens fell in price, most within 15 days of launch.
paid crypto influencers in one leaked 2025 campaign disclosed the deal.
is what a crypto ad network quotes per first-time depositor.
X cut off apps that pay people to post. Paying for attention stopped working.
The problem
Crypto marketing pays for attention. Nobody can prove it paid for users.
Tracking dies at the wallet.
Link tracking breaks the moment a user connects a wallet or jumps to a mobile app, and the deposit itself happens in a DEX or a wallet, not on your site.
Rewards pay the people who leave.
Airdrops and points pay out when someone claims, not when they stay. Farmers claim, sell and move on to the next one.
Creators get paid per post.
Flat fees, rarely disclosed, with no way to see whose audience actually converted, or whether any of it stuck.
How it works
A budget that only pays for results you can check.
- 01
Fund a campaign
Set a price per user, a retention window and an end date. The budget sits in an on-chain vault that only the program can move.
- 02
Hand out links
Every creator, newsletter or partner app gets its own. Each click mints a single-use reference signed by your campaign.
- 03
Tag the conversion
The user's deposit, swap or mint carries that reference: a standard Solana Actions memo, plus a tag that can never make the transaction fail.
- 04
Pay for who stayed
When the window closes, wallets still active and not part of a bot cluster are settled on-chain. Channels claim. The rest comes back to you.
Run your numbers
What a retention window is worth.
- Spent
- $10,000
- Users who stayed
- 500
- Paid
- $6,000
- Back to you
- $4,000
Paying up front costs $8.00 more for every user who stayed, and you only learn that after the money is gone.
Illustrative. Nothing here changes who shows up or who stays; it changes what you pay for. The price per user is yours to set, and channels see it before they send anyone.
Both sides of the deal
Fair to the people paying and the people sending.
For projects
- See which channel worked, per wallet, not per click.
- Pay per user who stayed, at a price you set.
- Unspent budget comes back after the deadline, automatically.
- Every paid conversion comes with evidence you can check on-chain.
For creators and partners
- Get paid on results from a vault that is already funded.
- No invoices and no chasing: claim straight from the program.
- Your audience stays private. The chain cannot link wallets to you.
- Move your payout wallet whenever you like, earnings included.
Enforced on-chain
The program keeps the promises, not us.
- A settlement pays exactly conversions times your price, never more than the budget left.
- Batches are numbered, so the same conversions cannot be paid twice.
- Nothing settles after your deadline. Nothing refunds before it.
- Money leaves the vault two ways: to a channel that earned it, or back to you.
- No admin key, no protocol fee, no sweep.
Sealed channels. Each link's reference is encrypted, and only your campaign can open it. The chain shows that a wallet converted, never who sent it. Under EU guidance wallet addresses can be personal data, so Earnout never publishes that link.
Honest about trust. A settler decides which wallets qualified. The program holds it to your budget and your deadline, and every batch ships with evidence you can check against the chain, so overcounting gets caught.
Read the program on GitHub. Open source, MIT.
For developers
Two instructions on the transaction you already send.
Earnout follows the Solana Actions spec for Action Identity, so any Actions indexer can read its tags. Our SDK is checked against the official @solana/actions package in both directions.
The tag reads nothing and writes nothing. A stale link, a closed campaign or a typo can never break your user's transaction.
// sdk/ in github.com/Cryptonomist/earnout
import { captureTag, pendingTag, tagInstructions, clearTag } from "./earnout/sdk";
captureTag(); // on page load: keeps ?eo= and cleans the URL
// when the user deposits
const tag = pendingTag();
const instructions = [
...yourDepositInstructions,
...(tag ? tagInstructions(tag) : []),
];
// ...send, confirm, then
clearTag();Run your next campaign on results.
We are onboarding a small number of Solana projects and creators for the first pilots.