Docs
How Talis
works.
Deposit a Stock Token into a series. Receive one Income position and one Upside position per unit. At settlement, Upside pays the amount of one unit's value above the cap price K, in Stock Tokens; its maximum loss is the price paid for it. Income keeps everything up to K plus whatever the auction paid for Upside. Income is not protected: if the Stock Token falls, Income falls with it. One Income position plus one Upside position of the same series merge back into one Stock Token at any time, free.
Mechanism
01
Deposit a Stock Token
Into a series: one Stock Token, one epoch, one cap. The vault holds it.
02
Split into Income + Upside
One Income position and one Upside position per unit, as two ERC-20s.
03
Auction Upside
Subscribers' Upside is sold in a descending-clock auction; the proceeds are their premium.
04
Trade the epoch
Both positions are plain ERC-20s. Talis runs no venue; pools are third-party.
05
Settle or recompose
At settlement Upside takes the amount above K, Income the rest. Or merge Income + Upside back, any time, free.
Income
Keeps the Stock Token up to K and receives the auction proceeds.
Income is not protected. If the Stock Token falls, Income falls with it. The premium is the auction proceeds, not a guarantee.
Upside
Receives the value above K at settlement, in Stock Tokens.
Fully prefunded by the Stock Tokens in the vault. No borrowing, no funding rate, no liquidation engine. Maximum loss is the price paid.
Concepts
One card per concept; each links to the section with the detail.

