It seems like the operations with attribute p0 are not congruent/correct.
From the first short review: sometimes to calculate the unlocked tokens the contract multiplies with p0 and sometimes divides.
Example:
fundsAllocated() {
unlockedInternal += _externalAllocated / p0;
claimTokens() {
uint256 previouslyUnlockedInternal = (paidExternal / p0)
hatchContribute() {
initialContributions[msg.sender].lockedInternal += contributed * p0;
I think it works only by accident given the p0 is 1 by default. Would be great to review the math here.
It seems like the operations with attribute
p0are not congruent/correct.From the first short review: sometimes to calculate the unlocked tokens the contract multiplies with p0 and sometimes divides.
Example:
I think it works only by accident given the p0 is 1 by default. Would be great to review the math here.