Skip to content Search Apps Documentation Source Content File Folder Download Copy Actions State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

Community realm. Read the code first. Community realm, deployed by its author. Read the code before you interact or send coins.

Cliff Vesting

A pure vesting calculator, demoing the p/moul/x/daily/cliffvesting library.

A 12-month grant with a 3-month cliff

1200 tokens, Start = 0, Cliff = 3, End = 12.

month vested unvested %
0 0 1200 0%
1 0 1200 0%
2 0 1200 0% ← nothing yet
3 300 900 25% ← cliff
4 400 800 33%
5 500 700 41%
6 600 600 50%
7 700 500 58%
8 800 400 66%
9 900 300 75%
10 1000 200 83%
11 1100 100 91%
12 1200 0 100% ← fully vested

The cliff is a step, not a ramp: at month 3 a quarter of the term has elapsed, so 300 tokens unlock at once. After that it accrues linearly.

Claiming

The library tracks no balances — the caller supplies what has already been claimed:

at month already claimed claimable
6 0 600
6 300 300
6 600 0
12 600 600

Integer rounding

All arithmetic is integer — no float ever reaches consensus state. Rounding is down, so nobody is ever paid more than they earned, and the final instalment collects the remainder.

1000 over 3 periods:

t vested
0 0
1 333
2 666
3 1000

333 + 333 + 334 — the end is exactly 1000, never 999.

The bug this avoids

When the total is smaller than the duration, computing a per-tick rate first truncates it to zero and nothing ever vests. Multiplying before dividing keeps it honest — 7 tokens over 1000 ticks:

t vested
100 0
150 1
500 3
1000 7