How it works
Last updated
Last updated
The core framework of Vemo in version 1 revolves around three key contracts: VoucherFactory.sol, AccountRegistry.sol, and VoucherAccount.sol. These manage all aspects of creating, splitting, and merging vouchers, creating token-bound accounts, claiming tokens according to vesting schemes, and more.
Any Dapps, project owners, or token holders can act as the Implementation Layer to interact with these contracts. However, to illustrate the functionality of the Vemo protocol in a practical setting, we've created our own . This IVO product makes use of both VemoVestingPoolFactory.sol and VemoVestingPool.sol, as described below:
VoucherFactory.sol
The code defines a smart contract, Voucher Factory, responsible for managing the distribution of both NFTs tokens and their token-bound accounts (in the form of ERC6551Account) to manage vesting positions. Additionally, it functions as a portal, allowing users to create NFT - ERC6551Account pairs in batches, specify vesting schedules, and request common information.
AccountRegistry.sol
The code defines the AccountRegistry contract, which functions as a factory for ERC6551Account. This contract allows for the creation and retrieval of token-bound accounts for NFTs using the CREATE2 opcode. This contract serves as a registry for token-bound accounts associated with NFTs, providing functionalities for their deterministic creation and retrieval.
VoucherAccount.sol
The code defines the VoucherAccount contract. This contract is designed to hold token assets on behalf of users, while simultaneously delegating ownership of those assets to the corresponding NFT owner. The NFT owner can claim the vesting tokens through either the Voucher contract or directly through the ERC6551Account contract itself.
VemoVestingPoolFactory.sol (for reference only)
The code defines the VemoVestingPoolFactory contract. This contract functions as a factory for creating and managing VemoVestingPool contracts. It provides a standardized and efficient approach for deploying and interacting with token vesting schedules within decentralized applications.
VemoVestingPool.sol (for reference only)
The code defines the VemoVestingPool contract. This contract is responsible for managing token vesting schedules and facilitating the purchase and distribution of tokens according to pre-defined rules. It incorporates functionalities such as whitelist verification, fee calculations, and offering flexible allocation options.
Moreover, Vemo is designed with scalability in mind. It can accommodate locked positions from diverse sources, such as staking as well as possess the flexibility to adapt to various business logics, with the potential for future expansion planned in version 2.