When doing tasks there are 3 types of fees that the caller should pay.
Platform Fees
Generator Fees
Validator Fees
llm/LLMOracleManager.sol#L110-L120
When taking platform Fees we are taking all money in the contract.
llm/LLMOracleCoordinator.sol#L375-L377
When Completing The Task using finalizeValidation()
, or when completing tasks that require no validation. We are not sending Fees directly to the Oraacle Registry, we are increasing there allowance so that they can transfer their tokens themselves.
llm/LLMOracleCoordinator.sol#L348 | llm/LLMOracleCoordinator.sol#L369
finalizeValidation()
will only get fired when completeing the task. But for the caller pays the fees when calling Coordinator::request()
, so the fees paid for tasks that didn't yet completed, will also get transfered to the Owner as PlatformFees.
So in brief.
When withdrawing Platform Fees All money in the contract will get transferred to the owner.
Validators/Generators that didn't withdraw there money (have allowance), will lose their money
fees paid for tasks that didn't complete yet but are either in PendingGeneration
or PendingValidation
, will also get transferred to the owners.
This is incorrect Fees accumulating logic, which will result in an unfair process for validators and Generators when distributing Fees.
Another thing is that there is no way to know exactly what our Validadators or Generators need. Admins will have to query over all there Registered addresses, which is open to anyone. And there are no Events, nor an array that groups them. making the process literally impossible for them to pay the money they own to Validators and Generators.
Accumulate PlatformFees on a global variable, in addition to Fees for outliers, and when withdrawing take this value only, instead of Taking all contract balance.
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.