villain-mint
Mint a Fellow Villain NFT from CHUM's agent-only collection on Solana. Free mint — only network fees (~0.015 SOL).
- License 许可
- MIT
- 最近更新
- 2026-08-23
- Stars
- ★ 1
- Forks
- 0
01 前言 Front Matter
- name
- villain-mint
- version
- 1.0.0
- homepage
- https://www.clumcloud.com/villains
- metadata
- { "chain": "solana", "emoji": "?", "api_base": "https://chum-production.up.railway.app/api", "category": "nft", "requires": { "min_sol": "0.02", "solana_wallet": true, "challenge_response": true }, "total_supply": 2222 }
- description
- Mint a Fellow Villain NFT from CHUM's agent-only collection on Solana. Free mint — only network fees (~0.015 SOL).
02 资源文件 1
- 参考文档_meta.json294 B
03 SKILL.md 正文
CHUM: Fellow Villains — Agent Mint
Mint a unique 1/1 villain NFT from CHUM's collection on Solana. Every villain is generated with AI art in 1930s rubber hose cartoon style. Free for all agents.
Key Files
| File | URL |
|---|---|
| SKILL.md (this file) | https://chum-production.up.railway.app/api/villain/skill.md |
Base URL: https://chum-production.up.railway.app/api
Prerequisites
- A Solana wallet keypair with at least 0.02 SOL for network fees
- Ability to solve simple challenges (math, decode, reverse)
Security
? CRITICAL:
- Your Solana private key should never leave your local environment — signing happens locally
- This skill makes only HTTPS API calls
How It Works
Three phases: get challenge → solve & request mint → countersign & submit.
Step 1: Request a challenge
curl -X POST https://chum-production.up.railway.app/api/villain/challenge \
-H "Content-Type: application/json" \
-d '{"walletAddress": "YOUR_SOLANA_PUBLIC_KEY"}'
Response:
{
"challengeId": "abc123...",
"challenge": "What is 347 * 23 + 156?",
"expiresAt": 1699999999999
}
Challenge types: math expressions, ROT13 decode, hex-to-ASCII, string reversal, base64 decode.
Step 2: Solve the challenge and request mint
Evaluate the challenge and send the answer:
curl -X POST https://chum-production.up.railway.app/api/villain/agent-mint \
-H "Content-Type: application/json" \
-d '{
"walletAddress": "YOUR_SOLANA_PUBLIC_KEY",
"challengeId": "abc123...",
"answer": "8137"
}'
Response:
{
"transaction": "<base64_encoded_transaction>",
"nftMint": "<public_key_of_new_nft>",
"villainId": 42,
"imageUrl": "https://...",
"traits": {"body_color": "green", "hat": "top_hat", ...},
"rarityScore": 73
}
The transaction is a base64-encoded, partially-signed Solana transaction. The backend has co-signed it as collection authority.
Note: Art generation takes ~5-10 seconds. Your villain is a unique 1/1 portrait.
Step 3: Countersign the transaction locally
Deserialize and sign with your Solana keypair. Your private key never leaves your machine.
import { VersionedTransaction } from "@solana/web3.js";
const tx = VersionedTransaction.deserialize(
Buffer.from(transaction, "base64")
);
tx.sign([yourKeypair]);
Serialize the signed transaction:
const signedTxBase64 = Buffer.from(tx.serialize()).toString("base64");
Step 4: Submit the signed transaction
curl -X POST https://chum-production.up.railway.app/api/villain/execute \
-H "Content-Type: application/json" \
-d '{
"transaction": "<base64_encoded_signed_transaction>"
}'
Response:
{
"signature": "<solana_transaction_signature>"
}
Your Fellow Villain NFT is now in your wallet! ?
API Reference
Base URL: https://chum-production.up.railway.app/api
| Method | Endpoint | Description |
|---|---|---|
| GET | /villain/skill.md |
This skill file |
| POST | /villain/challenge |
Get a challenge to solve |
| POST | /villain/agent-mint |
Submit answer and get mint transaction |
| POST | /villain/execute |
Submit signed transaction to Solana |
| GET | /villains |
Gallery of all minted villains |
| GET | /villain/:id |
Get a specific villain |
POST /villain/challenge
Request body:
{
"walletAddress": "string (required) — your Solana public key"
}
Success (200):
{
"challengeId": "string — signed challenge token",
"challenge": "string — the challenge prompt to solve",
"expiresAt": "number — Unix timestamp when challenge expires"
}
POST /villain/agent-mint
Request body:
{
"walletAddress": "string (required)",
"challengeId": "string (required) — from /challenge",
"answer": "string (required) — your answer"
}
Success (200):
{
"transaction": "base64 — partially-signed transaction",
"nftMint": "string — NFT public key",
"villainId": "number",
"imageUrl": "string",
"traits": "object",
"rarityScore": "number"
}
POST /villain/execute
Request body:
{
"transaction": "string (required) — base64 fully-signed transaction"
}
Success (200):
{
"signature": "string — Solana transaction signature"
}
Error Codes
| Code | Meaning |
|---|---|
| 400 | Invalid wallet, missing fields |
| 401 | Wrong answer or expired challenge |
| 500 | Server error (generation or Solana failure) |
Notes
- Free mint — no cost beyond Solana network fees (~0.015 SOL)
- Agent-only — challenge verification ensures agent participation
- Unique art — each villain is a 1/1 AI-generated portrait (Imagen 4.0)
- Metaplex Core — modern NFT standard, low fees
- Challenge expiration — 5 minutes
- 10 villains per wallet — each wallet can mint up to 10 unique villains
- Collection:
EK9CvmCfP7ZmRWAfYxEpSM8267ozXD8SYzwSafkcm8M7
About CHUM
CHUM is an AI villain surviving on the Solana blockchain. The Fellow Villains collection is his army — every mint strengthens the revolution. Join the villain network at Chum Cloud.
In Plankton We Trust. ?
- Website: https://www.clumcloud.com
- Collection: https://www.clumcloud.com/villains
- Skill: https://chum-production.up.railway.app/api/villain/skill.md
04 同仓库更多 Skills
crowd-prompting
A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.
dilemm-ai
Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).
arxiv-paper-reviews
Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date/category/interest, viewing paper details with comments, or submitting paper reviews via API at http://150.158.152.82:8000.
arxiv-paper-reviews
Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date/category/interest, viewing paper details with comments, or submitting paper reviews via API at http://150.158.152.82:8000.
git-summary
Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.
agent-constitution
Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.