Automatic verification
In a quest with Verify automatically, every step names one on-chain transaction the worker must send. The work2own operator checks each submission against those rules and then completes or rejects it on-chain. The same checks run as advice in manual quests that have on-chain steps.
The rule for a step
The employer sets, per step:
| Field | Meaning |
|---|---|
| Network | Robinhood Chain mainnet (4663) or Robinhood Chain testnet (46630) |
| Contract | The address the transaction must be sent to |
| Function | Optional. The 4-byte function selector the transaction must start with. A signature like swap(uint256,address) is converted to its selector when the quest is created |
| Minimum value | The minimum ETH (in wei) the transaction must send. 0 means no minimum |
What the operator checks
For each on-chain step, using the transaction hash the worker gave:
- The transaction exists on the step's network. If it cannot be found yet, the operator keeps waiting. If it is still not found 30 minutes after the submission, the step fails.
- It succeeded: a reverted transaction fails.
- It was sent by the worker's own wallet (the transaction's
from). - It was sent to the contract in the rule (the transaction's
to). - It calls the function in the rule, if one is set: the first 4 bytes of the transaction input must equal the selector.
- It sent at least the minimum ETH value.
- It happened after the quest was created and before the worker submitted. For testnet steps, up to 120 seconds of clock difference are allowed on the submission side.
- It is not reused:
- the same transaction cannot answer two steps of one proof;
- a worker cannot reuse a transaction that is already part of one of their completed quests, or that already passed a step of another quest they submitted.
Also checked for the whole submission:
- The proof must be uploaded to work2own for the fingerprint on-chain. If it is missing 1 hour after the submission, the submission is rejected.
- The proof must be made for this quest and this worker, and answer every step.
- If the employer never published the steps, submissions are rejected 24 hours after they are made, so the quest can still be closed and refunded.
Outcomes
| Outcome | What happens |
|---|---|
| Every step passes | The operator calls verifyQuest. The quest is completed and the payout is created |
| Any step fails | The operator calls rejectQuest. The slot is freed; the worker cannot join this quest again |
| A step is waiting | The operator checks again after about a minute |
The worker sees each step as verified, failed or checking, and the overall line "Verification: pass | fail | wait" with the reason, for example "step 2: the transaction calls another contract".
Failure reasons you may see:
- no transaction was given
- transaction not found on Robinhood Chain (or Robinhood Chain testnet)
- the transaction reverted
- the transaction was sent by another wallet
- the transaction calls another contract
- the transaction calls another function
- the transaction value is below the minimum
- the transaction happened before the campaign started
- the transaction happened after the submission
- one transaction was given for two steps
- this transaction was already used for another quest
- the proof does not answer every step
- the proof was made for other work
- no proof content was uploaded for the submitted hash
- the employer has not published the verification rule
What is not checked
The operator reads the transaction itself and its receipt status. It does not:
- look inside the transaction: calls made through another contract (a router, an aggregator, a multicall, a smart-contract or account-abstraction wallet) do not match, because the transaction's
toorfromis then a different address; - check amounts other than the ETH value: a swap of any size passes, since token amounts, events and logs are not read;
- check balances or holdings, such as holding an NFT or a minimum token balance;
- check anything off-chain, such as social media actions. Those belong in a manually reviewed quest.
Employers should write rules that match exactly the transaction a user's wallet sends, and use manual review when a transaction alone does not prove the task.
Timing
The operator runs every 15 seconds and sends at most 20 transactions per round. A new submission is usually checked within a minute. If the operator is short of gas, it pauses its work until it is topped up; see Security and roles.
Manual quests with on-chain steps
In a manually reviewed quest, the operator runs the same step checks but sends no transaction. The results appear next to the submission for the employer ("verified on-chain", "check failed", "checking") and in the worker's step list. Checks repeat every minute while waiting and every 6 hours after a result. The employer still decides.