Time-Locked Tokens for Future Sales
To control supply and ensure long-term sustainability, 3 billion KLIKcoins allocated for future sales will be locked and released gradually over time. The tokens are time-locked as follows:
5-Year Unlock Schedule:
60% of the future sales tokens (1.8 billion KLIKcoins) will be unlocked incrementally over 5 years, with 12% unlocking each year.
10-Year Tranche:
40% of the future sales tokens (1.2 billion KLIKcoins) will remain locked for 10 years to support future liquidity, strategic initiatives, or major partnerships.
Solidity Code for Time-Lock Mechanism:
solidityCopy code// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract KLIKTimeLock is Ownable {
ERC20 public klikToken;
struct Lock {
uint256 amount;
uint256 unlockTime;
}
mapping(address => Lock[]) public locks;
constructor(ERC20 _klikToken) {
klikToken = _klikToken;
}
function lockTokens(address beneficiary, uint256 amount, uint256 unlockTime) external onlyOwner {
locks[beneficiary].push(Lock(amount, unlockTime));
klikToken.transferFrom(msg.sender, address(this), amount);
}
function unlockTokens() external {
uint256 unlockedAmount = 0;
Lock[] storage userLocks = locks[msg.sender];
for (uint256 i = 0; i < userLocks.length; i++) {
if (block.timestamp >= userLocks[i].unlockTime) {
unlockedAmount += userLocks[i].amount;
delete userLocks[i]; // Remove the unlocked tokens from the lock array
}
}
require(unlockedAmount > 0, "No tokens to unlock");
klikToken.transfer(msg.sender, unlockedAmount);
}
}
Last updated