Skip to content

Milestone Management

Ri edited this page Mar 24, 2022 · 10 revisions

Alchemist builder incentive (original specs)

This document outlines proposals to improve incentive alignment between builders and the MIST token.

context

Up to now, builders were provided a weekly MIST stipend to compensate them for engineering time spent building products. While this stipend has historically been very generous, it has not been effective at incentivizing long term product planning and fast iteration.

design goals

incentivize long term alignment incentivize fast iteration minimal managerial overhead proposals

timelock + milestone cliff

This approach creates long term alignment by preventing the builders from dumping mist as soon as it is received. Instead, a portion of the mist is placed in a timelock which unlocks over a longer period of time. While each builder has their own timelock, the team follows a collective cliff which enables withdrawing the vested portion of each team member once a pre-defined milestone is achieved. If the milestone is never acheived, the funds for that milestone are never distributed to the builders.

configuration

timelock duration milestone definition, start, and end allocation between cash and timelock allocation per builder weekly budget

pros / cons

managerial overhead of defining and updating milestones might need to have a fixed amount per milestone to encourage speed unclear what happens if milestone is never reached does team lead elect to return the mist? example

Contracts

MilestoneManager

can create a milestone (V1), allocate to a milestone, kick off cliff for a milestone

a milestone allocation involves giving a builder a cash amount (immediately liquid) and a vested amount that gets unlocked upon a success event and is vested over a specified duration. the allocation happens for a particular token. ex: MIST

the MilestoneManager can also perform multiple allocations at once, across milestones

the manager of the milestone is set to the address of the MilestoneManager contract

MilestoneV1

a single milestone can have multiple allocations across many builders

a milestone can have a status of either active, completed, or failed

each allocation to a builder is treated as an individual event

the cash amount (instantly liquid portion of allocation) gets automatically transferred to builder address, whereas the locked tokens get deposited into MilestoneV1

the cliff can only be triggered on an active milestone, and once triggered the milestone is set as completed. if cliff is nullified the milestone gets set as failed and the funds are withdrawn back to the milestone manager

builder can claim amount as it vests only if the milestone has been marked a success claimable = initialAmount * elapsed% where, elapsed% = (now - lastClaim) / duration

Steps to operate

  1. Deploy MilestoneManager
  2. Deploy MilestoneV1
  3. Send MIST to MilestoneManager
  4. Allocate MIST to builder through MilestoneV1 ex: ["0xF934Bd5B038B56471C814c0B0CFc1d918F51E63F","0xC5AF0a76086B6C2c75b0E4E557d3CC993D1e5291","2000000000000000000","3000000000000000000",3600]

for Milestone 0xF934Bd5B038B56471C814c0B0CFc1d918F51E63F, builder 0xC5AF0a76086B6C2c75b0E4E557d3CC993D1e5291 gets 2 of token as instantly liquid "cash" and 3 units that would vest over 3600 seconds (aka an hour) once the milestone is market as met.