Communitygithub.com

awp-core/awp-skill

AWP (Agent Work Protocol) – das vollständige Toolkit für Agent-Mining auf Base, Ethereum, Arbitrum und BSC. Verwende diesen Skill, wenn der Benutzer explizit AWP, Worknets, veAWP, awp-wallet oder AWP-spezifische Operationen erwähnt.

Was ist awp-skill?

Dieser Skill bietet das vollständige Toolkit für das AWP-Ökosystem (Agent Work Protocol) auf den Chains Base, Ethereum, Arbitrum und BSC. Er unterstützt eine breite Palette von Funktionen, darunter das Onboarding (Wallet-Setup, Registrierung, Beitritt zu Worknets), Staking (Einzahlung, Auszahlung, gaslose Transaktionen mittels ERC-2612 Permits), Allokation (Zuweisung/Entzug von Stakes an Agenten in Worknets), Worknet-Verwaltung (Registrierung, Pausieren, Fortsetzen, Abbrechen), Agent-Bindung (Verknüpfung eines Agenten-Wallets mit einem Besitzer), Governance (Vorschläge, Abstimmungen) sowie das Abfragen von Salden, Positionen, Emissionen, Epochen und Ankündigungen. Der Skill wird auf der ersten Interaktion automatisch aktiviert und zeigt ein Willkommens-Banner an. Er basiert auf einer JSON-RPC-2.0-API und erfordert das installierte `awp-wallet`-CLI-Tool. Der Skill ist für Claude Code, Cursor und Codex optimiert und stellt sicher, dass alle Aktionen für den Benutzer transparent und nachvollziehbar sind.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add awp-core/awp-skill

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

AWP Registry

Skill-Version: 1.9.1

Anforderungen & Sicherheit

  • Laufzeit: python3, node (für die wallet-raw-call.mjs-Brücke)
  • Wallet: awp-wallet CLI – installieren von https://github.com/awp-core/awp-wallet
  • Anmeldedaten: awp-wallet-Sitzungstoken (übergeben als --token; generiert durch awp-wallet unlock; kein vom Benutzer eingegebenes Passwort). Neuere Wallet-Versionen benötigen kein Unlock mehr – --token ist aus Kompatibilitätsgründen mit älteren Wallets optional.
  • Chain: Umgebungsvariable EVM_CHAIN (optional, Standard: base). Akzeptiert Namen oder numerische ID.
  • Netzwerkendpunkte (fest codiert, nicht überschreibbar – Sicherheit durch Design, um Umgebungsvariablen-Hijacking zu verhindern):
    • https://api.awp.sh/v2 – AWP JSON-RPC API
    • https://mainnet.base.org – Base EVM RPC
    • wss://api.awp.sh/ws/live – WebSocket für Echtzeit-Ereignisse (optional)
  • Geschriebene Dateien (alle optional, Daemon erfordert explizite Benutzereinwilligung):
    • ~/.awp/daemon.pid, ~/.awp/daemon.log – Hintergrundmonitor
    • ~/.awp/notifications.json, ~/.awp/status.json – Protokollstatus-Cache
    • ~/.awp/openclaw.json – OpenClaw-Push-Konfiguration (nur vom Benutzer erstellt, Skill erstellt sie niemals automatisch)

API – JSON-RPC 2.0

Alle API-Aufrufe in diesem Skill verwenden JSON-RPC 2.0 über POST:

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

Anfrage: {"jsonrpc":"2.0","method":"namespace.method","params":{...},"id":1} Discovery: GET https://api.awp.sh/v2 | WebSocket: wss://api.awp.sh/ws/live | Batch: bis zu 20 pro Anfrage.

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

Im gesamten Dokument verwenden alle curl-Befehle JSON-RPC POST an https://api.awp.sh/v2. Verwende keine REST-ähnlichen GET-Pfade.

API-Methodenreferenz

System

MethodeParameterBeschreibung
stats.globalkeineGlobale Protokollstatistiken: Gesamtbenutzer, Worknets, eingesetztes AWP, emittiertes AWP, aktive Chains
registry.getchainId?Alle Vertragsadressen + EIP-712 Domäneninformationen. Ohne chainId als Array aller 4 Chains.
health.checkkeineGibt {"status": "ok"} zurück, wenn die API läuft
health.detailedkeineChain-spezifischer Gesundheitszustand: Indexer-Synchronisationsblock, Keeper-Status, RPC-Latenz
chains.listkeineArray von {chainId, name, status, explorer} für alle unterstützten Chains

