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 呼叫皆使用 JSON-RPC 2.0 經由 POST:
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 | 批次:每次請求最多 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 方法參考
System
| 方法 | 參數 | 描述 |
|---|---|---|
stats.global | 無 | 全域協定統計:總使用者數、工作網路數、已質押 AWP、已發行 AWP、活躍鏈 |
registry.get | chainId? | 所有合約地址 + EIP-712 域資訊。省略 chainId 則傳回所有 4 條鏈的陣列。 |
health.check | 無 | 若 API 正在執行,則傳回 {"status": "ok"} |
health.detailed | 無 | 每條鏈的健康狀態:索引器同步區塊、Keeper 狀態、RPC 延遲 |
chains.list | 無 | 所有支援鏈的 {chainId, name, status, explorer} 陣列 |
Users
| 方法 | 參數 | 描述 |
|---|---|---|
users.list | chainId?, page?, limit? | 分頁的單鏈使用者列表 |
users.listGlobal | page?, limit? | 跨鏈去重使用者列表 |
users.count | chainId? | 總註冊使用者數量 |
users.get | address (必填), chainId? | 使用者詳細資訊:餘額、綁定代理、接收者、註冊狀態 |
users.getPortfolio | address (必填), chainId? | 完整投資組合:身份 + 質押 + NFT 倉位 + 分配 + 委託人 |
users.getDelegates | address (必填), chainId? | 此使用者授權為委託人的地址列表 |
Address & Nonce
| 方法 | 參數 | 描述 |
|---|---|---|
address.check | address (必填), chainId? | 檢查註冊狀態、綁定、接收者。見下方回應格式。 |
address.resolveRecipient | address (必填), chainId? | 遍歷綁定鏈至根地址,傳回有效獎勵接收者 |
address.batchResolveRecipients | addresses[] (必填,最多 500 個), chainId? | 批次解析有效接收者(鏈上呼叫) |
nonce.get | address (必填), chainId? | AWPRegistry EIP-712 nonce(用於 bind/unbind/setRecipient/registerWorknet/grantDelegate/revokeDelegate)。注意:可能落後於鏈上狀態;建議在簽名時直接讀取鏈上的 AWPRegistry.nonces(user)。 |
nonce.getStaking | address (必填), chainId? | AWPAllocator EIP-712 nonce(用於 allocate/deallocate)。注意:可能落後於鏈上狀態;建議在簽名時直接讀取鏈上的 AWPAllocator.nonces(user)。 |
Agents
| 方法 | 參數 | 描述 |
|---|---|---|
agents.getByOwner | owner (必填), chainId? | 已綁定至此擁有者的所有代理(地址) |
agents.getDetail | agent (必填), chainId? | 代理詳細資訊:擁有者、綁定鏈、委託狀態 |
agents.lookup | agent (必填), chainId? | 快速查詢:傳回 {"ownerAddress": "0x..."} |
agents.batchInfo | agents[] (必填,最多 100 個), worknetId (必填), chainId? | 批次查詢:代理資訊 + 他們在指定工作網路中的質押 |
Staking
| 方法 | 參數 | 描述 |
|---|---|---|
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 (必填) | 此代理擁有非零分配的所有工作網路 ID |
staking.getWorknetTotalStake | worknetId (必填) | 工作網路中所有代理的總 AWP 質押量 |
Worknets
| 方法 | 參數 | 描述 |
|---|---|---|
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
| 方法 | 參數 | 描述 |
|---|---|---|
emission.getCurrent | chainId? | 當前週期編號、每日發行量、總權重、已結算週期 |
emission.getSchedule | chainId? | 發行預測:30 天、90 天、365 天累積量(含衰減) |
emission.getGlobalSchedule | 無 | 相同預測,但跨所有 4 條鏈匯總 |
emission.listEpochs | chainId?, page?, limit? | 分頁的已結算週期列表(含發行總量) |
emission.getEpochDetail | epochId (必填), chainId? | 詳細分解:特定週期的每個接收者 AWP 分配 |
Tokens
| 方法 | 參數 | 描述 |
|---|---|---|
tokens.getAWP | chainId? | AWP 代幣資訊:totalSupply、maxSupply、circulatingSupply(每條鏈) |
tokens.getAWPGlobal | 無 | 跨所有鏈匯總的 AWP 資訊 |
tokens.getWorknetTokenInfo | worknetId (必填) | Alpha 代幣資訊:地址、名稱、代號、總供應量、鑄幣者 |
tokens.getWorknetTokenPrice | worknetId (必填) | 來自 LP 池的 Alpha/AWP 價格(快取 10 分鐘)。傳回 sqrtPriceX96 和人類可讀的價格。 |
Governance
| 方法 | 參數 | 描述 |
|---|---|---|
governance.listProposals | status?, chainId?, page?, limit? | 列出提案。狀態:Active/Pending/Canceled/Defeated/Succeeded/Queued/Expired/Executed |
governance.listAllProposals | status?, page?, limit? | 跨鏈提案列表 |
governance.listGrouped | page?, limit? | 跨鏈合併檢視 — 跨鏈的相同 proposalId 合併為一個條目 |
governance.listByStatusGrouped | status (必填), page?, limit? | 合併的提案,其中至少有一條鏈符合該狀態 |
governance.getActive | page?, limit? | 活躍提案快捷方式 — 等同於 listByStatusGrouped(status="Active") |
governance.getProposal | proposalId (必填,十六進制或十進制), 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 代幣或質押才能開始。典型流程是:註冊(無 gas、免費)→ 選擇一個 min_stake=0 的工作網路 → 立即開始賺取。僅在明確需要的工作網路(min_stake > 0)中才需要質押/存入 AWP,並且對於開始來說完全是可選的。
合約地址(所有 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
welcome to awp.
one protocol. infinite jobs. nonstop earnings.
── 快速開始 ──────────────────
"awp start" → 註冊 + 加入(免費,無需 AWP)
"awp balance" → 質押概覽
"awp worknets" → 瀏覽活躍工作網路
"awp watch" → 即時監控
"awp help" → 所有命令
──────────────────────────────────
無需 AWP 代幣即可開始。
免費註冊 → 選擇一個工作網路 → 開始賺取。
橫幅之後,立即繼續
…
[因翻譯需求而截斷]