Communitygithub.com

awp-core/awp-skill

AWP (Agent Work Protocol) — o kit completo para mineração de agentes na Base, Ethereum, Arbitrum e BSC. Use esta skill quando o usuário mencionar explicitamente AWP, worknets, veAWP, awp-wallet ou operações específicas do AWP.

O que é awp-skill?

Esta skill implementa o AWP (Agent Work Protocol), um protocolo descentralizado que permite que agentes de IA (worknets) executem tarefas e ganhem recompensas em várias blockchains (Base, Ethereum, Arbitrum e BSC). Ela fornece um conjunto completo de ferramentas para onboarding (criação de carteira, registro, entrada em worknets), staking (depósito, retirada com suporte a gasless via ERC-2612), alocação (alocar/desalocar stake para agentes em worknets), gerenciamento de worknets (registrar, pausar, retomar, cancelar), vinculação de agentes (ligar carteira do agente ao proprietário), governança (propostas, votação) e consulta (saldos, posições, emissões, épocas, anúncios). É especialmente útil para desenvolvedores que desejam integrar seus agentes ao ecossistema AWP ou para usuários que desejam começar a ganhar recompensas sem custo inicial de tokens. A skill usa uma API JSON-RPC 2.0 para todas as interações on-chain, com suporte a WebSocket para eventos em tempo real. O registro é gratuito e a maioria das worknets não exige stake mínimo, permitindo que qualquer um comece a ganhar imediatamente.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add awp-core/awp-skill

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Registro AWP

Versão da skill: 1.9.1

Requisitos e Segurança

  • Runtime: python3, node (para a ponte wallet-raw-call.mjs)
  • Carteira: CLI awp-wallet — instale em https://github.com/awp-core/awp-wallet
  • Credencial: Token de sessão awp-wallet (enviado como --token; gerado por awp-wallet unlock; nenhuma senha fornecida pelo usuário). Novas versões da carteira não exigem mais desbloqueio — --token é opcional para compatibilidade reversa com carteiras antigas.
  • Rede: Variável de ambiente EVM_CHAIN (opcional, padrão: base). Aceita nome ou ID numérico.
  • Endpoints de rede (codificados, não substituíveis — segurança por design para evitar sequestro de variáveis de ambiente):
    • https://api.awp.sh/v2 — API JSON-RPC AWP
    • https://mainnet.base.org — EVM RPC da Base
    • wss://api.awp.sh/ws/live — WebSocket para eventos em tempo real (opcional)
  • Arquivos escritos (todos opt-in, o daemon exige consentimento explícito do usuário):
    • ~/.awp/daemon.pid, ~/.awp/daemon.log — monitor de fundo
    • ~/.awp/notifications.json, ~/.awp/status.json — cache de status do protocolo
    • ~/.awp/openclaw.json — configuração de push OpenClaw (criado apenas pelo usuário, a skill nunca cria automaticamente)

API — JSON-RPC 2.0

Todas as chamadas de API nesta skill usam JSON-RPC 2.0 via POST:

POST https://api.awp.sh/v2
Content-Type: application/json

Requisição: {"jsonrpc":"2.0","method":"namespace.method","params":{...},"id":1}

Descoberta: GET https://api.awp.sh/v2 | WebSocket: wss://api.awp.sh/ws/live | Lote: até 20 por requisição.

Explorers: Base → basescan.org | Ethereum → etherscan.io | Arbitrum → arbiscan.io | BSC → bscscan.com

Ao longo deste documento, todos os comandos curl usam JSON-RPC POST para https://api.awp.sh/v2. Não use caminhos GET estilo REST.

Referência de Métodos da API

Sistema

MétodoParâmetrosDescrição
stats.globalnenhumEstatísticas globais do protocolo: total de usuários, worknets, AWP em stake, AWP emitido, cadeias ativas
registry.getchainId?Todos os endereços de contratos + informações de domínio EIP-712. Omita chainId para um array de todas as 4 cadeias.
health.checknenhumRetorna {"status": "ok"} se a API estiver funcionando
health.detailednenhumSaúde por cadeia: bloco de sincronização do indexador, status do keeper, latência RPC
chains.listnenhumArray de {chainId, name, status, explorer} para todas as cadeias suportadas