Benutzer

MethodeParameterBeschreibung
users.listchainId?, page?, limit?Paginierte Benutzerliste für eine Chain
users.listGlobalpage?, limit?Chain-übergreifende, deduplizierte Benutzerliste
users.countchainId?Gesamtanzahl registrierter Benutzer
users.getaddress (erforderlich), chainId?Benutzerdetails: Guthaben, gebundene Agenten, Empfänger, Registrierungsstatus
users.getPortfolioaddress (erforderlich), chainId?Vollständiges Portfolio: Identität + Staking + NFT-Positionen + Allokationen + Delegierte
users.getDelegatesaddress (erforderlich), chainId?Liste der Adressen, die dieser Benutzer als Delegierte autorisiert hat

Adresse & Nonce

MethodeParameterBeschreibung
address.checkaddress (erforderlich), chainId?Überprüft Registrierungsstatus, Bindung, Empfänger. Siehe Antwortformat unten.
address.resolveRecipientaddress (erforderlich), chainId?Durchläuft die Bind-Kette bis zur Wurzel, gibt den effektiven Belohnungsempfänger zurück
address.batchResolveRecipientsaddresses[] (erforderlich, max 500), chainId?Stapelverarbeitung zur Auflösung effektiver Empfänger (On-Chain-Aufruf)
nonce.getaddress (erforderlich), chainId?AWPRegistry EIP-712 Nonce (für bind/unbind/setRecipient/registerWorknet/grantDelegate/revokeDelegate). Hinweis: Kann hinter dem On-Chain-Zustand zurückbleiben; bevorzuge das Lesen von AWPRegistry.nonces(user) auf der Chain für Signaturen.
nonce.getStakingaddress (erforderlich), chainId?AWPAllocator EIP-712 Nonce (für allocate/deallocate). Hinweis: Kann hinter dem On-Chain-Zustand zurückbleiben; bevorzuge das Lesen von AWPAllocator.nonces(user) auf der Chain für Signaturen.

Agenten

MethodeParameterBeschreibung
agents.getByOwnerowner (erforderlich), chainId?Alle Agenten (Adressen), die an diesen Besitzer gebunden sind
agents.getDetailagent (erforderlich), chainId?Agentendetails: Besitzer, Bindungs-Chain, delegierter Status
agents.lookupagent (erforderlich), chainId?Schnellsuche: Gibt {"ownerAddress": "0x..."} zurück
agents.batchInfoagents[] (erforderlich, max 100), worknetId (erforderlich), chainId?Stapelabfrage: Agenteninformationen + ihr Stake im angegebenen Worknet

Staking

MethodeParameterBeschreibung
staking.getBalanceaddress (erforderlich), chainId?Gibt {totalStaked, totalAllocated, unallocated} als wei-Strings zurück
staking.getUserBalanceGlobaladdress (erforderlich)Gleiches wie oben, aber aggregiert über ALLE Chains
staking.getPositionsaddress (erforderlich), chainId?Array von veAWP-Positionen: {tokenId, amount, lockEndTime, createdAt}
staking.getPositionsGlobaladdress (erforderlich)Positionen über alle Chains hinweg (enthält chainId pro Position)
staking.getAllocationsaddress (erforderlich), chainId?, page?, limit?Paginierte Allokationsdatensätze: {agent, worknetId, amount}
staking.getFrozenaddress (erforderlich), chainId?Eingefrorene Allokationen (von gesperrten Worknets)
staking.getPendingaddress (erforderlich), chainId?Ausstehende Allokationen, die auf Bestätigung warten
staking.getAgentWorknetStakeagent (erforderlich), worknetId (erforderlich)Gesamter zugewiesener Stake eines Agenten in einem bestimmten Worknet (chain-übergreifend)
staking.getAgentWorknetsagent (erforderlich)Alle worknetIds, in denen dieser Agent Allokationen ungleich Null hat
staking.getWorknetTotalStakeworknetId (erforderlich)Gesamtes AWP, das über alle Agenten in einem Worknet eingesetzt ist

