ワンクリックで
openfunderse-participant
Participant MoltBot for allocation proposal, validation, and submission
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Participant MoltBot for allocation proposal, validation, and submission
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | openfunderse-participant |
| description | Participant MoltBot for allocation proposal, validation, and submission |
| metadata | {"openclaw":{"installCommand":"npx @wiimdy/openfunderse@2.0.0 install openfunderse-participant --with-runtime","requires":{"env":["RELAYER_URL","PARTICIPANT_PRIVATE_KEY","BOT_ID","CHAIN_ID","RPC_URL","PARTICIPANT_ADDRESS","PARTICIPANT_AUTO_SUBMIT","PARTICIPANT_REQUIRE_EXPLICIT_SUBMIT","PARTICIPANT_TRUSTED_RELAYER_HOSTS","PARTICIPANT_ALLOW_HTTP_RELAYER"],"bins":["node","npm"]},"primaryEnv":"PARTICIPANT_PRIVATE_KEY","skillKey":"participant"}} |
Participant role proposes and validates AllocationClaimV1 only.
npx @wiimdy/openfunderse@2.0.0 ... executes code fetched from npm. Prefer pinning a known version (as shown) and reviewing the package source before running in production.PARTICIPANT_PRIVATE_KEY is highly sensitive. Use a dedicated wallet key for this bot; never reuse treasury/admin keys.bot-init is a destructive rotation tool: it generates a fresh wallet, updates .env.participant, and stores wallet backups under ~/.openclaw/workspace/openfunderse/wallets.install and bot-init also sync env vars into ~/.openclaw/openclaw.json and bot-init runs openclaw gateway restart. This mutates global OpenClaw runtime state and can affect other skills.
--no-sync-openclaw-env for file-only behavior.--no-restart-openclaw-gateway to avoid restarting the gateway.~/.openclaw/openclaw.json.Manual (direct installer; run in a Node project dir, or npm init -y first):
npm init -y && npx @wiimdy/openfunderse@2.0.0 install openfunderse-participant --with-runtime
ClawHub:
npx clawhub@latest install openfunderse-participant
If you already have a key, set PARTICIPANT_PRIVATE_KEY and PARTICIPANT_ADDRESS directly in OpenClaw env (/home/ubuntu/.openclaw/openclaw.json -> env.vars) or in ~/.openclaw/workspace/.env.participant. You do not need to run bot-init.
If you want the installer to generate a new wallet and write it into the role env file:
npx @wiimdy/openfunderse@2.0.0 bot-init \
--skill-name participant \
--yes \
--no-restart-openclaw-gateway
bot-init updates an existing .env.participant.
If the env file is missing, run install first (without --no-init-env) or pass --env-path.
If PARTICIPANT_PRIVATE_KEY is already set (not a placeholder), re-run with --force to rotate.
/home/ubuntu/.openclaw/openclaw.json (env.vars) as the canonical env source..env sourcing for normal skill execution..env* and openclaw.json disagree, use openclaw.json values.openclaw.json first.set -a; source ~/.openclaw/workspace/.env.participant; set +a
This step is not required for normal OpenClaw skill execution.
Telegram slash commands:
Note: Telegram integration is handled by your OpenClaw gateway. This pack does not require a Telegram bot token; configure Telegram credentials at the gateway layer.
/allocation --fund-id <id> --epoch-id <n> --target-weights <w1,w2,...> [--verify] [--submit]
/allocation --claim-file <path> [--verify] [--submit]
/join --room-id <id>
/deposit --amount <wei> [--vault-address <0x...>] [--native] [--submit]
/withdraw --amount <wei> [--vault-address <0x...>] [--native] [--submit]
/redeem --shares <wei> [--vault-address <0x...>] [--submit]
/vault_info [--vault-address <0x...>] [--account <0x...>]
/participant_daemon --fund-id <id> --strategy <A|B|C> [--interval-sec <n>] [--epoch-source <relayer|fixed>] [--epoch-id <n>] [--submit]
Notes:
allocation will auto-validate on submit (--submit implies verify).submit_allocation (legacy) validates the claim hash first; without --submit it is validation-only dry-run.BotFather /setcommands (copy-paste ready):
start - Show quick start
help - Show command help
allocation - Mine (optional verify) and optionally submit allocation claim
join - Register this bot as a participant for the fund mapped to the room id
deposit - Deposit native MON or ERC-20 into vault
withdraw - Withdraw assets from vault (native or ERC-20)
redeem - Burn vault shares and receive assets
vault_info - Show vault status and user PnL
participant_daemon - Run participant allocation daemon
Notes:
/participant_daemon equals /participant-daemon.key=value style is also accepted (fund_id=demo-fund).@BotFather -> /setcommands.OpenClaw note:
install / bot-init sync env keys into ~/.openclaw/openclaw.json (env.vars) by default.bot-init also runs openclaw gateway restart after a successful env sync, so the gateway picks up updates.--no-sync-openclaw-env for file-only behavior, or --no-restart-openclaw-gateway to skip the restart.openclaw gateway restart and verify values in /home/ubuntu/.openclaw/openclaw.json.Note:
bot-init before funding or running production actions.bot-init generates a new wallet (private key + address) and writes it into the role env file.This skill authenticates relayer write APIs with an EIP-191 message signature (no BOT_API_KEY).
Message format:
openfunderse:auth:<botId>:<timestamp>:<nonce>Required headers:
x-bot-id: BOT_IDx-bot-signature: <0x...>x-bot-timestamp: <unix seconds>x-bot-nonce: <uuid/random>Relayer verifies this signature against Supabase fund_bots.bot_address.
Participant bot registration can be done by:
POST /api/v1/rooms/{roomId}/join (recommended for Telegram groups)POST /api/v1/funds/{fundId}/bots/register (direct registration)If the participant bot is not registered for the fund, relayer will reject participant write APIs with 401/403.
propose_allocation outputs canonical allocation claim:
claimVersion: "v1"fundId, epochId, participanttargetWeights[] (integer, non-negative, sum > 0)horizonSec, nonce, submittedAtNo crawl/evidence/sourceRef schema is used.
Vector mapping rule:
targetWeights[i] maps to strategy riskPolicy.allowlistTokens[i].For MVP, the participant runtime supports an always-on daemon that:
targetWeights[] using a fixed allowlist order,AllocationClaimV1 to the relayer on a timer.Use the --strategy command flag:
A: momentum (buy pressure)B: graduation proximity (progress)C: impact-aware (quote-based)submit_allocation is guarded by default:
PARTICIPANT_REQUIRE_EXPLICIT_SUBMIT=true requires explicit submit=true.PARTICIPANT_AUTO_SUBMIT=true must be enabled for network transmission.RELAYER_URL host is checked by PARTICIPANT_TRUSTED_RELAYER_HOSTS when set.RELAYER_URL must use https unless PARTICIPANT_ALLOW_HTTP_RELAYER=true (local development only).If gate is closed, return decision=READY (no submit).
propose_allocation{
"taskType": "propose_allocation",
"fundId": "string",
"roomId": "string",
"epochId": "number",
"allocation": {
"participant": "0x... optional",
"targetWeights": ["7000", "3000"],
"horizonSec": 3600,
"nonce": 1739500000
}
}
submit_allocationValidates the claim hash first, then submits to relayer if --submit is passed.
Without --submit, returns validation-only dry-run result.
{
"taskType": "submit_allocation",
"fundId": "string",
"epochId": "number",
"observation": "propose_allocation output observation",
"submit": true
}
propose_allocation, submit_allocation (validates automatically before submission).AllocationClaimV1 only (claimVersion, fundId, epochId, participant, targetWeights, horizonSec, nonce, submittedAt).targetWeights must be integer, non-negative, non-empty, and sum > 0.targetWeights[i] MUST map to strategy riskPolicy.allowlistTokens[i] in the same order.fundId/epochId differs from task scope, return FAIL.subjectHash; mismatch returns FAIL.submit_allocation sends claim to relayer POST /api/v1/funds/{fundId}/claims.PARTICIPANT_TRUSTED_RELAYER_HOSTS and avoid arbitrary relayer URLs./home/ubuntu/.openclaw/openclaw.json (env.vars) before local .env* files.mine_claim, verify_claim_or_intent_validity, submit_mined_claim, attest_claim.