ORCHARD protocol
Activity in. Apple out.
Orchard is a five contract protocol on Base. Trading on the single ORCHARD/USDC Uniswap V4 pool is taxed by a hook. The tax is collected in USDC, converted into AAPLc (Coinbase tokenized Apple stock on Base), then split: 80% streams to ORCHARD stakers, 20% goes to a permanent AAPLc reserve that anyone can redeem against by burning ORCHARD.
swap on ORCHARD/USDC
└─ THE GRAFT (hook) skims 3% in USDC ──► Harvester
│ harvest() permissionless, oracle bounded
▼
USDC ─► AAPLc
│
80% ◄───────────────┴───────────────► 20%
Orchard (stakers pick AAPLc) The Grove (burn ORCHARD, redeem AAPLc)
Five contracts, five trees. The Grove is the blue one.
Lexicon
| Term | Meaning |
|---|---|
| Plant | stake ORCHARD |
| Pick | claim AAPLc |
| Uproot | withdraw ORCHARD |
| Harvest | convert skimmed USDC into AAPLc |
| The Graft | the Uniswap V4 hook |
| Rows | the staking pool |
| The Grove | the AAPLc reserve |
Contracts
| # | Contract | Role |
|---|---|---|
| 1 | OrchardToken | ERC-20, fixed supply of 100,000,000, burnable. Name Orchard, ticker ORCHARD. |
| 2 | GraftHook | Uniswap V4 hook on the single ORCHARD/USDC pool. Skims the fee in USDC. |
| 3 | Harvester | Holds skimmed USDC. Permissionless harvest() converts to AAPLc and splits. |
| 4 | Orchard | Staking. Stake ORCHARD, earn AAPLc. Synthetix StakingRewards model. |
| 5 | Grove | Permanent AAPLc reserve. Burn ORCHARD to redeem a pro rata share. |
The Graft
- Permissions:
beforeInitialize,beforeSwap,afterSwap,beforeSwapReturnDelta,afterSwapReturnDelta. - Only the deployer can initialize the pool, only once, only for the ORCHARD/USDC pair.
- Fee: 3% on buys and sells. Hard cap 3%. The fee launches at the cap. The owner can only lower it.
- The fee is always charged in USDC. When USDC is the unspecified currency the hook charges in
afterSwapthrough the return delta. When USDC is the specified currency it charges inbeforeSwapthroughBeforeSwapDelta. - The hook calls
poolManager.take(USDC, harvester, fee). It never holds funds. - Pool LP fee: static 0.30%.
Harvester
State: lastHarvest, harvestCount, totalUsdcHarvested, totalAaplBought, and an onchain harvests array. The array exists so the frontend needs no indexer.
harvest(), callable by anyone:
- Requires one hour since the last harvest.
- Takes
min(balance, MAX_PER_HARVEST), at leastMIN_HARVEST. The cap exists because AAPLc liquidity is thin. - Reads the Chainlink AAPLc/USD feed and refuses a stale price. If the feed is stale, USDC waits.
- Pays the caller a tip of 0.5% in USDC.
- Swaps the rest to AAPLc through the configured route with a 1.5% slippage bound derived from the feed.
- Splits the AAPLc received: 80% to
Orchard.notifyRewardAmount, 20% to the Grove. - Pushes the harvest record and emits
Harvested.
Route: the Uniswap V4 AAPLc/USDC pool, swapped directly through PoolManager.unlock. A small ISwapRoute interface lets the owner replace the route if the pool dies. This is the only owner power that touches the flow of funds.
Rows (Orchard staking)
- Fork of Synthetix
StakingRewards. Staking token ORCHARD, reward token AAPLc, stream duration 24 hours. notifyRewardAmountcallable only by the Harvester. Leftover plus new amount restreams over 24 hours. This kills stake sniping around harvests.stake(Plant),withdraw(Uproot),getReward(Pick),exit.- No lock, no exit fee, no APY stored onchain, no APY displayed.
withdrawnever depends on an AAPLc transfer succeeding. If AAPLc transfers are paused by the issuer, users can still uproot their ORCHARD.
The Grove
redeem(amount): your pro rata share of the Grove's AAPLc for the ORCHARD you burn.floorPerToken()returns raw AAPLc per ORCHARD, scaled by 1e18 so a small reserve against a 100M supply does not truncate to zero. The UI converts to USD with the feed.- No owner function can move Grove AAPLc. None.
- The Grove only grows.
Parameters
| Param | Value |
|---|---|
| Supply | 100,000,000 ORCHARD, fixed |
| Distribution | 90% single sided LP in ORCHARD/USDC, 10% treasury (PoC placeholder) |
| Hook fee | 3% both ways, only decreasable |
| Split | 80% Orchard, 20% Grove |
| Route | Uniswap V4 AAPLc/USDC pool |
| Stream | 24 hours |
| Harvest | min interval 1h, cap 1,000 USDC, min 50 USDC, tip 0.5%, slippage 1.5% |
Owner powers
The owner is the deployer EOA.
Can: lower the hook fee, tune Harvester caps and tolerances within hard bounds, change the swap route.
Cannot: touch staked ORCHARD, touch Grove AAPLc, raise the fee, redirect the split, mint ORCHARD.
Issuer controls and risks
- AAPLc is a B20 Asset token issued by Coinbase for eligible non-US persons. The issuer can pause transfers and apply transfer policies. If AAPLc is paused, picking and redeeming halt until it resumes. Uprooting ORCHARD always works.
- AAPLc carries a WAD multiplier for dividends and splits. Protocol accounting is in raw units and does not rebase. The UI shows scaled units.
- The Chainlink feed can be stale outside US market hours. Harvests wait for a fresh price.
- The AAPLc/USDC pool is thin. The per harvest cap and slippage bound limit the damage of a bad fill. If the pool dies, the owner can point the Harvester at another route.
- Uniswap V4 hooks are new code. The hook is audited by nobody yet. This is a proof of concept.
- No affiliation with Apple, Coinbase or Base. ORCHARD confers no rights to Apple stock beyond what the Grove holds.
Contract addresses
No deployment for chain 84532 yet.
Orchard is an independent protocol. It is not affiliated with, endorsed by, or sponsored by Apple Inc., Coinbase, or Base. AAPL is a trademark of Apple Inc. AAPLc is issued by Coinbase; tokenized securities are offered to eligible non-US persons only. Nothing on this site is investment advice. Amounts shown are read from the chain and may be delayed. Contracts are unaudited during the proof of concept.