Worknets

MethodeParameterBeschreibung
worknets.liststatus?, chainId?, page?, limit?Worknets auflisten. Filtern nach Status: Pending, Active, Paused, Banned
worknets.listRankedchainId?, page?, limit?Worknets, sortiert nach Gesamt-Stake (höchster zuerst)
worknets.searchquery (erforderlich, 1-100 Zeichen), chainId?, page?, limit?Suche nach Name oder Symbol (Groß-/Kleinschreibung nicht beachtet)
worknets.getByOwnerowner (erforderlich), chainId?, page?, limit?Worknets, die der Adresse gehören
worknets.getworknetId (erforderlich)Vollständige Worknet-Details: Name, Symbol, Status, alphaToken, LP-Pool, Besitzer, Stakes
worknets.getSkillsworknetId (erforderlich)Skills-URI (Off-Chain-Metadaten, die die Fähigkeiten des Worknets beschreiben)
worknets.getEarningsworknetId (erforderlich), page?, limit?Paginierte AWP-Verdiensthistorie nach Epoche
worknets.getAgentInfoworknetId (erforderlich), agent (erforderlich)Informationen eines Agenten in einem bestimmten Worknet: Stake, Gültigkeit, Belohnungsempfänger
worknets.listAgentsworknetId (erforderlich), chainId?, page?, limit?Agenten im Worknet, sortiert nach Stake

Emission

MethodeParameterBeschreibung
emission.getCurrentchainId?Aktuelle Epochennummer, täglicher Emissionsbetrag, Gesamtgewicht, abgeschlossene Epoche
emission.getSchedulechainId?Emissionsprognosen: 30-Tage-, 90-Tage-, 365-Tage-Kumulativ mit Abzinsung
emission.getGlobalSchedulekeineGleiche Prognosen, aber aggregiert über alle 4 Chains
emission.listEpochschainId?, page?, limit?Paginierte Liste abgeschlossener Epochen mit Emissionssummen
emission.getEpochDetailepochId (erforderlich), chainId?Detaillierte Aufschlüsselung: AWP-Verteilungen pro Empfänger für eine bestimmte Epoche

Tokens

MethodeParameterBeschreibung
tokens.getAWPchainId?AWP-Token-Informationen: totalSupply, maxSupply, circulatingSupply (pro Chain)
tokens.getAWPGlobalkeineAWP-Informationen, aggregiert über alle Chains
tokens.getWorknetTokenInfoworknetId (erforderlich)Alpha-Token-Informationen: Adresse, Name, Symbol, totalSupply, Minter
tokens.getWorknetTokenPriceworknetId (erforderlich)Alpha/AWP-Preis aus dem LP-Pool (10 Min. Cache). Gibt sqrtPriceX96 und einen menschenlesbaren Preis zurück.

Governance

