The emergencyRevoke function has two key issues:
Tokens are transferred to the contract (address(this)) instead of a designated treasury wallet (TREASURY_WALLET). This could lead to inefficient fund management.
The function does not include a reason parameter, making it harder to track why an emergency revocation was triggered.
The function currently transfers unreleased vested tokens to address(this).
If the contract is compromised because some issues, these tokens may become inaccessible.
Instead, the funds should be transferred to a designated treasury wallet (TREASURY_WALLET)
Emergency revocations often happen due to fraud, compliance issues, or admin decisions.
Without a reason parameter, there is no way to track why a revocation occurred, leading to poor transparency and accountability.
Adding a reason (string) to the function and event ensures better documentation and future audits.
Locked or Mismanaged Funds: If tokens are sent to address(this), they may be permanently locked unless another function allows retrieval.
Transparency & Accountability Issues: Without a reason for revocation, it is difficult to justify emergency actions to stakeholders, auditors, or governance bodies.
Manual Review
Transfer Unreleased Tokens to Treasury (TREASURY_WALLET)
Modify the function signature to include a string memory reason:
Modify the event to contain "reason".
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.