We want to create an ICO where investors can purchase ERC20 tokens anytime but have to wait for atleast 3 months from the date of purchase in order to redeem/encash them on our platform.

But we do not intend to restrict the investors from trading /transferring/exchanging tokens among each other outside our platform.

Example 1) A buys 400 ERC20 tokens on 14th January. He sells 200 tokens to B (outside our platform) on 15th March. C buys 200 tokens on 15th March from the platform.

Now, A, B and C comes to redeem / encash the tokens for FIAT on our platform on 15th April (after 3 months from initial purchase of tokens)

Now, both A and B should be able to encash / redeem the tokens as both came to redeem after 3 months of original purchase of those tokens. But C cannot redeem it as 3 months are not over from the date of purchase.

How can we achieve this? Can we bind timestamp or any parameter with tokens or something? What is the best possible solution?

2 Answers 2


ERC20 are fungible tokens.

From the user perspective there's no difference between tokens, you cannot attach an extra condition to the tokens themselves. All 200 tokens are the same it doesn't matter if they were from A, B or C.

Since you cannot attach more conditions to the tokens, a common approach is to attach conditions to the owners. For example owner A can redeem 100 tokens after one month. If A transfer tokens to B this property can be copied to B. You will have to determine the case when A have 100 tokens that redeems on May 1st and another 100 that redeem on May 15th.


I guess this requirement is more of your platform than general. So you can think of handling it off chain. So smart contract does not have any restrictions on it.

So in your Database,

  • A can redeem 400 tokens any time after 14th April
  • C can redeem 200 tokens any time after 15th April

Since B did not directly purchased tokens from your platform. You won't have any entry to it. If you want restrictions to B as per Date when he recieved coins. You can watch blockchain events to feed your DB that A transferred 200 coins to B and then update DB entries to be like:

  • A can redeem 200 tokens any time after 14th April
  • C can redeem 200 tokens any time after 15th April
  • B can redeem 200 tokens any time after 15th April

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.