sheaf

Testnet · Tempo testnet (Moderato)

Everyday Tech

EVDY · 0x8EdF…6506 · creator fee 0.00% of shares created

One share, at the real stocks' price

$10.11

Priced from Robinhood's stock-token quotes

HyperCore 24/7: reading

One EVDY share is a claim on 4 holdings sitting in a contract on Tempo that has no owner, no pause and no upgrade path. Anyone can create a share by depositing the recipe, and any share can be redeemed for it. No issuer has stock tokens on this testnet, so the holdings are labeled mirrors: free tokens named “Tesla (Sheaf testnet mirror)” and so on, worth nothing. The dollar figure is what the same recipe would be worth in the real shares.

METAAAPLAMZNTSLA
Shares outstanding
—— creations, — redemptions
Everything in the vault
—At the real stocks' price
Backing
—Held against owed, every component
Dollar desk
AlphaUSDTempo's own TIP-20 dollar

First, Tempo's own faucet: pathUSD pays the fees (Tempo has no gas token) and AlphaUSD pays for dollar orders.

Then mint the mirrors yourself: every one has a public faucet(), so your own wallet calls it and no key of ours is involved. Enough for two shares.

Tempo-native

A monthly plan the chain enforces

On Tempo a monthly plan is not an allowance a server promises to respect. You write the plan on chain: 10.10 AlphaUSD a run, once every 30 days, and the fewest and most shares a run may buy. Then you sign one access key that may spend 25 AlphaUSD every 30 days on two calls only, AlphaUSD.approve with the plan desk as spender and PlanDeskV3.instalment. Gas is paid in pathUSD, a dollar, because Tempo has no gas token.

The plan follows the price. Each run's fair share count must sit within 10% of what the last run filled at, so a normal monthly move doesn't stop it. It must also stay inside the hard bounds you sign, 85% to 120% of today's count, and no run's auction ever ends below that floor. A bigger move pauses the plan until you re-center it with your own key.

The keeper is the house key, and the house also fills. The keeper names each run's fair count, but the contract only accepts one within 10% of what your last run actually filled at and inside your hard bounds, so it is never the sole judge of the price. It can only run your installment, for exactly 10.10 AlphaUSD and at most once a period. It can't run early, re-center, rewrite or close the plan, or call the desk directly: the plan contract or the chain refuses. The 0.10% protocol fee goes to a separate treasury key the founder holds, not to this key.

Worst case with one filler: it can walk your price toward the floor, but every run still buys at least 85% of today's MAG8 for the same dollars, a price at most 1.18 times today's. Any other filler can only do better.

The recorded run

09 Oct 2026 15:33 UTC

evm/scripts/tempo-sip-v3.mjs, against Tempo Moderato

  1. The investor (here, the house) writes the plan

    Plan #1 on PlanDeskV3: 10.10 AlphaUSD a run, each run within 10% of the last fill, never outside 0.70 to 1.50 MAG8 (wider than today's default of 85% to 120%). A 2-minute interval, so the recording shows two runs.

    0xddfb7b9f…f2f3f1

  2. …and signs one key authorization

    Keeper 0x3958…c9ec may spend 25 AlphaUSD per 30 days, scoped to AlphaUSD.approve(spender = PlanDeskV3) and PlanDeskV3.instalment(uint256,uint256).

    0x057e657a…2260e3

  3. Keeper runs it at 1 raw share unit for 10.10

    Pay the whole installment for nothing. The plan's window refuses it.

    Refused by the plan: FairOutOfBounds

  4. Keeper calls the v3 desk's placeOrder at its own price

    Outside the scope: the chain rejects it before inclusion.

    Refused by the chain: CallNotAllowed

  5. Keeper opens a plan with its own terms

    Outside the scope: the key can run the plan, never write one.

    Refused by the chain: CallNotAllowed

  6. Keeper re-centers the plan to a floor of 1 raw unit

    Outside the scope: only the investor's own key can re-center.

    Refused by the chain: CallNotAllowed

  7. Run 1, filled in kind

    Order #3, an auction from 1.02 down to 0.98 MAG8. The investor received 1.0192 MAG8 after the creator fee and the 0.10% protocol fee, which went to the separate treasury key.

    0x24900b79…b8ccdb

  8. Keeper runs it again at once

    The plan's interval refuses it.

    Refused by the plan: TooSoon

  9. Run 2, re-centered on run 1's fill

    After the interval the price had moved: run 2 asked 1.0701 MAG8 for the same cash, 5% more than run 1's 1.0192. The window had trailed to run 1's fill, so it ran (Recentered), and the investor received 1.0910 MAG8.

    0x121cba89…b15f5c

