Skip to main content

Introduction

Vestlang is a domain-specific language (DSL) for expressing vesting schedules in a natural, human-readable form.

Example:

VEST
OVER 48 months EVERY 1 months
CLIFF 12 months

The DSL compiles into a typed Abstract Syntax Tree (AST), which is then evaluated into Open Cap Table compatible vesting objects, with additional metadata.

An overview of the DSL grammar is available here. An overview of the compiled AST is provided here.

See here for additional detail regarding the evaluated vesting objects and additional metadata.

Try it out in the playground!


Vestlang as OCT vesting templating schema

The motivation for this project is to facilitate a discussion within the Open Cap Table project regarding templating for vesting schedules.

The open cap table project aims to support arbitrarily-complex trees of dependent vesting conditions that mix time-based and event-based vesting. This is accomplished by expressing vesting as a directed and acyclic graph of Vesting Condition objects.

In August 2024, a vesting schema was introduced into OCT in order to support creating vesting schedules imperatively by creating an array of vesting installments (date and amount), as an alternative to creating vesting schedules declaratively with the templating system.

The vesting schema represents the canonical representation of a single installment of a vesting schedule. OCT does not expose a module to convert a declarative vesting schedule into canonical vesting installments.

There has been limited industry adoption of the OCT vesting schedule templating system. However, various industry participants have created their own proprietary vesting schedule templating systems in order to create canonical vesting installments.

If we still think that OCT should expose a vesting templating system, then this lack of adoption invites trying out a different approach. Vestlang represents an attempt to try out an abstract syntax tree, rather than a DAG.