Skip to content

Documentation

The model,
in full.

What a clause contains, what is allowed to settle it, how an entitlement is calculated, and which of these a given build can actually do.

01

The primitive

Yieldpad launches a token with one clause written into it at creation. The clause names a condition and an entitlement: when the condition is met, holders who meet the eligibility rule become entitled to claim a specified asset.

Before the condition is met, the token is an ordinary token. It trades, it can be bought and sold, and nothing about the clause is settled. The clause is a property of the token, not a promise made alongside it — which is the whole point of writing it in at launch rather than announcing it afterwards.

What the market is pricing, then, is not only the token. It is the token plus the probability and value of a claim that has not happened yet.

02

Anatomy of a clause

A clause has two halves. The condition half describes something measurable outside the token. The consequence half describes what that measurement releases, and to whom.

Trigger type

A price threshold, or a timestamp. Each has different settlement requirements, described below.

Subject and direction

For a price trigger: the asset being measured, and whether the level must be reached from below or from above.

Attestation source

What is permitted to tell the contract that the condition has been met. A price trigger without one cannot settle.

Claim asset and amount rule

What becomes claimable, and how each holder’s share of it is calculated.

Eligibility rule

Which balances qualify, and at which moment they are measured.

Claim window

How long the claim stays open once available. A clause may set no expiry at all.

03

Triggers

A trigger is the only thing that can move a market out of its waiting state. Two kinds are modelled, and they differ mainly in what it takes to prove them.

Price threshold

The condition is a level on an asset price — say, TSLA reaching $100. A price is not observable to a contract on its own, so a threshold can only settle against an attestation source named in the clause. Whatever the market is doing, the trigger is met when that source has reported a qualifying price onchain, and not a moment earlier. A chart moving through the level is not settlement.

Timestamp

The condition is a point on the clock — say, Friday at 20:00. This needs no market data: the block timestamp is enough. A countdown shown in a browser is a convenience, and can be wrong if the device clock is wrong. The chain timestamp is what settles it.

What a threshold would watchNASDAQ:TSLA

TSLA's real market, shown to make the shape of a price trigger concrete — the $TESLA100 specimen would watch this line for $100. It is an illustration of the mechanism, not a Yieldpad market: no token tracks it, and a chart crossing a level is not settlement.

On this build

No price attestation source is configured on this build. A price threshold cannot be settled, so a price trigger cannot be reported as met. A price threshold can still be written into a specification in the composer, but no contract deployed from this build could settle one.
04

Eligibility

Eligibility decides whose balance counts. It is set in the clause and enforced by the contract; it is never inferred by this interface from the fact that an address holds a token.

Balance snapshotted at the trigger block

Balances are recorded at the block in which the trigger settles. Buying after that block does not create an entitlement, and selling after it does not remove one. This is the rule that resists a rush at the moment of settlement.

Balance held at the moment of claim

The balance held when the claim transaction is submitted is what counts. Simpler to reason about, and it keeps the entitlement with whoever holds the token at the end.

Minimum balance

A clause may require a floor before an address qualifies at all. Zero means any non-zero balance qualifies.

05

Amount rules

Three ways to turn a clause into a per-holder number. The arithmetic is fixed at launch, so the obligation a launch creates is knowable in advance.

Fixed units per holder

Every eligible holder claims the same quantity of the asset. Entitlement = the amount in the clause. Total obligation = that amount multiplied by the number of eligible addresses, which is not bounded until the trigger settles.

Fixed value per holder

Every eligible holder claims a fixed value, delivered in the asset. Entitlement = the clause amount divided by the attested price at settlement. The quantity therefore varies with that price, while the value does not.

Reserve split pro rata

A fixed reserve is divided across eligible balances. Entitlement = reserve × (your eligible balance ÷ total eligible balance). The total obligation is bounded by the reserve, so this is the only rule whose cost is known before settlement.

06

Lifecycle

Five states. The third column is the strict part: it is what the interface is permitted to state while a market is in that state, and it will not say more.

Upcoming

The token trades. The condition has not been met.

Nothing about settlement.

Triggered

The condition has been met and attested onchain.

The block at which it settled.

Claimable

Eligible holders can submit a claim transaction.

Your entitlement, read from contract state.

Claimed

Your claim transaction has been confirmed.

A transaction hash. Never shown without one.

Closed

The claim window has expired, where one was set.

That the window has passed.

07

Funding

A clause creates an obligation. Whether that obligation can actually be met is a separate question from whether the token exists, and the two must never be conflated.

Where a claim requires assets to be held in reserve, the funding state is read from the reserve itself — funded, partially funded, or unfunded — and reported as read. A token existing is not evidence that anything has been set aside for it, and this interface will not present it as such.

08

Worked examples

Three clauses, written out. These are illustrations of the form. None is deployed, none is funded, and none carries a price or a market.

$TESLA100

Specimen — not a live market

When

TSLA reaches or exceeds $100

Then

each eligible holder may claim 0.01 TSLA

A threshold on an equity price, settling into units of that equity.

$NVDA200

Specimen — not a live market

When

NVDA reaches or exceeds $200

Then

each eligible holder may claim $10 of NVDA

The same shape, settling into a fixed value rather than a fixed quantity.

$FRIDAY

Specimen — not a live market

When

the chain timestamp passes 01 Jan 2027, 20:00 UTC

Then

each eligible holder may claim 0.001 ETH

A condition that needs no market at all — only the chain clock.

09

Network

Yieldpad targets Robinhood Chain mainnet only. No testnet, devnet or local network is configured anywhere in this application, and the wallet is never switched to one.

Chain
Robinhood Chain
Chain ID
4663 · 0x1237
Gas token
Ether (ETH), 18 decimals
RPC
https://rpc.mainnet.chain.robinhood.com

The public RPC is shared and rate limited. This site uses it for read-only network state; a wallet supplies its own transport for anything it signs.

10

What this build can do

Capability comes from one file — the deployment configuration — and every surface reads its availability from it. Nothing in the interface can claim a capability that is absent there.

Factory
0x05db4645e73b6f0af327b0a4e5de7683856936d5
Price attestation
Not configured

Available now

  • Wallet connection, network detection and network switching.
  • Read-only chain head from the mainnet public RPC.
  • Composing, validating and exporting a full clause specification in the composer.
  • Launching a token with a timestamp trigger and an escrowed ETH reserve.
  • Listing markets from the factory’s register.
  • Reading your holding, and redeeming once the trigger has passed.

Unavailable

  • Settling a price threshold, which needs an attestation source.
  • Per-holder amount rules, whose obligation is not bounded at launch.
11

Contract address

The published contract address has one source of truth, config/contract.json, and is written only by the command line. When it is empty the control is absent from the interface rather than showing a placeholder.

npm run ca set 0x…   # validate, publish, commit, push
npm run ca clear     # remove the address and hide the control

An address is checked for EVM format and checksum before anything is written. A value that fails is rejected and the existing configuration is left untouched.