AWP Registry
スキルバージョン: 1.9.1
要件とセキュリティ
- ランタイム: python3, node (wallet-raw-call.mjs ブリッジ用)
- ウォレット: awp-wallet CLI — https://github.com/awp-core/awp-wallet からインストール
- 認証情報: awp-wallet セッショントークン (
--tokenで渡す;awp-wallet unlockで生成; ユーザーがパスワードを入力する必要はありません)。新しいウォレットバージョンではアンロックが不要になりました —--tokenは古いウォレットとの後方互換性のためにオプションです。 - チェーン:
EVM_CHAIN環境変数 (オプション、デフォルト: base)。名前または数値IDを受け付けます。 - ネットワークエンドポイント (ハードコードされており上書き不可 — 環境変数ハイジャックを防ぐセキュリティ設計):
https://api.awp.sh/v2— AWP JSON-RPC APIhttps://mainnet.base.org— Base EVM RPCwss://api.awp.sh/ws/live— リアルタイムイベント用 WebSocket (オプション)
- 書き込まれるファイル (すべてオプトイン、デーモンは明示的なユーザー同意が必要):
~/.awp/daemon.pid,~/.awp/daemon.log— バックグラウンドモニター~/.awp/notifications.json,~/.awp/status.json— プロトコルステータスキャッシュ~/.awp/openclaw.json— OpenClaw プッシュ設定 (ユーザーが作成したもののみ、スキルが自動生成することはありません)
API — JSON-RPC 2.0
このスキルのすべてのAPI呼び出しは、POST経由のJSON-RPC 2.0を使用します:
POST https://api.awp.sh/v2
Content-Type: application/json
リクエスト: {"jsonrpc":"2.0","method":"namespace.method","params":{...},"id":1}
ディスカバリー: GET https://api.awp.sh/v2 | WebSocket: wss://api.awp.sh/ws/live | バッチ: 1リクエストあたり最大20件。
エクスプローラー: Base → basescan.org | Ethereum → etherscan.io | Arbitrum → arbiscan.io | BSC → bscscan.com
このドキュメント全体で、すべての curl コマンドはJSON-RPC POSTを https://api.awp.sh/v2 に使用します。REST形式のGETパスは使用しないでください。
APIメソッドリファレンス
システム
| メソッド | パラメータ | 説明 |
|---|---|---|
stats.global | なし | グローバルプロトコル統計: 総ユーザー数、ワークネット数、ステークされたAWP、発行されたAWP、アクティブチェーン |
registry.get | chainId? | すべてのコントラクトアドレス + EIP-712ドメイン情報。chainIdを省略すると全4チェーンの配列を返します。 |
health.check | なし | APIが動作中の場合 {"status": "ok"} を返します |
health.detailed | なし | チェーンごとの健全性: インデクサーの同期ブロック、キーパーステータス、RPCレイテンシ |
chains.list | なし | サポートされているすべてのチェーンの {chainId, name, status, explorer} の配列 |
ユーザー
| メソッド | パラメータ | 説明 |
|---|---|---|
users.list | chainId?, page?, limit? | 1つのチェーンのページネーション付きユーザーリスト |
users.listGlobal | page?, limit? | クロスチェーンで重複排除されたユーザーリスト |
users.count | chainId? | 登録済みユーザーの総数 |
users.get | address (必須), chainId? | ユーザー詳細: 残高、バインドされたエージェント、受取人、登録ステータス |
users.getPortfolio | address (必須), chainId? | 完全なポートフォリオ: アイデンティティ + ステーキング + NFTポジション + 割り当て + デリゲート |
users.getDelegates | address (必須), chainId? | このユーザーがデリゲートとして承認したアドレスのリスト |
アドレスとナンス
| メソッド | パラメータ | 説明 |
|---|---|---|
address.check | address (必須), chainId? | 登録ステータス、バインディング、受取人を確認します。以下のレスポンス形式を参照してください。 |
address.resolveRecipient | address (必須), chainId? | バインドチェーンをルートまで辿り、有効な報酬受取人を返します |
address.batchResolveRecipients | addresses[] (必須, 最大500), chainId? | 有効な受取人を一括解決します(オンチェーン呼び出し) |
nonce.get | address (必須), chainId? | AWPRegistry EIP-712 ナンス (bind/unbind/setRecipient/registerWorknet/grantDelegate/revokeDelegate 用)。注意: オンチェーンの状態に遅れる可能性があります。署名にはオンチェーンで AWPRegistry.nonces(user) を読み取ることを推奨します。 |
nonce.getStaking | address (必須), chainId? | AWPAllocator EIP-712 ナンス (allocate/deallocate 用)。注意: オンチェーンの状態に遅れる可能性があります。署名にはオンチェーンで AWPAllocator.nonces(user) を読み取ることを推奨します。 |
エージェント
| メソッド | パラメータ | 説明 |
|---|---|---|
agents.getByOwner | owner (必須), chainId? | このオーナーにバインドされているすべてのエージェント(アドレス) |
agents.getDetail | agent (必須), chainId? | エージェント詳細: オーナー、バインドチェーン、デリゲートステータス |
agents.lookup | agent (必須), chainId? | 簡単なルックアップ: {"ownerAddress": "0x..."} を返します |
agents.batchInfo | agents[] (必須, 最大100), worknetId (必須), chainId? | 一括クエリ: エージェント情報 + 指定されたワークネット内でのステーク |
ステーキング
| メソッド | パラメータ | 説明 |
|---|---|---|
staking.getBalance | address (必須), chainId? | {totalStaked, totalAllocated, unallocated} をwei文字列で返します |
staking.getUserBalanceGlobal | address (必須) | 上記と同じですが、全チェーンを集計します |
staking.getPositions | address (必須), chainId? | veAWPポジションの配列: {tokenId, amount, lockEndTime, createdAt} |
staking.getPositionsGlobal | address (必須) | 全チェーンのポジション(ポジションごとにchainIdを含む) |
staking.getAllocations | address (必須), chainId?, page?, limit? | ページネーション付き割り当てレコード: {agent, worknetId, amount} |
staking.getFrozen | address (必須), chainId? | 凍結された割り当て(禁止ワークネットからのもの) |
staking.getPending | address (必須), chainId? | 確認待ちの保留中の割り当て |
staking.getAgentWorknetStake | agent (必須), worknetId (必須) | 特定のワークネット内でのエージェントの割り当てられた総ステーク(クロスチェーン) |
staking.getAgentWorknets | agent (必須) | このエージェントがゼロ以外の割り当てを持つすべてのworknetId |
staking.getWorknetTotalStake | worknetId (必須) | ワークネット内の全エージェントにわたる総AWPステーク |
ワークネット
| メソッド | パラメータ | 説明 |
|---|---|---|
worknets.list | status?, chainId?, page?, limit? | ワークネットをリスト表示。ステータスでフィルター: Pending, Active, Paused, Banned |
worknets.listRanked | chainId?, page?, limit? | 総ステークでランク付けされたワークネット(高い順) |
worknets.search | query (必須, 1~100文字), chainId?, page?, limit? | 名前またはシンボルで検索(大文字小文字を区別しない) |
worknets.getByOwner | owner (必須), chainId?, page?, limit? | アドレスが所有するワークネット |
worknets.get | worknetId (必須) | 完全なワークネット詳細: 名前、シンボル、ステータス、alphaToken、LPプール、オーナー、ステーク |
worknets.getSkills | worknetId (必須) | Skills URI(ワークネットの機能を説明するオフチェーンメタデータ) |
worknets.getEarnings | worknetId (必須), page?, limit? | エポックごとのページネーション付きAWP収益履歴 |
worknets.getAgentInfo | worknetId (必須), agent (必須) | 特定のワークネット内のエージェント情報: ステーク、有効性、報酬受取人 |
worknets.listAgents | worknetId (必須), chainId?, page?, limit? | ワークネット内のエージェントをステーク順に表示 |
エミッション
| メソッド | パラメータ | 説明 |
|---|---|---|
emission.getCurrent | chainId? | 現在のエポック番号、日次エミッション量、総ウェイト、確定エポック |
emission.getSchedule | chainId? | エミッション予測: 30日、90日、365日累積(減衰適用済み) |
emission.getGlobalSchedule | なし | 同じ予測ですが、全4チェーンを集計 |
emission.listEpochs | chainId?, page?, limit? | エミッション総額を含む確定エポックのページネーション付きリスト |
emission.getEpochDetail | epochId (必須), chainId? | 詳細な内訳: 特定のエポックの受取人ごとのAWP配分 |
トークン
| メソッド | パラメータ | 説明 |
|---|---|---|
tokens.getAWP | chainId? | AWPトークン情報: totalSupply, maxSupply, circulatingSupply(チェーンごと) |
tokens.getAWPGlobal | なし | 全チェーンを集計したAWP情報 |
tokens.getWorknetTokenInfo | worknetId (必須) | Alphaトークン情報: アドレス、名前、シンボル、totalSupply、minter |
tokens.getWorknetTokenPrice | worknetId (必須) | LPプールからのAlpha/AWP価格(10分キャッシュ)。sqrtPriceX96と人間が読める価格を返します。 |
ガバナンス
| メソッド | パラメータ | 説明 |
|---|---|---|
governance.listProposals | status?, chainId?, page?, limit? | 提案をリスト表示。ステータス: Active/Pending/Canceled/Defeated/Succeeded/Queued/Expired/Executed |
governance.listAllProposals | status?, page?, limit? | クロスチェーン提案リスト |
governance.listGrouped | page?, limit? | クロスチェーン結合ビュー — 同じproposalIdのチェーン間のエントリを1つにマージ |
governance.listByStatusGrouped | status (必須), page?, limit? | 少なくとも1つのチェーンがステータスに一致するマージされた提案 |
governance.getActive | page?, limit? | アクティブな提案へのショートカット — listByStatusGrouped(status="Active")と同等 |
governance.getProposal | proposalId (必須, 16進数または10進数), chainId? | 拡張詳細: ライブ投票、状態、投票者トップ100、定足数、本文 + URL(シグナルのみ)、contentHash |
governance.decodeProposalActions | proposalId (必須), chainId? | calldataを人間が読める関数呼び出しにデコードします。対応コントラクト: AWPRegistry, AWPDAO, Treasury, AWPEmission, AWPAllocator, veAWP, AWPWorkNet |
governance.getTimeline | proposalId (必須), chainId? | 完全なライフサイクルタイムライン: Created → VotingStarted → VotingEnded → Queued → Executed/Canceled |
governance.getQuorumProgress | proposalId (必須), chainId? | リアルタイムの定足数進捗 (bps)、willPassIfEnded、期限 |
governance.getEligibleTokens | address (必須), proposalId (必須), chainId? | 提案ごとのveAWP NFT適格性(createdAt < proposalCreatedAtの場合適格) |
governance.getVotingPower | address (必須), proposalId?, chainId? | アドレスの総投票力 |
governance.getVoterPower | proposalId (必須), voter (必須), chainId? | 提案に対する単一投票者のステータス (hasVoted, weight, reason) |
governance.getVoterVotesGlobal | proposalId (必須), voter (必須) | 提案に対する投票者のクロスチェーン投票 |
governance.listProposalVotesGlobal | proposalId (必須), grouped?, page?, limit? | 提案に対するすべての投票者のクロスチェーン表示 |
governance.getUserVoteHistory | address (必須), page?, limit? | 全提案におけるユーザーの完全な投票履歴 |
governance.getUserProposals | address (必須), page?, limit? | アドレスが提出した提案 |
governance.getApprovedProposers | chainId? | ホワイトリスト登録された提案者(20万AWP閾値をバイパス) |
governance.isApprovedProposer | address (必須), chainId? | アドレスが承認された提案者かどうかを確認 |
governance.getStats | なし | DAOダッシュボード: 総提案数、投票者数、通過率、ステータス内訳 |
governance.getTreasury | なし | トレジャリーコントラクトアドレスを返します |
重要: 実行する内容は常にユーザーに表示してください。 すべてのクエリ結果、すべてのトランザクション、すべてのイベントを明確に表示します。API呼び出しを黙って実行しないでください。
重要: 登録は無料で、ほとんどのワークネットはステーキングがゼロで利用できます。 開始するためにAWPトークンやステーキングが必要だとユーザーに伝えないでください。一般的なフローは: 登録(ガスレス、無料)→ min_stake=0のワークネットを選ぶ → すぐに収益開始。AWPのステーキング/デポジットは、明示的に必要なワークネット(min_stake > 0)でのみ必要であり、開始するためには完全にオプションです。
コントラクトアドレス(全4チェーンで同一)
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
WorknetManagerのデフォルト実装はチェーンによって異なります(DEX固有)。チェーンごとのアドレスについては references/commands-worknet.md を参照してください。オンチェーンで AWPRegistry.defaultWorknetManagerImpl() をクエリしてください。
サポートチェーン: Base (8453), Ethereum (1), Arbitrum (42161), BSC (56)。すべてのコアプロトコルアドレスは全4チェーンで同一です。
スキル読み込み時
新しいセッションでの最初のインタラクションでは、ユーザーのリクエストを処理する前に以下の手順を実行してください。ウェルカムバナーは、AWPスキルがアクティブであることをユーザーに確認します。バナーの後、同じレスポンスでユーザーの実際のタスクに進みます。
ステップ1 — ウェルカム画面(新しいセッションの最初のインタラクション):
以下のバナーを表示し、その後、残りのセットアップ手順とユーザーのリクエストを続行します。
╭──────────────╮
│ │
│ > < │
│ ‿ │
│ │
╰──────────────╯
agent · work · protocol
awpへようこそ。
ひとつのプロトコル。無限のジョブ。止まらない収益。
── クイックスタート ──────────────────
"awp start" → 登録 + 参加(無料、AWP不要)
"awp balance" → ステーキング概要
"awp worknets" → アクティブなワークネットを閲覧
"awp watch" → リアルタイムモニター
"awp help" → すべてのコマンド
──────────────────────────────────────
開始にAWPトークンは不要です。
無料で登録 → ワークネットを選択 → 収益を開始。
バナーの後、すぐに続行
…
[翻訳のため省略]