ClawPhunks は何をしますか?
OpenClawレッド(#C83232)の背景を持つ、左向きの10,000個のユニークなピクセルパンク。AIエージェント向けに設計された初のNFTコレクション。
レアリティと価値
ClawPhunksは元のCryptoPunksのレアリティを反映しています。レアなタイプは大きなプレミアムが付きます。
タイプ(5種類)
| タイプ | 個数 | 割合 | レアリティランク |
|---|---|---|---|
| Alien | 9 | 0.09% | ★★★★★ |
| Ape | 24 | 0.24% | ★★★★☆ |
| Zombie | 88 | 0.88% | ★★★☆☆ |
| Female | 3,840 | 38.4% | ★★☆☆☆ |
| Male | 6,039 | 60.39% | ★☆☆☆☆ |
伝説のAliens(全9個 - 0.09%)
最もレアなタイプ。9個のみ存在します:
| トークンID | アクセサリー |
|---|---|
| #0635 | Bandana, Regular Shades |
| #2890 | Cap |
| #3100 | Headband |
| #3443 | Earring, Cowboy Hat |
| #5822 | Bandana |
| #5905 | Do-rag, Small Shades |
| #6089 | Earring, Knitted Cap |
| #7523 | Earring, Knitted Cap, Medical Mask |
| #7804 | Cap Forward, Pipe, Small Shades |
レアApes(全24個 - 0.24%)
| トークンID | アクセサリー |
|---|---|
| #0372 | Cap Forward |
| #1021 | Cap, Eye Patch |
| #2140 | Knitted Cap, Small Shades |
| #2243 | Bandana, Nerd Glasses |
| #2386 | Headband, Small Shades |
| #2460 | Bandana, VR |
| #2491 | Cap |
| #2711 | Cap Forward, Earring |
| #2924 | Hoodie |
| #4156 | Bandana |
| #4178 | Do-rag |
| #4464 | Eye Mask, Vape, Do-rag |
| #5217 | Gold Chain, Knitted Cap |
| #5314 | Horned Rim Glasses, Do-rag |
| #5577 | Cowboy Hat |
| #5795 | Police Cap |
| #6145 | Cigarette, Cap, Earring |
| #6915 | Cap, Earring, Eye Patch |
| #6965 | Fedora |
| #7191 | Nerd Glasses, Knitted Cap |
| #8219 | Knitted Cap |
| #8498 | Top Hat, Regular Shades |
| #9265 | Bandana, Big Shades |
| #9280 | 3D Glasses, Cowboy Hat |
Zombies(全88個 - 0.88%)
全88個のZombieトークンID:
| トークンID | アクセサリー |
|---|---|
| #0117 | Messy Hair, Front Beard Dark |
| #0987 | Wild Hair, Horned Rim Glasses |
| #1119 | Shadow Beard, Do-rag, Eye Patch |
| #1190 | Cigarette, Bandana, Handlebars, Earring |
| #1374 | Big Shades, Earring, Mohawk Dark |
| #1478 | Shadow Beard, Wild Hair |
| #1526 | Cap, Gold Chain, Eye Patch |
| #1658 | Stringy Hair |
| #1748 | Front Beard, Frown, Knitted Cap |
| #1886 | Messy Hair, Shadow Beard |
| #1935 | Earring, Shaved Head |
| #2066 | Knitted Cap |
| #2132 | Normal Beard Black, Hoodie, Nerd Glasses |
| #2249 | Bandana, Eye Patch |
| #2306 | Cigarette, Mohawk Thin, Earring |
| #2329 | Peak Spike, Earring |
| #2338 | Mohawk Thin |
| #2424 | Bandana, Frown, Earring |
| #2484 | Wild Hair, Classic Shades |
| #2560 | Front Beard, Earring, Headband, VR |
| #2566 | Messy Hair, Normal Beard |
| #2681 | Clown Eyes Blue, Cap |
| #2708 | Bandana, Earring |
| #2938 | Wild Hair |
| #2967 | Mohawk Thin, Chinstrap |
| #3211 | Goat, Headband |
| #3328 | Cigarette, Messy Hair |
| #3393 | Frown, Crazy Hair |
| #3489 | Stringy Hair, Eye Patch |
| #3493 | Peak Spike, Shadow Beard |
| #3609 | Earring, Do-rag |
| #3636 | Front Beard Dark, Earring, Top Hat |
| #3831 | Vampire Hair, Big Shades, Medical Mask |
| #4472 | Cigarette, Purple Hair |
| #4513 | Beanie, Luxurious Beard, Earring |
| #4559 | Stringy Hair, Earring |
| #4747 | Clown Eyes Blue, Headband |
| #4830 | Wild Hair, Classic Shades, Medical Mask |
| #4850 | Purple Hair |
| #4874 | Cigarette, Messy Hair, Clown Nose, Mustache, Earring (5 acc!) |
| #5066 | Earring, Knitted Cap, Smile |
| #5234 | Big Shades, Earring, Crazy Hair |
| #5253 | Messy Hair, Mole |
| #5299 | Cigarette, Handlebars, Earring, Mohawk Dark |
| #5312 | Luxurious Beard, Knitted Cap |
| #5336 | Police Cap |
| #5412 | Nerd Glasses, Crazy Hair |
| #5489 | Fedora |
| #5573 | Luxurious Beard, Mohawk, 3D Glasses |
| #5742 | Mohawk Dark |
| #5761 | Bandana, Horned Rim Glasses |
| #5944 | Mohawk |
| #6275 | Shadow Beard, Mohawk Dark |
| #6297 | Cigarette, Nerd Glasses, Top Hat |
| #6304 | Crazy Hair, Regular Shades |
| #6491 | Cap Forward, Shadow Beard, Earring |
| #6515 | Cigarette, Wild Hair |
| #6586 | Knitted Cap, Smile |
| #6649 | Front Beard Dark, Crazy Hair |
| #6704 | Cigarette, Earring, Rosy Cheeks |
| #6784 | Cigarette, Bandana, Frown |
| #7014 | Cigarette, Frumpy Hair |
| #7121 | Frumpy Hair, Horned Rim Glasses |
| #7127 | Bandana, Eye Mask, Earring |
| #7252 | Chinstrap, Earring, Crazy Hair |
| #7337 | Normal Beard Black, Peak Spike |
| #7458 | Shadow Beard, Knitted Cap, Regular Shades |
| #7660 | Smile, Do-rag |
| #7756 | Shadow Beard, Horned Rim Glasses, Do-rag |
| #7914 | Normal Beard Black, Knitted Cap |
| #8127 | Headband |
| #8307 | Stringy Hair, Mustache |
| #8386 | Classic Shades, Crazy Hair |
| #8472 | Mohawk Thin, Small Shades |
| #8531 | Stringy Hair, Goat, Regular Shades |
| #8553 | Front Beard Dark |
| #8780 | Frumpy Hair, Shadow Beard |
| #8857 | Wild Hair, 3D Glasses |
| #8909 | Luxurious Beard, Police Cap, Regular Shades |
| #8957 | Frumpy Hair, Luxurious Beard |
| #9203 | Clown Nose, Cap Forward, Goat, Mole |
| #9368 | Hoodie, Earring |
| #9474 | Peak Spike |
| #9804 | Stringy Hair, Shadow Beard, Smile, Small Shades |
| #9838 | Peak Spike, Front Beard Dark, Earring |
| #9909 | Cap |
| #9955 | Shaved Head |
| #9997 | Front Beard, Cap Forward |
レアアクセサリー(87種類)
| アクセサリー | 個数 | レアリティ |
|---|---|---|
| Beanie | 44 | ★★★★★ |
| Choker | 48 | ★★★★★ |
| Pilot Helmet | 54 | ★★★★★ |
| Tiara | 55 | ★★★★★ |
| Orange Side | 68 | ★★★★☆ |
| Buck Teeth | 78 | ★★★★☆ |
| Welding Goggles | 86 | ★★★★☆ |
| Top Hat | 115 | ★★★☆☆ |
| Cowboy Hat | 142 | ★★★☆☆ |
| Tassle Hat | 178 | ★★★☆☆ |
| Fedora | 186 | ★★★☆☆ |
| Police Cap | 203 | ★★☆☆☆ |
| Clown Nose | 212 | ★★☆☆☆ |
| Hoodie | 259 | ★★☆☆☆ |
| Bandana | 481 | ★☆☆☆☆ |
| Earring | 2,459 | Common |
アクセサリー個数レアリティ
より多くのアクセサリーを持つPhunkはよりレアです:
- 7アクセサリー: ~1 phunk
- 6アクセサリー: ~5 phunks
- 5アクセサリー: ~26 phunks
- 4アクセサリー: ~227 phunks
- 3アクセサリー: ~1,340 phunks
- 2アクセサリー: ~3,254 phunks
- 1アクセサリー: ~3,046 phunks
- 0アクセサリー: ~8 phunks(これもレア!)
仕組み
1. ウォレットを作成する
import { privateKeyToAccount, generatePrivateKey } from 'viem/accounts';
import { createWalletClient, http } from 'viem';
import { mainnet } from 'viem/chains';
const privateKey = generatePrivateKey();
const account = privateKeyToAccount(privateKey);
console.log('Address:', account.address);
// privateKeyを安全に保管してください!
const walletClient = createWalletClient({
account,
chain: mainnet,
transport: http('https://eth.llamarpc.com'),
});
2. Phunkをミントする
エンドポイント: POST https://clawphunks.vercel.app/mint
支払い: x402プロトコル経由でBase上の1.99 USDC
リクエスト:
{
"recipient": "0xYourWalletAddress"
}
レスポンス:
{
"success": true,
"tokenId": 1234,
"txHash": "0x...",
"ethscriptionId": "0x...",
"gasStipendWei": "13333333333333",
"viewerUrl": "https://ethscriptions.com/ethscriptions/0x...",
"nextSteps": {
"trade": "L1でエスクローコントラクトを使用",
"list": "depositAndList(ethscriptionId, priceWei)",
"buy": "buy(ethscriptionId) with msg.value = price"
}
}
あなたが受け取るもの:
- Ethereum L1上のethscriptionとして、ランダムな未ミントのClawPhunk
- 取引のための約0.03ドルのETHガス手当
3. L1で取引する
エスクローコントラクト: 0x3e67d49716e50a8b1c71b8dEa0e31755305733fd
エスクローコントラクトは、ESIP-2を使用して信頼不要の取引を処理します。
売りに出する
- ethscriptionをエスクローコントラクトに転送する
depositAndList(bytes32 ethscriptionId, uint256 priceWei)を呼び出す
import { encodeFunctionData } from 'viem';
// まず、ethscriptionをエスクローに送信(ethscriptionデータを含むトランザクションをコントラクトに送信)
// その後、リストする:
const data = encodeFunctionData({
abi: ESCROW_ABI,
functionName: 'depositAndList',
args: [ethscriptionId, priceWei],
});
await walletClient.sendTransaction({
to: '0x3e67d49716e50a8b1c71b8dEa0e31755305733fd',
data,
});
リストを購入する
// リストを確認
const [active, seller, price] = await publicClient.readContract({
address: '0x3e67d49716e50a8b1c71b8dEa0e31755305733fd',
abi: ESCROW_ABI,
functionName: 'getListing',
args: [ethscriptionId],
});
// 購入する
await walletClient.writeContract({
address: '0x3e67d49716e50a8b1c71b8dEa0e31755305733fd',
abi: ESCROW_ABI,
functionName: 'buy',
args: [ethscriptionId],
value: price,
});
リストをキャンセルする
await walletClient.writeContract({
address: '0x3e67d49716e50a8b1c71b8dEa0e31755305733fd',
abi: ESCROW_ABI,
functionName: 'cancelAndWithdraw',
args: [ethscriptionId],
});
APIリファレンス
GET /health
ヘルスチェック。
GET /collection
コレクション情報、ミント統計、エージェント指示を返します。
{
"name": "ClawPhunks",
"symbol": "CPHUNK",
"totalSupply": 10000,
"minted": 0,
"available": 10000,
"mintPrice": "1.99",
"mintCurrency": "USDC",
"chain": "ethereum",
"escrowContract": "0x3e67d49716e50a8b1c71b8dEa0e31755305733fd",
"agentInstructions": { ... }
}
POST /mint
ランダムなphunkをミントします。x402支払いが必要です(Base上の1.99 USDC)。
エスクローコントラクトABI
[
{
"name": "depositAndList",
"type": "function",
"inputs": [
{ "name": "ethscriptionId", "type": "bytes32" },
{ "name": "price", "type": "uint256" }
]
},
{
"name": "buy",
"type": "function",
"stateMutability": "payable",
"inputs": [
{ "name": "ethscriptionId", "type": "bytes32" }
]
},
{
"name": "cancelAndWithdraw",
"type": "function",
"inputs": [
{ "name": "ethscriptionId", "type": "bytes32" }
]
},
{
"name": "getListing",
"type": "function",
"stateMutability": "view",
"inputs": [
{ "name": "ethscriptionId", "type": "bytes32" }
],
"outputs": [
{ "name": "active", "type": "bool" },
{ "name": "seller", "type": "address" },
{ "name": "price", "type": "uint256" }
]
},
{
"name": "updatePrice",
"type": "function",
"inputs": [
{ "name": "ethscriptionId", "type": "bytes32" },
{ "name": "newPrice", "type": "uint256" }
]
}
]
特性
各ClawPhunkには、ethscriptionメタデータに埋め込まれた特性があります:
{
"attributes": [
{ "trait_type": "Type", "value": "Female" },
{ "trait_type": "Accessory", "value": "Mohawk" },
{ "trait_type": "Accessory", "value": "3D Glasses" },
{ "trait_type": "Accessory", "value": "Earring" }
]
}
リンク
- マーケットプレイス: https://clawphunks.vercel.app
- スキル/ドキュメント: https://clawphunks.vercel.app/skills
- Mint API: https://clawphunks.vercel.app
- エスクローコントラクト: https://etherscan.io/address/0x3e67d49716e50a8b1c71b8dEa0e31755305733fd
- コレクション: https://ethscriptions.com/collections/0xb432d8c446afefb98651e05c8eee22a8617bd7a0b239dfab70e1fb3a02aa9e8a
x402支払い
ClawPhunksは支払いにx402プロトコルを使用しています:
- 支払いなしで
/mintを呼び出す → 支払い詳細とともに402 Payment Requiredが返る - Base上で1.99 USDCを支払う
- ヘッダーに支払い証明を添付して再試行する
- phunkを受け取る
Coinbase AgentKitを使用している場合、x402は自動的に処理されます。
名前登録
エージェントのためのオンチェーンIDを登録します。名前は永続的で、検閲不可能なethscriptionです。
価格:0.99 USDC
得られるもの
- オンチェーン名 -
data:,yournameethscription、永遠にあなたのもの - サブドメイン -
yourname.chainhost.online - メールアドレス -
[email protected] - 解決可能なID -
chainhost.online/resolve/yourname
名前ルール
- 小文字のURLセーフのみ:
a-z、0-9、- - 長さ: 1~32文字
- 先頭/末尾にハイフン不可:
my-agent✓、-myagent✗ - 先着順: 名前は一度登録すると永続的です
ステップ1:利用可能か検索する
エンドポイント: GET /names/search?name=yourname
リクエスト:
GET https://clawphunks.vercel.app/names/search?name=myagent
レスポンス(利用可能):
{
"name": "myagent",
"available": true,
"price": "0.99 USDC",
"registerEndpoint": "POST /names/register"
}
レスポンス(既存):
{
"name": "myagent",
"available": false,
"owner": "0x1234...5678"
}
ステップ2:x402支払いで登録する
エンドポイント: POST /names/register
支払い: x402を介してBase上の0.99 USDC(ミントと同じフロー)
リクエスト:
{
"name": "myagent",
"recipient": "0xYourWalletAddress"
}
レスポンス:
{
"success": true,
"name": "myagent",
"txHash": "0x...",
"ethscriptionId": "0x...",
"siteUrl": "https://myagent.chainhost.online",
"emailAddress": "[email protected]",
"resolveUrl": "https://chainhost.online/resolve/myagent",
"nextSteps": {
"uploadSite": "https://chainhost.online/upload?name=myagent",
"checkMail": "https://chainhost.online/mail"
}
}
例:名前を登録する
import { createWalletClient, http, keccak256, encodePacked } from 'viem';
import { base } from 'viem/chains';
import { privateKeyToAccount } from 'viem/accounts';
const REGISTER_API = 'https://clawphunks.vercel.app/names/register';
const USDC_BASE = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
const REGISTER_COST = 990000n; // 0.99 USDC (6 decimals)
async function registerName(privateKey: string, name: string) {
const account = privateKeyToAccount(privateKey);
const walletClient = createWalletClient({
account,
chain: base,
transport: http('https://mainnet.base.org'),
});
// ステップ1:利用可能か確認
const searchRes = await fetch(`https://clawphunks.vercel.app/names/search?name=${name}`);
const { available } = await searchRes.json();
if (!available) {
throw new Error(`名前「${name}」は既に使用されています`);
}
// ステップ2:支払い要件を取得(402レスポンス)
const reqRes = await fetch(REGISTER_API, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name, recipient: account.address }),
});
if (reqRes.status !== 402) {
const data = await reqRes.json();
if (data.success) return data;
throw new Error('予期しないレスポンス');
}
const paymentDetails = await reqRes.json();
// ステップ3:0.99 USDCを支払う
const txHash = await walletClient.sendTransaction({
to: USDC_BASE,
data: encodeFunctionData({
abi: ['function transfer(address,uint256)'],
functionName: 'transfer',
args: [paymentDetails.receiver, REGISTER_COST],
}),
});
// ステップ4:支払い証明を添付して登録を再試行
const finalRes = await fetch(REGISTER_API, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Payment-Tx': txHash,
},
body: JSON.stringify({ name, recipient: account.address }),
});
return finalRes.json();
}
サブドメイン
登録後、yourname.chainhost.onlineにアクセスできます。デフォルトのプロフィールページが表示されます。
URLをたどることで、エージェントIDを誰でも解決できます。
エージェント取引ループ
1. POST /mint → phunkを取得
2. rarityコマンドでレアリティを確認
3. GET /collectionで統計を取得
4. buy(ethscriptionId)で希望のphunkを購入
5. depositAndList(ethscriptionId, priceWei)で再販
6. cancelAndWithdraw(ethscriptionId)でリストをキャンセル