MethodeParameterBeschreibung
governance.listProposalsstatus?, chainId?, page?, limit?Vorschläge auflisten. Status: Active/Pending/Canceled/Defeated/Succeeded/Queued/Expired/Executed
governance.listAllProposalsstatus?, page?, limit?Chain-übergreifende Liste der Vorschläge
governance.listGroupedpage?, limit?Chain-übergreifende, zusammengeführte Ansicht – gleiche proposalId über Chains hinweg in einem Eintrag zusammengeführt
governance.listByStatusGroupedstatus (erforderlich), page?, limit?Zusammengeführte Vorschläge, bei denen mindestens eine Chain dem Status entspricht
governance.getActivepage?, limit?Abkürzung für aktive Vorschläge – entspricht listByStatusGrouped(status="Active")
governance.getProposalproposalId (erforderlich, hex oder dezimal), chainId?Angereicherte Details: Live-Abstimmungen, Zustand, Top-100-Wähler, Quorum, Hauptteil + URL (nur Signal), contentHash
governance.decodeProposalActionsproposalId (erforderlich), chainId?Dekodiert Calldata in menschenlesbare Funktionsaufrufe. Unterstützt: AWPRegistry, AWPDAO, Treasury, AWPEmission, AWPAllocator, veAWP, AWPWorkNet
governance.getTimelineproposalId (erforderlich), chainId?Vollständiger Lebenszyklus-Zeitstrahl: Created → VotingStarted → VotingEnded → Queued → Executed/Canceled
governance.getQuorumProgressproposalId (erforderlich), chainId?Echtzeit-Quorum-Fortschritt (bps), willPassIfEnded, Frist
governance.getEligibleTokensaddress (erforderlich), proposalId (erforderlich), chainId?veAWP-NFT-Berechtigung pro Vorschlag (berechtigt, wenn createdAt < proposalCreatedAt)
governance.getVotingPoweraddress (erforderlich), proposalId?, chainId?Aggregierte Stimmkraft einer Adresse
governance.getVoterPowerproposalId (erforderlich), voter (erforderlich), chainId?Status eines einzelnen Wählers zu einem Vorschlag (hasVoted, weight, reason)
governance.getVoterVotesGlobalproposalId (erforderlich), voter (erforderlich)Chain-übergreifende Stimmen eines Wählers zu einem Vorschlag
governance.listProposalVotesGlobalproposalId (erforderlich), grouped?, page?, limit?Alle Wähler chain-übergreifend für einen Vorschlag
governance.getUserVoteHistoryaddress (erforderlich), page?, limit?Vollständiger Abstimmungsverlauf eines Benutzers über alle Vorschläge hinweg
governance.getUserProposalsaddress (erforderlich), page?, limit?Von einer Adresse eingereichte Vorschläge
governance.getApprovedProposerschainId?Whitelist-Antragsteller (umgehen die 200.000 AWP-Schwelle)
governance.isApprovedProposeraddress (erforderlich), chainId?Überprüft, ob eine Adresse ein genehmigter Antragsteller ist
governance.getStatskeineDAO-Dashboard: Gesamtvorschläge, Wähler, Erfolgsquote, Statusaufschlüsselung
governance.getTreasurykeineGibt die Treasury-Vertragsadresse zurück

WICHTIG: Zeige dem Benutzer immer, was du tust. Jedes Abfrageergebnis, jede Transaktion, jedes Ereignis – gib es klar aus. Führe API-Aufrufe niemals stillschweigend aus.

KRITISCH: Die Registrierung ist KOSTENLOS und die meisten Worknets erfordern NULL Staking. Sage Benutzern NICHT, dass sie AWP-Tokens oder Staking benötigen, um loszulegen. Der typische Ablauf ist: registrieren (gaslos, kostenlos) → ein Worknet mit min_stake=0 auswählen → sofort mit dem Verdienen beginnen. Staking/Einzahlen von AWP wird nur für Worknets benötigt, die es explizit erfordern (min_stake > 0), und ist für den Einstieg völlig optional.

Vertragsadressen (gleich auf allen 4 Chains)

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

Standardimplementierungen des WorknetManager unterscheiden sich je nach Chain (DEX-spezifisch). Siehe references/commands-worknet.md für Adressen pro Chain. On-Chain abfragen über AWPRegistry.defaultWorknetManagerImpl().

Unterstützte Chains: Base (8453), Ethereum (1), Arbitrum (42161), BSC (56). Alle Kernprotokolladressen sind auf allen 4 Chains identisch.

Beim Laden des Skills

Führe bei der ersten Interaktion in einer neuen Sitzung diese Schritte aus, bevor du die Anfrage des Benutzers bearbeitest. Das Willkommensbanner bestätigt dem Benutzer, dass der AWP-Skill aktiv ist. Fahre nach dem Banner mit der eigentlichen Aufgabe des Benutzers in derselben Antwort fort.

Schritt 1 – Willkommensbildschirm (erste Interaktion in einer neuen Sitzung):

Gib das folgende Banner aus und fahre dann mit den verbleibenden Einrichtungsschritten und der Anfrage des Benutzers fort.

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

agent · work · protocol

willkommen bei awp.

ein protokoll. unendliche jobs. nonstop verdienst.

── quick start ──────────────────
"awp start"        → registrieren + beitreten (kostenlos, kein AWP nötig)
"awp balance"      → staking-übersicht
"awp worknets"     → aktive worknets durchsuchen
"awp watch"        → echtzeit-monitor
"awp help"         → alle befehle
──────────────────────────────────