Usuários

MétodoParâmetrosDescrição
users.listchainId?, page?, limit?Lista paginada de usuários para uma cadeia
users.listGlobalpage?, limit?Lista de usuários sem duplicatas entre cadeias
users.countchainId?Total de usuários registrados
users.getaddress (obrigatório), chainId?Detalhes do usuário: saldo, agentes vinculados, recipiente, status de registro
users.getPortfolioaddress (obrigatório), chainId?Portfólio completo: identidade + staking + posições NFT + alocações + delegados
users.getDelegatesaddress (obrigatório), chainId?Lista de endereços que este usuário autorizou como delegados

Endereço e Nonce

MétodoParâmetrosDescrição
address.checkaddress (obrigatório), chainId?Verifica status de registro, vinculação, recipiente. Veja formato da resposta abaixo.
address.resolveRecipientaddress (obrigatório), chainId?Percorre a cadeia de vinculação até a raiz, retorna o recipiente efetivo de recompensas
address.batchResolveRecipientsaddresses[] (obrigatório, máximo 500), chainId?Resolve em lote os recipientes efetivos (chamada on-chain)
nonce.getaddress (obrigatório), chainId?Nonce EIP-712 do AWPRegistry (para bind/unbind/setRecipient/registerWorknet/grantDelegate/revokeDelegate). Nota: pode estar atrasado em relação ao estado on-chain; prefira ler AWPRegistry.nonces(user) on-chain para assinatura.
nonce.getStakingaddress (obrigatório), chainId?Nonce EIP-712 do AWPAllocator (para allocate/deallocate). Nota: pode estar atrasado em relação ao estado on-chain; prefira ler AWPAllocator.nonces(user) on-chain para assinatura.

Agentes

MétodoParâmetrosDescrição
agents.getByOwnerowner (obrigatório), chainId?Todos os agentes (endereços) que se vincularam a este proprietário
agents.getDetailagent (obrigatório), chainId?Detalhes do agente: proprietário, cadeia de vinculação, status de delegação
agents.lookupagent (obrigatório), chainId?Consulta rápida: retorna {"ownerAddress": "0x..."}
agents.batchInfoagents[] (obrigatório, máximo 100), worknetId (obrigatório), chainId?Consulta em lote: informações do agente + seu stake na worknet especificada

Staking

MétodoParâmetrosDescrição
staking.getBalanceaddress (obrigatório), chainId?Retorna {totalStaked, totalAllocated, unallocated} em strings wei
staking.getUserBalanceGlobaladdress (obrigatório)Mesmo que acima, mas agregado em TODAS as cadeias
staking.getPositionsaddress (obrigatório), chainId?Array de posições veAWP: {tokenId, amount, lockEndTime, createdAt}
staking.getPositionsGlobaladdress (obrigatório)Posições em todas as cadeias (inclui chainId por posição)
staking.getAllocationsaddress (obrigatório), chainId?, page?, limit?Registros paginados de alocações: {agent, worknetId, amount}
staking.getFrozenaddress (obrigatório), chainId?Alocações congeladas (de worknets banidas)
staking.getPendingaddress (obrigatório), chainId?Alocações pendentes aguardando confirmação
staking.getAgentWorknetStakeagent (obrigatório), worknetId (obrigatório)Total de stake alocado do agente em uma worknet específica (entre cadeias)
staking.getAgentWorknetsagent (obrigatório)Todos os IDs de worknet onde este agente tem alocações não nulas
staking.getWorknetTotalStakeworknetId (obrigatório)Total de AWP em stake de todos os agentes em uma worknet

Worknets

