How manage multiple receiver address and multiple unlock (TokenTimelock)


I start this topic to check out if I’m doing it properly and also I miss the last part of the process.

Let’s say I’m running a presale on the token I’ve created to fund my project.
I will have multiple investors, each having it’s own wallet address they provide to me.

I plan to release 10% on first release,
then 10% on the first day of each next month (9 month total + initial)

How do I manage all that ?

Do I need to rename and build a TokenTimelock.sol for each unlock and each address ?
Then deploy them all.

X investors * Y unlock timestamp = XY contracts deploy

Then I must transfer token to each of these contracts

I manage to do the full process for one time / one receiver unlock release
I tested before timestamp => release rejected
I tested after timestamp => release worked

So how am I supposed to manage this process for multiple address and multiple unlock ?

Edit : I’m on 4.x version of OpenZeppelin and using wizard to create fixedsupply token
Solidity 8.0

Thank you a lot for your help in advance :slight_smile:

1 Like

Ok I understand that I don’t have to rename contracts tokentimelock but I must use a different receiver address for each single unlock.

So I will have to ask from investors that they provide 12 wallet address if I plan to unlock every month over a year period.

Right ?

And I will have to manualy request “release” for everycontract unlock

1 Like

Well seems like I figured it out ^^

Deploy TokenTimelock.sol for everysingle unlock.
One deploy for one wallet address.

Can use multisend to fund all the TokenTimelock temporary vault wallet and wait for timestamp to hit to release token from each vault.

Thank again for all the presets on github, what you designed are real gems ^^

Big up the OpenZeppelin community.


Hi @cryptoselecto,

As you are doing token vesting rather than a single lockup you may want to look at the discussion on:

Depending on the number of investors, you may want to look at using Clones:

Alternatively you could look at post delivery crowdsale concept as a potential way of implementing: