How it works

Ark has three user states: liquid, boarded, and locked.

Liquid TEST can be traded or transferred. Boarded TEST earns base rewards and has an exit-fee timer. Locked TEST commits for a fixed period and earns the locked reward lane.

The Core Model

Simple rule: liquid TEST is flexible, boarded TEST participates in base rewards, and locked TEST participates in the locked reward lane.
flowchart TD
  Liquid[Liquid TEST] -->|Board| Boarded[Boarded position]
  Liquid -->|Lock| Locked[Vault lock]
  Boarded -->|Claim| Wallet[Wallet TEST]
  Boarded -->|Compound| Boarded
  Boarded -->|Exit| Liquid
  Locked -->|Claim before maturity| Wallet
  Locked -->|Compound before maturity| Locked
  Locked -->|Unlock at maturity| Liquid
          

The protocol does not give rewards to every wallet that simply holds TEST. Rewards are connected to positions that the contracts can account for precisely.

Trade

Trade buys or sells through the official TEST/WETH Uniswap v4 pool. Buys use the dedicated buy executor. Sells use the dedicated sell executor. Both routes pass through the official hook, so the protocol can observe volume and collect the configured hook fee.

Buy TEST

ETH is wrapped as WETH, swapped through the official pool, and TEST is delivered to the receiver. Standard buys use the normal buy fee.

Sell TEST

TEST is swapped for WETH through the official pool. The sell executor unwraps WETH and pays native ETH to the receiver, falling back to WETH when native ETH cannot be delivered.

Board

Boarding deposits TEST into ArkBoarding. The position receives a non-transferable bTEST receipt balance and a dTEST Pass NFT. The Pass identifies the position; bTEST mirrors the boarded principal.

sequenceDiagram
  participant U as User
  participant B as ArkBoarding
  participant V as ArkVault
  U->>B: board(amount, receiver)
  B->>V: sync base reward index
  B->>B: create position
  B->>U: mint bTEST + dTEST Pass
  B->>V: set position reward debt
          

Board Example

If a user boards 100 TEST in the current accelerated TEST deployment, they receive 100 bTEST and one dTEST Pass. The current max exit fee is 40% and decays to zero over 40 minutes. At the start, exiting the full 100 TEST would cost 40 TEST. Around halfway through, the fee is about 20 TEST. After the timer reaches zero, the full principal can exit with no exit fee.

Pending rewards are separate from principal. A position can show 100 TEST boarded and 3 TEST pending; the exit action is about the boarded principal, while claim or compound handles pending rewards.

Lock

Locking deposits TEST into ArkVault. The user receives non-transferable lTEST plus a dTEST Lock NFT. The lock has a fixed unlock timestamp and a maturity epoch. Rewards stop at maturity.

sequenceDiagram
  participant U as User
  participant V as ArkVault
  U->>V: lock(amount, receiver)
  V->>V: calculate unlocksAt
  V->>V: round maturity to next epoch
  V->>U: mint lTEST + Lock NFT
  V->>V: schedule activation and maturity
          

Lock Example

In the current accelerated TEST deployment, a 100 TEST lock lasts 40 minutes and uses 1-minute epochs. If the lock unlocks at 12:34:20, its maturity epoch is 12:35:00. The lock can earn only while it is active and before that maturity epoch.

In the standard ARK parameter set, the same idea uses a 40-day lock and 1-day maturity epochs. If the unlock time lands in the middle of a day, maturity is rounded up to the next day boundary.

Claim, Compound, Exit, Unlock

Action Applies to What it does
Claim Boarded positions and locks Pays pending rewards to the wallet without changing principal.
Compound Boarded positions Adds pending TEST rewards back into the same boarded position.
Compound locked Immature locks Creates a new lock from pending TEST rewards. It reverts after maturity.
Exit Boarded positions Returns principal minus any active exit fee and claims pending base rewards.
Unlock Mature locks Returns lock principal plus remaining TEST and ETH/WETH rewards.

Native Batch Actions

The core contracts include native batch functions. There is no broad third-party batcher approval layer. Batch calls still require the caller to own the relevant positions or locks.

20max exits per batch
20max claims per batch
8max unlocks per batch