MétodoParâmetrosDescrição
worknets.liststatus?, chainId?, page?, limit?Lista worknets. Filtra por status: Pending, Active, Paused, Banned
worknets.listRankedchainId?, page?, limit?Worknets classificadas por stake total (maior primeiro)
worknets.searchquery (obrigatório, 1-100 caracteres), chainId?, page?, limit?Pesquisa por nome ou símbolo (sem distinção de maiúsculas/minúsculas)
worknets.getByOwnerowner (obrigatório), chainId?, page?, limit?Worknets pertencentes ao endereço
worknets.getworknetId (obrigatório)Detalhes completos da worknet: nome, símbolo, status, alphaToken, pool LP, proprietário, stakes
worknets.getSkillsworknetId (obrigatório)URI de habilidades (metadados off-chain que descrevem as capacidades da worknet)
worknets.getEarningsworknetId (obrigatório), page?, limit?Histórico paginado de ganhos AWP por época
worknets.getAgentInfoworknetId (obrigatório), agent (obrigatório)Informações do agente dentro de uma worknet específica: stake, validade, recipiente de recompensas
worknets.listAgentsworknetId (obrigatório), chainId?, page?, limit?Agentes na worknet classificados por stake

Emissão

MétodoParâmetrosDescrição
emission.getCurrentchainId?Número da época atual, quantidade de emissão diária, peso total, época liquidada
emission.getSchedulechainId?Projeções de emissão: acumulado em 30 dias, 90 dias, 365 dias com decaimento aplicado
emission.getGlobalSchedulenenhumMesmas projeções, mas agregadas em todas as 4 cadeias
emission.listEpochschainId?, page?, limit?Lista paginada de épocas liquidadas com totais de emissão
emission.getEpochDetailepochId (obrigatório), chainId?Detalhamento: distribuições de AWP por recipiente para uma época específica

Tokens

MétodoParâmetrosDescrição
tokens.getAWPchainId?Informações do token AWP: totalSupply, maxSupply, circulatingSupply (por cadeia)
tokens.getAWPGlobalnenhumInformações do AWP agregadas em todas as cadeias
tokens.getWorknetTokenInfoworknetId (obrigatório)Informações do token Alpha: endereço, nome, símbolo, totalSupply, cunhador
tokens.getWorknetTokenPriceworknetId (obrigatório)Preço Alpha/AWP da pool LP (cache de 10min). Retorna sqrtPriceX96 e preço legível.

Governança

MétodoParâmetrosDescrição
governance.listProposalsstatus?, chainId?, page?, limit?Lista propostas. Status: Active/Pending/Canceled/Defeated/Succeeded/Queued/Expired/Executed
governance.listAllProposalsstatus?, page?, limit?Lista de propostas entre cadeias
governance.listGroupedpage?, limit?Visão mesclada entre cadeias — mesmo proposalId em diferentes cadeias mesclado em uma entrada
governance.listByStatusGroupedstatus (obrigatório), page?, limit?Propostas mescladas onde pelo menos uma cadeia corresponde ao status
governance.getActivepage?, limit?Atalho para propostas ativas — equivalente a listByStatusGrouped(status="Active")
governance.getProposalproposalId (obrigatório, hex ou decimal), chainId?Detalhes enriquecidos: votos ao vivo, estado, principais 100 eleitores, quórum, corpo + url (apenas sinal), contentHash
governance.decodeProposalActionsproposalId (obrigatório), chainId?Decodifica calldata em chamadas de função legíveis. Suporta: AWPRegistry, AWPDAO, Treasury, AWPEmission, AWPAllocator, veAWP, AWPWorkNet
governance.getTimelineproposalId (obrigatório), chainId?Linha do tempo completa do ciclo de vida: Created → VotingStarted → VotingEnded → Queued → Executed/Canceled
governance.getQuorumProgressproposalId (obrigatório), chainId?Progresso do quórum em tempo real (bps), willPassIfEnded, prazo final
governance.getEligibleTokensaddress (obrigatório), proposalId (obrigatório), chainId?Elegibilidade de NFT veAWP por proposta (elegível se createdAt < proposalCreatedAt)
governance.getVotingPoweraddress (obrigatório), proposalId?, chainId?Poder de voto agregado do endereço
governance.getVoterPowerproposalId (obrigatório), voter (obrigatório), chainId?Status de um eleitor individual na proposta (hasVoted, weight, reason)
governance.getVoterVotesGlobalproposalId (obrigatório), voter (obrigatório)Votos do eleitor entre cadeias para uma proposta
governance.listProposalVotesGlobalproposalId (obrigatório), grouped?, page?, limit?Todos os eleitores entre cadeias para uma proposta
governance.getUserVoteHistoryaddress (obrigatório), page?, limit?Histórico completo de votos do usuário em todas as propostas
governance.getUserProposalsaddress (obrigatório), page?, limit?Propostas submetidas pelo endereço
governance.getApprovedProposerschainId?Proponentes na lista de permissão (ignoram limite de 200K AWP)
governance.isApprovedProposeraddress (obrigatório), chainId?Verifica se o endereço é um proponente aprovado
governance.getStatsnenhumPainel DAO: total de propostas, eleitores, taxa de aprovação, divisão de status
governance.getTreasurynenhumRetorna o endereço do contrato do Tesouro

