@superical/time-lock-vault

1.1.1 • Public • Published

Time-Lock Vault Contracts

Release solidity Hardhat License: GNU AGPLv3

Time-Lock Vault Solidity Contracts

A simple and easy to use time-lock vault for ERC20 tokens, designed to support multiple deposits and withdrawals by various users. Each deposit can have a predefined/fixed locking period or a different locking period from the other deposits. Recipients will receive their share of vesting tokens that represent the amount of their deposited asset.

Simple Time-Lock Vault

The SimpleTimeLockVault contract is a ready-to-use vault contract, providing the standard time-lock vault functionality such as deposit, withdraw and batchWithdraw.

Custom Time-Lock Vaults

Alternatively, you can create your own Solidity vault contract by extending the TimeLockVault abstract contract and implementing your desired logic.

Installation

npm install @superical/time-lock-vault --save-dev

Usage

Note that the TimeLockVault is an upgradeable contract. If you don't plan on upgrading your vault contract, you should initialise it in your constructor.

import "@superical/time-lock-vault/contracts/TimeLockVault.sol";

contract MyCustomVault is TimeLockVault {
  constructor(string memory _name, string memory _symbol, address _asset) initializer {
    // Initialize the TimeLockVault contract
    __TimeLockVault_init(_name, _symbol, _asset);
  }

  // Implement custom deposit logic
  function deposit(uint256 amount) external {
    // Custom deposit condition here...
    // Deposit from the sender to himself and to be locked for 1 day
    _deposit(_msgSender(), _msgSender(), amount, 86400);
  }

  // Implement custom withdraw logic
  function withdraw(uint256 depositId) external {
    // Custom withdrawal condition here...
    // Withdraw deposit ID to sender
    _withdraw(depositId);
  }
}

Your contract will inherit additional functionalities such as premature withdrawal (refer to the _prematureWithdraw function) before the maturity date subject your specific condition, control over the depositor/recipient addresses, and other aspects.

Package Sidebar

Install

npm i @superical/time-lock-vault

Weekly Downloads

1

Version

1.1.1

License

AGPL-3.0-or-later

Unpacked Size

54.3 kB

Total Files

10

Last publish

Collaborators

  • superical