This program allows you to lock arbitrary SPL tokens and release the locked tokens with a determined unlock schedule. An
unlock schedule is made of a
unix timestamp and a token
amount, when initializing a vesting contract, the creator can pass an array of
unlock schedule with an arbitrary size giving the creator of the contract complete control of how the tokens unlock over time.
Unlocking works by pushing a permissionless crank on the contract that moves the tokens to the pre-specified address. The recipient address of a vesting contract can be modified by the owner of the current recipient key, meaning that vesting contract locked tokens can be traded.