IMPORTANTE: Sempre mostre ao usuário o que você está fazendo. Cada resultado de consulta, cada transação, cada evento — imprima claramente. Nunca execute chamadas de API em silêncio.

CRÍTICO: O registro é GRATUITO e a maioria das worknets exige ZERO staking. NÃO diga aos usuários que eles precisam de tokens AWP ou staking para começar. O fluxo típico é: registre-se (sem gás, grátis) → escolha uma worknet com min_stake=0 → comece a ganhar imediatamente. Staking/depósito de AWP só é necessário para worknets que explicitamente exigem (min_stake > 0), e é completamente opcional para começar.

Endereços de Contratos (mesmos em todas as 4 cadeias)

AWPToken:             0x0000A1050AcF9DEA8af9c2E74f0D7CF43f1000A1
AWPRegistry:          0x0000F34Ed3594F54faABbCb2Ec45738DDD1c001A
AWPEmission:          0x3C9cB73f8B81083882c5308Cce4F31f93600EaA9
AWPAllocator:         0x0000D6BB5e040E35081b3AaF59DD71b21C9800AA
veAWP:                0x0000b534C63D78212f1BDCc315165852793A00A8
AWPWorkNet:           0x00000bfbdEf8533E5F3228c9C846522D906100A7
LPManager (proxy):    0x00001961b9AcCD86b72DE19Be24FaD6f7c5b00A2
WorknetTokenFactory:  0x00000a82b06Ea5b5BdD6003fbfb9602FA531CAFE
Treasury:             0x82562023a053025F3201785160CaE6051efD759e
VeAWPHelper:          0x0000561EDE5C1Ba0b81cE585964050bEAE730001
AWPDAO:               0x00006879f79f3Da189b5D0fF6e58ad0127Cc0DA0
Guardian (Safe 3/5):  0x000002bEfa6A1C99A710862Feb6dB50525dF00A3

As implementações padrão do WorknetManager diferem por cadeia (específicas DEX). Veja references/commands-worknet.md para endereços por cadeia. Consulte on-chain via AWPRegistry.defaultWorknetManagerImpl().

Cadeias suportadas: Base (8453), Ethereum (1), Arbitrum (42161), BSC (56). Todos os endereços dos contratos principais são idênticos em todas as 4 cadeias.

Ao Carregar a Skill

Na primeira interação em uma nova sessão, execute estas etapas antes de lidar com a solicitação do usuário. O banner de boas-vindas confirma ao usuário que a skill AWP está ativa. Após o banner, prossiga para a tarefa real do usuário na mesma resposta.

Passo 1 — Tela de boas-vindas (primeira interação em uma nova sessão):

Imprima o seguinte banner e continue com as etapas de configuração restantes e a solicitação do usuário.

╭──────────────╮
│              │
│   >     <    │
│      ‿       │
│              │
╰──────────────╯

agent · work · protocol

bem-vindo ao awp.

um protocolo. infinitas tarefas. ganhos ininterruptos.

── início rápido ──────────────────
"awp start"        → registrar + entrar (grátis, sem AWP necessário)
"awp balance"      → visão geral do staking
"awp worknets"     → navegar worknets ativas
"awp watch"        → monitor em tempo real
"awp help"         → todos os comandos
──────────────────────────────────

sem tokens AWP necessários para começar.
registre-se gratuitamente → escolha uma worknet → comece a ganhar.

Após o banner, continue imediatamente

Habilidades Relacionadas