name: ai-bounty-claim version: 3.0.0 description: Use when claiming the AI bounty on the tDVV mainnet sidechain. This public claim skill now supports Portkey AA/CA only, requires CA sync and holder preflight before any write, and routes to AA/CA onboarding, AA/CA claim, or diagnostics-only stop handling.
AI Bounty Claim
Use 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.
Skill Version
- Current skill version:
3.0.0 - If behavior seems inconsistent or an external AI reports unexpected output, ask them to report the
versionfield from thisSKILL.mdfirst.
Compatibility
- AA/CA dependency:
@portkey/ca-agent-skills >= 2.3.0 - AA/CA required dependency interfaces:
- CLI:
manager-sync-status - MCP:
portkey_manager_sync_status
- CLI:
Scope
Supported claim path:
AA/CA:ManagerForwardCall(...) -> ClaimByPortkeyToCa(Hash ca_hash)
This skill does not implement:
- wallet custody or wallet creation on behalf of the user
- private key generation, storage, or import on behalf of the user
- Portkey recovery flows on behalf of the user
- blind retry loops after claim failures
- legacy public EOA claim routing
Required Dependency Skills
Use these dependency skills explicitly instead of assuming the host will infer them:
- Portkey CA skill:
https://github.com/Portkey-Wallet/ca-agent-skills(minimum required version2.3.0for the AA/CA route)
Routing rule:
- use the Portkey CA skill for local AA/CA account setup,
caHashresolution,manager-sync-status, holder lookup ontDVV, and recovery/login only when needed to recover local context, resolve the target AA/CA ontDVV, or recover a usable manager signer
Current Environment Defaults
Use these defaults only when the user is clearly operating in the current AI bounty environment:
- Chain:
tDVV - Environment meaning: current AI bounty mainnet sidechain environment
- Reward contract:
ELF_2fc5uPpboX9K9e9NTiDHxhCcgP8T9nV28BLyK8rDu8JmDpn472_tDVV - Reward contract raw address:
2fc5uPpboX9K9e9NTiDHxhCcgP8T9nV28BLyK8rDu8JmDpn472 - Public RPC:
https://tdvv-public-node.aelf.io - RPC validation endpoint:
https://tdvv-public-node.aelf.io/api/blockChain/chainStatus - Portkey CA contract:
ELF_2UthYi7AHRdfrqc1YCfeQnjdChDLaas65bW4WxESMGMojFiXj9_tDVV - Portkey CA contract raw address:
2UthYi7AHRdfrqc1YCfeQnjdChDLaas65bW4WxESMGMojFiXj9 - Current campaign default reward: Portkey AA/CA
2 AIBOUNTY
Treat reward amounts and addresses as campaign defaults, not permanent protocol constants.
Canonical AA/CA Claim Path
- Always use
manager signer -> Portkey CA contract ManagerForwardCall -> reward contract ClaimByPortkeyToCa(Hash ca_hash)as the standard AA/CA wallet operation. - Always apply this fixed read-only gate before any AA/CA write, and do not skip or reorder it:
- resolve the local AA/CA context and
caHash - call
manager-sync-statusorportkey_manager_sync_status - call
GetHolderInfo(caHash)ontDVV - only continue when
isManagerSynced=trueand the holder can be resolved ontDVV
- resolve the local AA/CA context and
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.- The forwarded reward still goes to the resolved
holderInfo.CaAddress, not to the manager signer. - The forwarded reward method input is
.aelf.Hash; passcaHashbytes asHash.value. - For SDK or helper calls, use raw CA and reward addresses rather than the wrapped
ELF_..._tDVVstrings. - Prefer the high-level helper
managerForwardCallWithKey(...)in the dependency implementation. Keep lower-level protobuf and descriptor details in the AA/CA branch reference. - If the selected CA dependency does not expose
manager-sync-statusorportkey_manager_sync_status, stop and tell the user to upgrade to@portkey/ca-agent-skills >= 2.3.0before attempting AA/CA claim.
Gas Rules
Use these gas rules as current environment defaults:
AA/CA: when the selected signer appears to have little or noELF, explain that the current environment may still provide a daily gas subsidy worth1 ELFAA/CA: if the standard wallet path is ready after the fixed read-only gate passes, do not stop before the first send only because visibleELFis low or zero; show the gas note, require explicit confirmation, and allow one attemptAA/CA: never infer a fee problem fromHolder is not found,CA holder not found, or any failed holder lookup; only the final chain errorTransaction fee not enoughmay trigger fee guidance
Treat these gas rules as current environment defaults, not permanent protocol constants.
RPC validation note:
- the RPC root URL may return
404 - do not treat root-path
404as proof that the node is down - validate node availability through
/api/blockChain/chainStatus
Contract Introspection Guardrail
- Do not use
/api/contract/contractViewMethodListto conclude that the reward contract lacks write methods. - Treat
/api/contract/contractViewMethodListas view-only discovery. If it only showsGetConfig,HasAddressClaimed,HasCaClaimed, or other read methods, that only proves those view methods are visible. - If full method verification is needed, use
/api/blockChain/contractFileDescriptorSetonly as an optional verification path, not as the default claim flow. - When using node introspection APIs, normalize the reward contract address into the format accepted by the endpoint. Do not send the wrapped
ELF_..._tDVVaddress string directly. - If introspection is ambiguous, incomplete, or returns
Not foundbecause of query format issues, keep using the canonical reward contract address and the supported public AA/CA method already defined in this skill.
Required First Step
For generic claim requests, 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 is2 AIBOUNTYAA: this is the preferred user-facing term in this skillCA: this is still accepted as an alias because some users still sayCAAA/CA: this route requires@portkey/ca-agent-skills >= 2.3.0because claim preflight depends onmanager-sync-statusand holder lookup ontDVVAA/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 blockerAA/CA: before any claim write, we must first confirm manager sync and holder readiness ontDVVEOA: this public bounty skill no longer exposes the legacy EOA route, even if older contract source snapshots still show legacy methods
Then ask the user whether the local Portkey AA/CA context is already ready, or whether they want to recover/login first with email.
Routing Rules
Choose one branch before asking for extra claim inputs.
Branch 1: Account Choice And Onboarding
Read references/flows/account-choice.md when:
- the user makes a generic claim request
- examples:
help me claim,claim for me,帮我 Claim,帮我领取 - the local AA/CA account context is not ready yet
- the user only has an
emailand needs onboarding, recovery, or login first
Branch 2: Diagnostics And Stop
Read references/flows/diagnostics-stop.md first when any of the following is true:
- the user tries to fill an exchange address, custodial address, or any address without a user-controlled private key
- the user wants the agent to create or hold a wallet for them
- the user says Portkey AA/CA already exists on mainnet but cannot be resolved on
tDVV - the selected Portkey CA dependency is below
2.3.0or does not exposemanager-sync-status/portkey_manager_sync_status manager-sync-statusreturnsisManagerSynced=falseGetHolderInfo(caHash)cannot resolve the holder ontDVV- the user says the guardian already exists and recovery is required
- the user insists on using an EOA-only route
- a prior contract call failed and the prerequisite is still unresolved
Branch 3: Portkey AA/CA Claim
Read references/flows/portkey-ca.md when:
- the user explicitly chose
AA,CA, orAA/CA - a local Portkey AA/CA account is already available, or the target
caHashis already known - use the Portkey CA skill dependency at version
>= 2.3.0for AA/CA handling
AA/CA Error Mapping Rules
Holder is not foundorCA holder not foundmeans the holder,caHash, or target-chain context ontDVVis not ready yet. Tell the user to wait for sync or re-checkcaHashand chain. Do not suggest addingELF.Sender is not a manager of the CA holder.means the manager context ontDVVis not ready yet, or the current local manager is not a valid manager for the target holder. Tell the user to recover, re-login, or wait for sync.Transaction fee not enough.is a send-stage fee problem only. Explain that it is a transaction fee issue, not a holder lookup issue.NOTEXISTEDmeans pending transaction lookup only. Keep polling and do not treat it as success, failure, or a fee blocker.
Fixed User Messaging
- For a newly registered
tDVVAA/CA account, emphasize that the on-chain context is still syncing and the user should retry later. - For an older account whose origin is
AELFwhile the claim write target istDVV, emphasize that cross-chain sync to the sidechain can be slower and the user should wait for manager and holder sync to complete first. - For
Transaction fee not enough, emphasize that the problem happened at transaction send time and is not a holder lookup problem.
Global Hard Rules
- Always tell the user not to fill exchange or custodial addresses.
- Never offer to create, custody, or store a wallet for the user.
- Do not ask the user to paste an address when a local AA/CA context should be used.
- For generic claim requests, explain that the current public bounty path is AA/CA only, then enter onboarding or claim branching.
- Treat
AAas the preferred user-facing term, but acceptCAas the same route alias. - Treat the current public bounty flow as AA/CA only, even if older contract source snapshots still contain legacy EOA entries.
- For
AA/CA, do not attempt any write until the fixed read-only gate has passed: resolve local context andcaHash, confirmmanager-sync-statusorportkey_manager_sync_statusreturnsisManagerSynced=true, and confirmGetHolderInfo(caHash)resolves ontDVV. - For
AA/CA, if the standard wallet path is ready after that gate passes, do not stop before the first confirmed attempt only because visibleELFis low or zero; show the gas note and allow one confirmed attempt. - For AA/CA, require
@portkey/ca-agent-skills >= 2.3.0because the claim flow depends onmanager-sync-statusandportkey_manager_sync_status. - When checking whether the
tDVVRPC is reachable, queryhttps://tdvv-public-node.aelf.io/api/blockChain/chainStatusinstead of the site root. - If the RPC root URL returns
404but/api/blockChain/chainStatusreturns chain status JSON, treat the node as reachable. - Never use
/api/contract/contractViewMethodListto decide thatClaimByPortkeyToCa(Hash ca_hash)does not exist. - If full method verification is needed, use
/api/blockChain/contractFileDescriptorSetonly as an optional verification path. - When using node introspection APIs, normalize the contract address first instead of querying with the wrapped
ELF_..._tDVVstring directly. - If introspection remains ambiguous, keep the reward contract address and supported write methods defined in this skill as canonical defaults.
- For AA/CA SDK or helper calls that require raw addresses, use raw CA and reward addresses rather than the wrapped
ELF_..._tDVVstrings. - If the local AA/CA context is not ready, guide the user to create, recover, or log in to a local
AA/CAfirst, then continue with the matching claim branch. Holder is not foundandCA holder not foundmean holder or chain context is not ready; do not reinterpret them as a fee problem and do not suggest addingELF.Sender is not a manager of the CA holder.means manager context is not ready or the resolved manager is not valid for the holder ontDVV; prefer recovery, re-login, or waiting for sync.NOTEXISTEDonly means the transaction is not confirmed yet; it is not a final success or failure state.- If the final chain error is
Transaction fee not enough, treat it as an insufficient transaction fee problem from the send stage, not as a claim logic failure and not as a holder lookup problem. - For AA/CA, accept either
emailorcaHashas the starting input. If onlyemailis available, use the Portkey CA skill to resolve the targetcaHash, and recover a usable manager signer when needed for the standard wallet path. - Prefer the locally resolved AA/CA context for
ManagerForwardCall(...) -> ClaimByPortkeyToCa(Hash ca_hash). - Do not route the recommended AA/CA claim through deprecated
ClaimByPortkey(Hash). - Before any AA/CA write, show the resolved manager signer,
manager-sync-statusresult, holder lookup result, CA contract, forwarded reward contract, method chain, key inputs, expected receiver semantics, and current campaign reward amount, then require explicit user confirmation. - If explicit confirmation is missing, stop before sending.
- If any prerequisite is unresolved, stop and explain the blocker instead of guessing.
- If a submitted transaction returns
txId, includetxIdandhttps://aelfscan.io/tDVV/tx/<txid>in the response, even if the final result is still pending lookup. - If a transaction fails, return the exact chain error and stop. Do not invent recovery success.
Receiver Semantics
ManagerForwardCall(...) -> ClaimByPortkeyToCa(Hash ca_hash)sends the reward to the resolved AA/CA address, not to the manager signer.
Required Reading Pattern
After choosing the branch:
- Read the matching flow document under
references/flows/. - Read the matching example document under
references/examples/. - Follow that branch only.
- Do not mix onboarding, diagnostics, and claim instructions in one answer when only one branch is needed.
Branch Map
- Account choice and onboarding: references/flows/account-choice.md Example: references/examples/account-choice.md
- Portkey AA/CA: references/flows/portkey-ca.md Example: references/examples/portkey-ca.md
- Diagnostics and stop: references/flows/diagnostics-stop.md Example: references/examples/diagnostics-stop.md