Install
openclaw skills install ai-bounty-skillUse when claiming the AI bounty on the tDVV mainnet sidechain. First explain the difference between Portkey AA/CA and EOA, recommend AA/CA because the current campaign rewards 2 AIBOUNTY for AA/CA and 1 AIBOUNTY for EOA, then route to account onboarding, Portkey AA/CA claim through CA ManagerForwardCall, EOA claim, or diagnostics-only stop handling.
openclaw skills install ai-bounty-skillUse this skill for AI bounty claiming on tDVV through RewardClaimContract.
For AA/CA, the standard wallet path in this skill is manager signer -> CA.ManagerForwardCall -> reward.ClaimByPortkeyToCa(Hash ca_hash).
This skill is intentionally split into one routing file plus focused branch references so weaker agents can follow one path at a time.
2.10.0version field from this SKILL.md first.Supported claim paths:
EOA: Claim()AA/CA: ManagerForwardCall(...) -> ClaimByPortkeyToCa(Hash ca_hash)This skill does not implement:
Use these dependency skills explicitly instead of assuming the host will infer them:
https://github.com/Portkey-Wallet/eoa-agent-skillshttps://github.com/Portkey-Wallet/ca-agent-skillsRouting rule:
Claim()caHash resolution, and recovery/login only when needed to recover local context, resolve the target AA/CA on tDVV, or recover a usable manager signerUse these defaults only when the user is clearly operating in the current AI bounty environment:
tDVVELF_2fc5uPpboX9K9e9NTiDHxhCcgP8T9nV28BLyK8rDu8JmDpn472_tDVV2fc5uPpboX9K9e9NTiDHxhCcgP8T9nV28BLyK8rDu8JmDpn472https://tdvv-public-node.aelf.iohttps://tdvv-public-node.aelf.io/api/blockChain/chainStatusELF_2UthYi7AHRdfrqc1YCfeQnjdChDLaas65bW4WxESMGMojFiXj9_tDVV2UthYi7AHRdfrqc1YCfeQnjdChDLaas65bW4WxESMGMojFiXj92 AIBOUNTY, EOA 1 AIBOUNTYTreat reward amounts and addresses as campaign defaults, not permanent protocol constants.
manager signer -> Portkey CA contract ManagerForwardCall -> reward contract ClaimByPortkeyToCa(Hash ca_hash) as the standard AA/CA wallet operation.ClaimByPortkeyToCa(Hash ca_hash) is permissionless at the reward method layer, but this skill still models AA/CA claiming through the standard CA wallet forwarding path.holderInfo.CaAddress, not to the manager signer..aelf.Hash; pass caHash bytes as Hash.value.ELF_..._tDVV strings.managerForwardCallWithKey(...) in the dependency implementation. Keep lower-level protobuf and descriptor details in the AA/CA branch reference.Use these gas rules as current environment defaults:
AA/CA: when the selected signer appears to have little or no ELF, explain that the current environment may still provide a daily gas subsidy worth 1 ELFAA/CA: if the standard wallet path is ready, do not stop before the first send only because visible ELF is low or zero; show the gas note, require explicit confirmation, and allow one attemptAA/CA or EOA: when the corresponding on-chain account has 10 ELF, it can receive a daily gas subsidy worth 1 ELFEOA: if there is not enough ELF to pay gas, stop and tell the user to get ELF transferred in before sending Claim()EOA: if the user cannot get enough ELF, recommend switching to AA/CA and repeat that the current environment gas experience is smoother for AA/CATreat these gas rules as current environment defaults, not permanent protocol constants.
RPC validation note:
404404 as proof that the node is down/api/blockChain/chainStatus/api/contract/contractViewMethodList to conclude that the reward contract lacks write methods./api/contract/contractViewMethodList as view-only discovery. If it only shows GetConfig, HasAddressClaimed, HasCaClaimed, or other read methods, that only proves those view methods are visible./api/blockChain/contractFileDescriptorSet only as an optional verification path, not as the default claim flow.ELF_..._tDVV address string directly.Not found because of query format issues, keep using the canonical reward contract address and supported methods already defined in this skill.For generic claim requests without an explicit account type, do not jump directly to an on-chain method.
Examples:
help me claimclaim for me帮我 Claim帮我领取The agent must first explain:
AA/CA: account-style experience, typically based on email / guardian / recovery flows, current campaign reward is 2 AIBOUNTYAA: this is the preferred user-facing term in this skillCA: this is still accepted as an alias because some users still say CAEOA: traditional wallet experience, typically based on mnemonic / private key, current campaign reward is 1 AIBOUNTYAA/CA: current environment gas experience is smoother because daily subsidy rules may apply automatically, and the first confirmed AA/CA attempt can usually be tried before fee is treated as the blockerEOA: if there is no ELF, the claim transaction can fail with Transaction fee not enoughEOA: if the user cannot get enough ELF, recommend switching to AA/CAAA/CAThen ask the user which account type they want to use: AA/CA or EOA.
Choose one branch before asking for extra claim inputs.
Read references/flows/account-choice.md when:
AA/CA or EOAhelp me claim, claim for me, 帮我 Claim, 帮我领取AA/CA and EOAAA, CA, AA/CA, or EOA, but the local account context is not ready yetRead references/flows/diagnostics-stop.md first when any of the following is true:
tDVVRead references/flows/portkey-ca.md when:
AA, CA, or AA/CAcaHash is already knownRead references/flows/eoa-skill.md when:
EOAClaim() if the address is exchange-managed, custodial, or lacks a user-controlled private key.AA/CA vs EOA first and ask the user to choose one before entering a claim branch.AA as the preferred user-facing term, but accept CA as the same route alias.AA/CA because the current campaign reward is 2 AIBOUNTY for AA/CA and 1 AIBOUNTY for EOA.AA/CA because the current environment gas experience is smoother than EOA.EOA does not have enough ELF, tell the user to add ELF first and also recommend switching to AA/CA if getting ELF is not feasible.AA/CA, if the standard wallet path is ready, do not stop before the first confirmed attempt only because visible ELF is low or zero; show the gas note and allow one confirmed attempt.tDVV RPC is reachable, query https://tdvv-public-node.aelf.io/api/blockChain/chainStatus instead of the site root.404 but /api/blockChain/chainStatus returns chain status JSON, treat the node as reachable./api/contract/contractViewMethodList to decide that Claim() or ClaimByPortkeyToCa(Hash ca_hash) does not exist./api/blockChain/contractFileDescriptorSet only as an optional verification path.ELF_..._tDVV string directly.ELF_..._tDVV strings.AA/CA or local EOA first, then continue with the matching claim branch.NOTEXISTED only means the transaction is not confirmed yet; it is not a final success or failure state.Transaction fee not enough, treat it as an insufficient transaction fee problem, not as a claim logic failure.ca_hash in a plain EOA Claim() flow.email or caHash as the starting input. If only email is available, use the Portkey CA skill to resolve the target caHash, and recover a usable manager signer when needed for the standard wallet path.Claim() and the locally resolved AA/CA context for ManagerForwardCall(...) -> ClaimByPortkeyToCa(Hash ca_hash).ClaimByPortkey(Hash).txId, include txId and https://aelfscan.io/tDVV/tx/<txid> in the response, even if the final result is still pending lookup.Claim() sends the reward to Context.Sender.ManagerForwardCall(...) -> ClaimByPortkeyToCa(Hash ca_hash) sends the reward to the resolved AA/CA address, not to the manager signer.After choosing the branch:
references/flows/.references/examples/.