# vesting

### Abstract <a href="#abstract" id="abstract"></a>

This document specifies the internal `x/vesting` module of the Mnova Chain.

The `x/vesting` module introduces the `ClawbackVestingAccount`, a new vesting account type that implements the Cosmos SDK [`VestingAccount` ](https://docs.cosmos.network/v0.42/modules/auth/05_vesting.html#vesting-account-types)interface. This account is used to allocate tokens that are subject to vesting, lockup, and clawback.

The `ClawbackVestingAccount` allows any two parties to agree on a future rewarding schedule, where tokens are granted permissions over time. The parties can use this account to enforce legal contracts or commit to mutual long-term interests.

In this commitment, vesting is the mechanism for gradually earning permission to transfer and delegate allocated tokens. Additionally, the lockup provides a mechanism to prevent the right to transfer allocated tokens and perform Ethereum transactions from the account. Both vesting and lockup are defined in schedules at account creation. At any time, the funder of a `ClawbackVestingAccount` can perform a clawback to retrieve unvested tokens. The circumstances under which a clawback should be performed can be agreed upon in a contract (e.g. smart contract).

### References <a href="#references" id="references"></a>

* SDK vesting specification: [https://docs.cosmos.network/main/modules/auth/05\_vesting.html ](https://docs.cosmos.network/main/modules/auth/05_vesting.html)
* SDK vesting implementation: [https://github.com/cosmos/cosmos-sdk/tree/master/x/auth/vesting ](https://github.com/cosmos/cosmos-sdk/tree/master/x/auth/vesting)
* Agoric’s Vesting Clawback Account: [https://github.com/Agoric/agoric-sdk/issues/4085 ](https://github.com/Agoric/agoric-sdk/issues/4085)
* Agoric’s `vestcalc` tool: <https://github.com/agoric-labs/cosmos-sdk/tree/Agoric/x/auth/vesting/cmd/vestcalc>