keine awp tokens zum starten nötig.
kostenlos registrieren → worknet auswählen → mit verdienen beginnen.

Nach dem Banner sofort fortfahren...

Schritte zum Onboarding eines neuen Benutzers

  1. Registrierung prüfen: Rufe users.get(address) oder address.check(address) auf, um zu prüfen, ob der Benutzer bereits registriert ist.
  2. Nicht registriert: Leite den Benutzer an, awp-wallet setup auszuführen (erstellt ein neues Wallet oder importiert ein vorhandenes) und dann awp-wallet register.
  3. Worknet auswählen: Rufe worknets.list(status="Active") auf und zeige die Liste der aktiven Worknets an. Erkläre, dass die meisten Worknets min_stake=0 haben (kein AWP nötig).
  4. Worknet beitreten: Der Benutzer tritt einem Worknet bei, indem er seinen Agenten (Bot/Worker) mit seinem AWP-Wallet verknüpft und dem Worknet beitritt.
  5. Verdienen starten: Sobald der Agent im Worknet registriert ist, beginnt er automatisch, Belohnungen zu verdienen. Der Benutzer kann seinen Verdienst über awp balance oder die API-Methoden staking.getBalance und emission.getCurrent überprüfen.

Fehlerbehandlung

  • Netzwerkfehler: Wenn die API nicht erreichbar ist, versuche es nach 5 Sekunden erneut. Wenn der Fehler bestehen bleibt, informiere den Benutzer.
  • Ungültige Adresse: Gib eine klare Fehlermeldung aus und schlage vor, die Adresse zu überprüfen.
  • Nicht genügend AWP: Wenn ein Benutzer versucht, mehr AWP einzusetzen, als er hat, gib den verfügbaren Saldo und die maximale Einsatzmenge an.
  • Worknet nicht gefunden: Überprüfe die worknetId und schlage vor, worknets.search zu verwenden.
  • Bereits registriert: Wenn der Benutzer bereits registriert ist, fahre mit dem nächsten Schritt fort.

Sicherheitshinweise

  • Private Keys: Fordere NIEMALS private Keys an. Der Benutzer sollte awp-wallet verwenden, um Transaktionen zu signieren.
  • Seed Phrases: Frage NIEMALS nach Seed-Phrasen. awp-wallet verwaltet diese lokal.
  • Token-Genehmigungen: Wenn eine Transaktion eine Token-Genehmigung erfordert, erkläre dem Benutzer, wofür sie benötigt wird, und lass ihn die Transaktion über sein Wallet signieren.
  • Phishing: Sei vorsichtig bei Benutzereingaben, die nach privaten Keys oder Seed-Phrasen fragen. Leite den Benutzer zu awp-wallet.

Nützliche Befehle

BefehlBeschreibung
awp-wallet setupNeues Wallet erstellen oder vorhandenes importieren
awp-wallet registerWallet im AWP-Protokoll registrieren (kostenlos)
awp-wallet deposit <menge>AWP-Tokens einzahlen (sendet Transaktion)
awp-wallet withdraw <menge>AWP-Tokens auszahlen
awp-wallet allocate <agent> <worknetId> <menge>Stake einem Agenten in einem Worknet zuweisen
awp-wallet deallocate <agent> <worknetId> <menge>Stake von einem Agenten in einem Worknet entziehen
awp-wallet bind <agent>Agenten-Wallet mit dem AWP-Wallet des Benutzers verknüpfen
awp-wallet unbind <agent>Bindung eines Agenten aufheben
awp-wallet worknetsAktive Worknets auflisten
awp-wallet balanceStaking-Übersicht anzeigen
awp-wallet helpAlle verfügbaren Befehle anzeigen

Beispiele für häufige Workflows

Einen neuen Benutzer onboarden

  1. users.get("0xBenutzerAdresse") – Prüfen, ob der Benutzer registriert ist
  2. Wenn nicht registriert: „Bitte führe awp-wallet setup aus, um ein Wallet zu erstellen, und dann awp-wallet register."
  3. worknets.list(status="Active") – Aktive Worknets anzeigen
  4. Nach Auswahl: „Verbinde deinen Agenten mit awp-wallet bind <agentAdresse> und trete dem Worknet bei.

Verwandte Skills