Left this period, live

reading

Resets

—

Read from Tempo's AccountKeychain precompile (getRemainingLimitWithPeriod) for investor 0x59d3…0285, the house, which invested in this recording, and keeper key 0x3958…c9ec. Protocol fee to the separate treasury key 0xEcb6…7355.

Run it in this browser

You are the investor, with a passkey or a key made in this browser as your Tempo account. The house key 0x59d3…0285 is the keeper: in the recorded run the house was the investor; in yours it is the keeper. Free testnet dollars only.

  1. Make your Tempo accountA passkey, or a throwaway key kept in this browser
  2. Fund it from Tempo's faucetpathUSD for fees, AlphaUSD to invest
  3. Sign the plan, onceWrite it on PlanDeskV3 (10.10 AlphaUSD a month, a 10% step, your hard bounds), then scope the keeper to two calls
  4. The keeper tries to overpay1 raw share unit for the whole installment. The plan refuses: FairOutOfBounds
  5. The keeper runs this month's installmentAn auction that never ends below your floor, filled in kind
  6. The keeper runs it again at onceThe plan refuses: TooSoon
  7. The keeper calls the desk directlyOutside the scope. The chain refuses: CallNotAllowed
  8. Re-center at today's price (optional)Your own key; the keeper's scope can't
  9. Revoke the key and close the plan (optional)Skip it and the keeper keeps investing once a period

The recipe

Written once, in the constructor, with no setter. The recipe is in raw token units, so a split or a dividend that a token applies through its multiplier accrues to every share without anyone touching the vault.

HoldingPer shareValueWeight
AAPLmirror
0.00882$2.9629.3%set 30.0%
AMZNmirror
0.011779$3.0930.6%set 30.0%
METAmirror
0.002781$2.0019.8%set 20.0%
TSLAmirror
0.005374$2.0620.3%set 20.0%

Is it actually backed?

Held is the vault's balance of each token right now, from vaultBalances(). Owed is the recipe times totalSupply(). Deposits round up and redemptions round down, so held can never fall below owed.

Reading the vault…

Verify it yourself

Two reads against the public RPC, no key:

cast call 0x8EdF6718E08Bc481283D611EeaD5dBcE49336506 "totalSupply()(uint256)" --rpc-url https://rpc.moderato.tempo.xyz
cast call 0x8EdF6718E08Bc481283D611EeaD5dBcE49336506 "vaultBalances()(uint256[])" --rpc-url https://rpc.moderato.tempo.xyz

For every component, vaultBalances[i] must be at least unitsPerShare[i] × totalSupply ÷ 10^18. The recipe is in components().

The desk's book

Dollar orders on Tempo testnet (Moderato), newest first, read from getOrder(). A buyer escrows AlphaUSD and posts a Dutch auction: the shares they must receive start high and fall until a participant delivers the components in kind and collects the escrow. The shares are minted straight to the buyer, less the creator fee and the 0.10% protocol fee. The house filler is one such participant and fills at fair plus 0.15%.

Desk v3 0xD54d…940c · Desk v2 0x1855…4742 · Desk v1 0x4EB6…2Eb0

Auctions, v3 desk (protocol fee to a separate treasury key)

Reading the desk…

Auctions, v2 desk (earlier; its protocol fee went to the house key)

Reading the desk…

Fixed-price orders, v1 desk

The first desk: N shares for a fixed amount, no auction and no protocol fee. It is immutable, so it stays live for the orders it holds; new dollar orders go to the newest auction desk.

Reading the desk…

Priced around the clock

The stock exchanges close; HyperCore's stock perpetuals do not. This prices the same recipe from trade.xyz's oracle on Hyperliquid testnet, read through HyperEVM's oraclePx precompile with a plain eth_call, no gas and no key. It is a reading, not a deployment: nothing of Sheaf runs on Hyperliquid yet.

—

Priced from HyperCore, not deployed

PerpPrecompile indexOracle price
xyz:AAPL—reading
xyz:AMZN—reading
xyz:META—reading
xyz:TSLA—reading

The contracts, verified

Also on Tempo: Magnificent Eight (MAG8), AI Core (AICORE).