Target Groups:
Financial actors
Affiliation:
Paladin Blockchain Security
Open Source and Standards:
No

Abstract

Creating a standardized and unified interface for vesting contracts and timelock contracts with a Non-Fungible Token (JFT) standard to vest tokens (ERC-20 or otherwise) over a vesting release curve. The ERC-5725 standard allows for the implementation of a standard API for NFT-based contracts that hold and represent the vested and locked properties of any underlying token (ERC-20or otherwise) that is emitted to the NFT holder. This standard is an extension of the ERC-721 token that provides basic functionality for creating vesting NFTs, claiming the tokens and reading vesting curve properties.

Main Author:
Marco De Vries
< marco@paladinsec.co >
Authors:
Apeguru, Mario, DeFiFoFum, Elliott Green

Value Proposition

Vesting contracts, including timelock contracts, lack a standard and unified interface, which results in diverse implementations of such contracts. Standardizing such contracts into a single interface would allow for the creation of an ecosystem of on- and off-chain tooling around these contracts. In addition, liquid vesting in the form of non-fungible assets can prove to be a huge improvement over traditional Simple Agreement for Future Tokens (SAFTs) or Externally Owned Account (EOA)-based vesting as it enables transferability and the ability to attach metadata similar to the existing functionality offered by traditional NFTs.

Such a standard will not only provide a much-needed ERC-20 token lock standard, but will also enable the creation of secondary marketplaces tailored for semi-liquid SAFTs. A variety of different vesting curves could be implemented, including: linear vesting, cliff vesting, exponential vesting, custom deterministic vesting.

Identity Management

Objects identified include: TokenID, Address, Claim, Payout, vesting period, Claim Approval. Subjects roles identified include: Owner, Spender, Recipient, Claim Approver

Token and asset creation and exchange

ERC-5725 is a standard for NFT-based contracts that hold and represent the vested and locked properties of an underlying token (ERC-20 or otherwise). This standard extends ERC-721 token that provides basic functionality for creating vesting NFTs, claiming the tokens and reading vesting curve properties.

If an ERC-721 approval is made on a Vesting NFT, the operator has the rights to transfer the Vesting NFT to themselves and then claim the vested tokens. When an ERC-5725 approval is made, the operator has rights to claim the vested tokens, but not transfer the NFT away from the owner.

Keeping track of the number of tokens which have been claimed and not give out more tokens than allotted for a specific Vesting NFT is key: vestPayoutAtTime(tokenId, type(uint256).max) returns the total payout for a given tokenId.