01Asset Backing
The Stock Token is locked in the series vault to back the payoff. No margin, no funding rate, no liquidation engine.
Mechanism
02Asset Distinction
Positions are created from Stock Tokens and carry Income or Upside exposure. The protocol token is separate from them.
Token
03Defined Cap
K = P0 × (1 + cap). Upside pays nothing at or below K and the amount above it.
Settlement
04Income Position
Accept an upside cap for a defined period. Receive the premium paid by the upside buyer. Underlying downside exposure remains.
Mechanism
05Market Epochs
Each epoch records a starting price and a cap. Monthly, settling on the third Friday; 28 or 35 days each.
Oracle
06Market Structure
One Stock Token, one epoch, one cap per series. Income earns the premium; Upside buys the move above the cap.
Mechanism
07Oracle Settlement
A 30-minute average of the Chainlink feed inside the regular session sets the value allocated to each side.
Oracle
08Outcome Scenarios
Start $250, cap $262.50. At $200 or $250 Upside pays nothing. At $300 Upside pays $37.50; Income keeps $262.50 plus the premium.
Settlement
09Position Redemption
One Income position plus one Upside position of the same series merge back into one Stock Token at any time, free.
Settlement
11Protocol Revenue
One fee: 5 % of gross auction proceeds, in USDG. Split, merge and settlement claims are free.
Fees
12Risk Perspective
Income still bears the downside of the Stock Token. The upside buyer can lose the premium paid.
Risks
13Tokenized Markets
Stock Tokens on Robinhood Chain. A token with a Chainlink feed and a USDG pool can be listed.
Listing
14Token Utility
TALI launches on Pons after counsel clears it. Fixed supply, no emissions; utility subject to final design.
Token
15Upside Position
Pay a premium for exposure above a defined level. The position can expire without a payoff.
Mechanism
Settlement
- Cap price
- K = P0 × (1 + cap)
- Upside per unit
- max(S − K, 0)
- Income per unit
- min(S, K) + premium
- Merge
- Income + Upside → 1 Stock Token
- Cap choices
- 0% · 2% · 5% · 10%
Paid in Stock Tokens: an Upside unit receives (S − K) / S Stock Tokens, an Income unit min(S, K) / S. Prices are Chainlink feed prices per raw ERC-8056 unit; the feed already embeds the issuer's uiMultiplier.
Example: P0 $250.00, cap +5% → K $262.50. Per unit, before the premium.
| Settlement S | Upside | Income | Income in units |
|---|---|---|---|
| $200.00 | $0.00 | $200.00 | 1.0000 |
| $250.00 | $0.00 | $250.00 | 1.0000 |
| $300.00 | $37.50 | $262.50 | 0.8750 |
Oracle and calendar
Source
The canonical Chainlink RH<T>/USD push feed, 8 decimals, 0.5 % deviation. No other equity oracle exists on Robinhood Chain; the pool is a breaker, never a price.
Price
A 30-minute time-weighted average of the feed's own rounds inside the regular session (09:30–16:00 ET: 13:30–20:00 UTC in summer, 14:30–21:00 UTC in winter). A day is disqualified when the pool TWAP disagrees with the feed by more than 3 %; the next qualifying day is used.
Calendar
Monthly epochs settling on the third Friday; 28 or 35 days each. The settlement price of one epoch is the opening price of the next. Every transition is permissionless and re-callable.
Fees
- Upside auction
- 5% of gross clearing proceedsUSDG · the only fee
- Split
- none
- Merge
- none
- Settlement claims
- none
- Auction clock
- 50% → 2% of P0240 steps × 30s
Charged only when a premium is realised, at the one place USDG already flows. A subscriber can always unsubscribe, split and sell Upside bilaterally with no fee. No fee is Stock-Token- or ETH-denominated, so no converter or swap exists in the protocol.
Listing a Stock Token
Launchpad- 01
Live Stock Token
An 18-decimal Stock Token on Robinhood Chain behind the issuer's beacon registry.
stock.decimals() == 18 · registry has code and answers isBlocked() · one registration per address and uid()
- 02
Chainlink RH<T>/USD feed
The canonical Chainlink proxy for the ticker, 8 decimals, description "RH<T> / USD".
feed.decimals() == 8 · feed.description() == "RH" ‖ label ‖ " / USD"
- 03
USDG V3 pool with depth
The Uniswap V3 <T>/USDG pool returned by the factory, with an observation buffer of at least 7,200 slots, whose spot agrees with the feed within 3 % at registration and at every series creation.
pool == factory.getPool(USDG, stock, fee) · slot0().observationCardinalityNext ≥ 7,200 · |feed − poolSpot| ≤ 300 bps (registerTicker and createSeries revert on disagreement)
- 04
Registered by the owner
Registration is a direct call by the factory owner; no delay at launch (D78). No fee; no permissionless path at launch.
factory.registerTicker(...) from owner() · every parameter within the bytecode bounds
- 05
Active
The first series is created at the next third-Friday window; from then on every epoch opens, auctions and settles permissionlessly.
factory.createSeries(tickerId, capBps) · nextEpoch(tickerId) > 1 · ticker enabled
Disclosures
Income is not protected
If the Stock Token falls, Income falls with it. The premium is the auction proceeds, not a guarantee; an auction can also clear at the floor or sell nothing.
Issuer powers
The issuer can pause every Stock Token, blocklist an address (including a vault), burn any balance (adminBurn) and upgrade every token at once through one beacon. Talis cannot prevent this; claims are pull-based, re-callable and never expire, and losses from a burned vault are pro-rated and ledgered per position.
Oracle precision
Each Chainlink round is within ±0.5 % of the observed price. Settlement uses a 30-minute window of rounds inside the regular session and can differ from the market by that much, which near K moves up to 0.5 % of notional between the two sides.
No venue mid-epoch
Talis operates no exchange. Whether an Income or Upside position can be sold before settlement depends on third-party pools and their depth; there may be none.
USDG actions
USDG can be paused or a holder frozen by its issuer. A frozen claimant blocks only their own USDG pull; a frozen auction contract traps that series' USDG. Stock Token claims never touch USDG.
Status
The contracts are unaudited and the legal classification of the positions has not been reviewed by counsel. Indicative Income and Upside values are a model; the auction sets the price. Prices are the Chainlink feed.
Token · phase 1
TALI launches on Pons after counsel clears it; nothing in phase 0 references it. Fixed supply, no emissions. Phase 1 adds a revenue router (55 / 20 / 15 / 10 to stakers, buybacks, backstop, treasury), lock-weighted staking (1.0× / 1.4× / 1.8× / 2.5× for 0 / 3 / 6 / 12 months) paid in USDG from fees only, and a rising-price procurement auction that burns what it buys.
RewardsProtocol documents
Repository paths, relative to the Talis monorepo root. Excerpts are the documents' own status lines.
SPEC.md
v1.1 · 2026-09-24 · authoritative
The single source of truth for the Foundry implementation. Register: mechanism as fact. No outcome promises. Revised after the design review of 2026-09-24; §21 records every finding.
docs/SPEC.md
DECISIONS.md
D1–D77 · 2026-09-24
Each entry: the decision, the alternatives rejected, why. Section J records the amendments made after the design review; D76 moves the token launch to Pons.
docs/DECISIONS.md
RISKS.md
v1.0 · 2026-09-24 · register, not legal advice
Consolidates the regulatory landscape (R1–R20) and the design-review findings (SC-1–SC-35) with severity, owner, mitigation and status. Nothing here has been reviewed by counsel.
docs/RISKS.md
TEST-REPORT.md
v1.0 · 2026-09-24 · forge, solc 0.8.26
Results of the BUILD-PLAN step 12 run on the phase-0 repository: 761 tests, 759 passed, 2 failed (§5.1, §5.2), fuzz 512 runs, invariants 128 runs × depth 64. Nothing is projected.
docs/TEST-REPORT.md
AUDIT.md
v1.0 · 2026-09-24 · pre-audit, unaudited, not deployed
Audit package for five deployable contracts and two libraries under contracts/src. Out of scope: vendored TickMath, OpenZeppelin v5.6.1, forge-std, tests and scripts.
docs/AUDIT.md
collateral-and-oracle.md
research · probes of 2026-09-24, chain 4663
Stock Tokens (ERC-8056 behind one issuer beacon), USDG, the Chainlink equity feeds and Uniswap V3 depth on Robinhood Chain, with [verified] / [likely] / [unverified] tags.
docs/research/collateral-and-oracle.md
Terms
Interface terms · draft pending counsel review
- Interface only. This site is a front end to immutable contracts on Robinhood Chain (4663). It holds no funds, has no admin key over a live series and cannot reverse a transaction.
- No offer, no advice. Nothing here is investment, legal or tax advice, and nothing is an offer to sell or a solicitation to buy any position. Positions can lose their entire value.
- Eligibility. Stock Tokens are restricted from U.S. persons and other listed jurisdictions by their issuer. You are responsible for confirming that you may hold them and the positions built on them.
- Indicative values. Indicative Income and Upside values are a model; the auction sets the price. Prices are the Chainlink feed.
- Third parties. Stock Tokens, USDG, Chainlink feeds and Uniswap pools are operated by third parties whose actions (pause, freeze, burn, upgrade) Talis cannot prevent. See the disclosures above.
- Software. The interface and contracts are provided as they are, without warranty. The contracts are unaudited until the audit package is closed.
Privacy
- No accounts, no analytics. The interface sets no tracking cookies and collects no personal data.
- Wallet. Connecting a wallet exposes its address to this page in your browser only. In live mode the address is sent to the configured RPC endpoint to read balances; that operator's own policy applies.
- Local storage. Wallet-connection state may be kept in your browser's storage. Clearing site data removes it.
- Public chain. Every transaction you sign is public on Robinhood Chain and cannot be deleted.

