Docs
The budget goes in first, the rules are hashed on-chain, and the contract pays out once a result is verified.
v0.1 · 2026-08-27
A settlement layer that only releases what has been verified#
The advertiser deposits the budget into the contract before the campaign starts. The rules that decide payout are hashed on-chain at the same moment and cannot be changed afterwards. When a result is verified, the contract executes the payout; there is no separate approval step for the advertiser.
Why performance-based deals never took hold#
Performance-based deals never took hold in influencer marketing because of enforcement, not measurement. The conditions were measurable; what was missing was a way to force payment to follow them.
| Link | What actually happens |
|---|---|
| Advertiser → creator | Pay up front and the post may never go up. So they insist on paying later |
| Creator → advertiser | The work ships, then payment is refused because “it isn't our tone” |
| Across borders | A contract exists but suing is impractical. Recovery costs more than the deal |
A contract only starts working after a dispute has happened, so it does not address any of the three. NARU deposits the funds in advance and pays out with no separate approval once the condition is met.
From deposit to payout#
What actually happens over one campaign. Every step leaves a record on-chain.
- 01DepositThe advertiser opens a campaign and moves the full budget into the contract. Without the deposit the campaign does not open.
- 02PublishTitle, rules and payout terms go on-chain as a signed record (an attestation) from the advertiser's own wallet, so readers can verify them without trusting our server.
- 03JoinA creator is checked against the eligibility rules and joins. Those rules were fixed at deposit time and cannot change.
- 04ReviewThe draft is checked against the rules before it goes up. A draft that passes is not reversed after publication.
- 05ObserveThe server reads the published post itself and re-runs the same rules that are pinned on-chain.
- 06PayoutThe oracle posts the verdict on-chain and the contract computes and sends the amount. The creator pays no gas.
Whose turn it is
How the payout amount is computed#
The contract has no idea what an app install or 500 reposts means. Whether the condition was met is decided outside; the contract only turns that result into an amount.
amount = min(verified units, remaining cap) × unit price
That is why a new campaign type does not require redeploying the contract. Register an attestation schema and it works.
Order of checks on payout
- 01Campaign validity — not cancelled, within deadline plus grace, term exists
- 02Verification path
- 03Eligibility — only when the campaign has joining rules
- 04Frozen or not
- 05Clamp units — up to the per-creator remaining cap
- 06Compute the amount
- 07Clamp budget — up to the term's remaining budget
- 08Write state — units claimed, spent, attestation marked used
- 09Transfer
Step 2 — the verification path forks
Steps 5 and 7 — it is clamped twice
Creating a campaign#
What an advertiser decides when creating a campaign, and which of those cannot change afterwards. The last step takes two signatures; the deposit lands and the payout criteria are fixed at that moment.
Seven steps
- 01GoalPick what you want out of the campaign first. That choice pre-fills the payout items, unit prices and verification paths in the later steps.
- 02Campaign detailsName, product, run dates, number of seats. The name and description go on-chain so creators can verify them.
- 03TargetingOpen to everyone, or gated on eligibility rules. This is the only step where those rules can be set.
- 04Settlement tokenWhich token pays out. For tokens whose price moves, the amount is locked at the moment of deposit.
- 05Payout itemsWhat you are buying and at what price. The sum of the item budgets is the amount you deposit.
- 06BriefRequired lines, banned phrasing, tone, retention obligations. Both the draft review and the payout verdict run against this text.
- 07Review and depositTwo signatures — a token approval and the campaign creation. After the second, the full budget sits in the contract.
Fixed at the moment of deposit
The path for an advertiser to rewrite terms after the fact is structurally closed. The originals live off-chain and only the hash goes on-chain, so either party can take the original, recompute the hash and compare.
| Value | Fixed at | Changeable after |
|---|---|---|
| Payout rules | When the campaign opens | No |
| Eligibility rules | When the campaign opens | No — there is no setter at all |
| Budget | When the campaign opens | Increase only |
| Per-item draft criteria | When the item is added | No |
The claim grace period
The deadline passing does not let the advertiser reclaim immediately. With a 30-day attribution window, results near the deadline are verified late. Without a grace period the advertiser could sweep the unspent budget right after the deadline, leavinga creator who delivered but was not paid. The grace period is therefore set longer than the attribution window (30 days or more recommended).
Verification paths and the trust model#
Bringing an off-chain fact on-chain means somebody has to look and assert it. So the question is not whether trust can be removed but how far it can be reduced per item. NARU is designed so the verification path is swappable per payout item.
Guaranteed by the contract
- A campaign cannot open without the deposit
- Rules cannot change after creation
- The advertiser cannot reclaim before the grace period ends
- The same verdict cannot be spent twice
The verification path is swappable per item
Each payout item names a verifier. If none is named, the default path is used. Swapping the verifier does not require redeploying the contract — it is one field on the item.
How a verdict on the default path can be checked
What still needs trust
In the implementation this role is called the attestor. It issues each verdict as an EAS attestation, and the contract runs nine checks on that attestation before paying.
Contracts and network#
Source is verified for all of them. You can read them on the explorer.
0xD8D6c2cc3c9F85D902DdAaefa30597C87D0f62510xD8D6…6251Explorer ↗0x42000000000000000000000000000000000000210x4200…0021Explorer ↗Verifiable items#
The payout items a campaign can use, and where NARU reads each result from. Items with no verification path yet are marked as planned.
| Item | Unit | Verified from | Support |
|---|---|---|---|
Content post Flat fee once it goes up per the brief | post | the post itself | Available |
Purchase Paid per order that came through the discount code | order | Shopify order data | Planned |
Post kept up Balance paid if it stays up for the set period | post | Periodic check of the public URL | Planned |
App install Paid per confirmed install | install | App attribution | Planned |
New wallets Paid per wallet created that is still around after a set period | wallet | On-chain | Planned |
Deposits brought in Based on deposits from your referral | $K | On-chain | Planned |
Trading volume Cumulative volume from users you brought | $K | On-chain | Planned |
Visitors Sessions that arrived through the link | K sessions | NARU link server | Planned |
Follower growth Paid per follower gained and kept during the campaign | follower | X profile · period comparison | Planned |
Reach and saves Post reach and save counts | K reach | X post metrics | Planned |