Skip to main content

Attribution Advertising

What if anyone could promote anything — and get paid automatically when it converted?

The current advertising model routes everything through intermediaries. A platform aggregates audience, sells attention to advertisers, and takes 30–70% of the value exchanged. The creator gets a fraction. The sharer gets nothing. The buyer pays inflated prices. The intermediary captures the surplus.

Smart contracts make a different structure possible: every conversion is recorded on-chain, every split runs automatically, and no intermediary can adjust the percentages after the fact.

The link module implements this model. A link object records the genealogy of a referral:

Creator deploys content → mints link object
→ genealogy: creator_address, platform_id, reward_amount
Sharer receives link → creates referral URL
→ genealogy extended: + sharer_address
Buyer converts → collision module records conversion
→ quality scored: spam check, engagement metric
→ revenue splits run: creator / platform / sharer

Every step on-chain. Every split automatic. The collision module adds quality scoring — spam is filtered, quality conversion earns the reward.

Revenue Split Model

PartyGetsWhy
CreatorPrimary shareMade the thing worth promoting
PlatformInfrastructure shareProvided the distribution rails
SharerReferral shareBrought the buyer
ProtocolNegligible feeRuns the settlement

The percentages are set in the link object at creation. They cannot be changed after deployment. The contract is the agreement.

Quality Scoring

The collision module prevents the obvious attack: flooding the network with low-quality conversions to extract rewards. Two mechanisms:

Spam detection:

  • More than 3 quality flags on a conversion: disqualified
  • Pattern analysis across conversion history per sharer address
  • Staked bond required for high-volume sharers

Quality score (0–100):

  • Engagement depth: how far into the content did the buyer go?
  • Conversion validity: did the buyer actually complete the action?
  • Historical reputation: sharer's track record across all links

The quality score determines payout multiplier. High-quality referrals earn more. Low-quality referrals earn less. Spam earns nothing.

World Sells

The structural implication: if anyone can create a link and earn a referral fee, then any network that carries links becomes a distribution channel.

A Telegram message is a link. A social post is a link. An email is a link. A QR code is a link. An NFC tag is a link. Every person who touches the content becomes a potential distributor — if the link object is in the chain of their share.

This is not a metaphor. The link module records the genealogy. The collision settlement runs automatically. There is no manual affiliate onboarding, no payment processing, no 30-day delay. The conversion happens, the splits run in the same PTB.

When combined with the blinks pattern, the URL IS both the distribution mechanism and the on-chain event:

Creator mints content → generates blink URL encoding link::createLink
Sharer posts URL to social → link object created on-chain
Buyer clicks URL → dApp Kit modal renders
Buyer approves → PTB executes:
1. link::recordConversion()
2. collision::scoreQuality()
3. coin::split() → distribute_rewards()
→ Atomic, ~390ms

The click is the conversion. The conversion is the attribution. The attribution is the payment. All in one atomic PTB.

Move Modules

ModuleJobKey function
linkCreate and track link genealogycreate_link(), record_conversion()
collisionScore quality, detect spamsubmit_quality_score(), flag_spam(), get_score()
tokenomics_validationVerify percentage sumsMove Prover — attribution percentages sum to 100
loyaltyLong-term relationship rewardsadd_points(), redeem_reward()

Move Prover is required for tokenomics_validation. Attribution percentages summing to exactly 100 is an economic invariant — not a test, a proof.

Anti-Patterns

Anti-patternWhat happensFix
Centralized percentage managementOwner can change splits after deploymentLock percentages in link object at creation — immutable
Off-chain quality scoringQuality gate can be bypassedQuality score must be a Move transaction, not a backend call
Unbounded genealogyPerformance degrades with chain depthCap genealogy depth in protocol config (e.g., 10 hops max)
No quality gateSpam extraction possiblecollision module required, not optional
Cookie-based attributionBrowser deletes cookie, attribution lostOn-chain link object survives any client state

Web2 Comparison

DimensionWeb2 affiliateOn-chain attribution
EnrollmentManual application, approvalAnyone creates a link
Payment30–90 day delay, thresholdSame PTB as conversion (~390ms)
TransparencyBlack boxAll splits visible on-chain
GamingCookie stuffing, click fraudCollision module quality scoring
ReachEnrolled affiliates onlyAnyone who shares the URL
CostPlatform fee 30–70%Protocol fee < 1%

Context

Questions

If the conversion record is on-chain and the splits are automatic, what happens to the role of advertising agencies whose value was managing the complexity?

  • At what quality score threshold does a referral become worth more than the gas cost of recording it?
  • If the sharer earns automatically, does that create perverse incentives to share low-quality content at high volume?
  • What does on-chain attribution data do to the privacy expectations of buyers — their purchase history is now a public record?