Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(supplementary-contracts): add TokenUnlocking #16830

Merged
merged 8 commits into from
Apr 27, 2024
Merged

Conversation

adaki2004
Copy link
Contributor

Added the first version of TokenUnlocking contract.

Pretty simple, but there are some todo, please search for that text.

So my question (i also asked in discord DM):

Base situation, per those quarterly/half-yearly unvesting and it’s excersise :

  1. Bob gets purchase notice from company (for the actual amount)
  2. Bob decides to buy
  3. If buy happened that amount of TKO token is deposited into the contract.

But the question here is: Is Bob really paying OR he acknowledges that he wants to get those tokens and he will pay once he will withdraw ?

  1. Bob is paying for his tokens 'upfront', right. In case int the smart contract there is no need to maintain a costToWithdraw and costToken variables, because the purchase notice has to be paid before the vested amount is deposited into the contract. (If so, i have to remove them and contract gets simpler).
    OR
  2. payment still remains the same ? During withdrawal, Bob pays for it.

And in the situation above steps nr. 1 & 2 is just a "YES-I-ACKNOWEDGE-I-WANT-MY-TOKENS", but Bob does not have to pay immediately (just at withdrawal).

Somewhat i'm kind of in favor of the second version, because of the following reason:

  • Bob knows TKO price NOW, but since those vested tokens not immediately unlocked, he does not know the price at time of unlock. So would be uncertain, if it worth to get those tokens or not.
  • In case of grant nr. 1, it is OK since price is max 0.01 usd per token, but in case of grant nr. 2, we wont know what will be the price at unlocking...

Copy link

openzeppelin-code bot commented Apr 24, 2024

feat(supplementary-contracts): add TokenUnlocking

Generated at commit: 9c49a068c169682b46f179195c57641e548122f1

🚨 Report Summary

Severity Level Results
Contracts Critical
High
Medium
Low
Note
Total
2
2
0
6
39
49
Dependencies Critical
High
Medium
Low
Note
Total
0
0
0
0
0
0

For more details view the full report in OpenZeppelin Code Inspector

@Brechtpd
Copy link
Contributor

I would also say generally option 2 makes the most sense, because if people have to pay upfront it's not really usable as an alternative way for income:

  • People first have to be able to pay for those tokens, which would mean they have a significant amount of disposable money already (unless the amount of tokens here would be small in the future compared to fiat wages, but that is currently not the case so seems problematic for the current employees in any case). I would assume this is not the typical employee.
  • People would be able to lose money on this because of the long time delays, which makes it risky and feels strange

I think option 1 is interesting for higher risk/higher reward, but doesn't seem like a great fit for normal employees unless the price/amount of the tokens is low enough.

@dantaik
Copy link
Contributor

dantaik commented Apr 25, 2024

The token grant agreement mandates option 1 (upfront payment). The token purchase action must be completed with full payment before tokens will be deposited to the smart contracts. From a legal perspective, if labs deposits token without receiving a payment, who legally owns those token then?

To ensure people are not losing money, we should only charge grantees the cost after they have sold the token...
We simply cannot remove all risks here.

@dantaik dantaik self-requested a review April 25, 2024 14:53
@dantaik dantaik enabled auto-merge April 27, 2024 12:23
@dantaik dantaik added this pull request to the merge queue Apr 27, 2024
Merged via the queue into main with commit 5fff5a7 Apr 27, 2024
5 checks passed
@dantaik dantaik deleted the token_unlocking branch April 27, 2024 12:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants