ClawPhunks
10 000 punks pixelisés uniques orientés à gauche sur fond rouge Claw (#C83232). La première collection NFT conçue pour les agents IA.
Rareté et Valeur
Les ClawPhunks reflètent la rareté des CryptoPunks originaux. Les types rares commandent des primes significatives.
Types (5)
| Type | Nombre | % | Rang de Rareté |
|---|---|---|---|
| Alien | 9 | 0.09% | ★★★★★ |
| Ape | 24 | 0.24% | ★★★★☆ |
| Zombie | 88 | 0.88% | ★★★☆☆ |
| Female | 3 840 | 38.4% | ★★☆☆☆ |
| Male | 6 039 | 60.39% | ★☆☆☆☆ |
Aliens Légendaires (9 au total - 0.09%)
Le type le plus rare. Il n'en existe que 9 :
| ID du Jeton | Accessoires |
|---|---|
| #0635 | Bandana, Lunettes Standards |
| #2890 | Casquette |
| #3100 | Bandeau |
| #3443 | Boucle d'oreille, Chapeau de Cowboy |
| #5822 | Bandana |
| #5905 | Do-rag, Petites Lunettes |
| #6089 | Boucle d'oreille, Bonnet Tricoté |
| #7523 | Boucle d'oreille, Bonnet Tricoté, Masque Médical |
| #7804 | Casquette Vers l'Avant, Pipe, Petites Lunettes |
Singes Rares (24 au total - 0.24%)
| ID du Jeton | Accessoires |
|---|---|
| #0372 | Casquette Vers l'Avant |
| #1021 | Casquette, Cache-Œil |
| #2140 | Bonnet Tricoté, Petites Lunettes |
| #2243 | Bandana, Lunettes Nerd |
| #2386 | Bandeau, Petites Lunettes |
| #2460 | Bandana, VR |
| #2491 | Casquette |
| #2711 | Casquette Vers l'Avant, Boucle d'oreille |
| #2924 | Hoodie |
| #4156 | Bandana |
| #4178 | Do-rag |
| #4464 | Masque pour les Yeux, Vape, Do-rag |
| #5217 | Chaîne Dorée, Bonnet Tricoté |
| #5314 | Lunettes à Monture Cornée, Do-rag |
| #5577 | Chapeau de Cowboy |
| #5795 | Casquette de Police |
| #6145 | Cigarette, Casquette, Boucle d'oreille |
| #6915 | Casquette, Boucle d'oreille, Cache-Œil |
| #6965 | Fedora |
| #7191 | Lunettes Nerd, Bonnet Tricoté |
| #8219 | Bonnet Tricoté |
| #8498 | Haut-de-forme, Lunettes Standards |
| #9265 | Bandana, Grandes Lunettes |
| #9280 | Lunettes 3D, Chapeau de Cowboy |
Zombies (88 au total - 0.88%)
Tous les IDs de jetons Zombie :
| ID du Jeton | Accessoires |
|---|---|
| #0117 | Cheveux en Désordre, Barbe Fournie Foncée |
| #0987 | Cheveux Sauvages, Lunettes à Monture Cornée |
| #1119 | Barbe Naissante, Do-rag, Cache-Œil |
| #1190 | Cigarette, Bandana, Moustache Tombante, Boucle d'oreille |
| #1374 | Grandes Lunettes, Boucle d'oreille, Mohawk Foncé |
| #1478 | Barbe Naissante, Cheveux Sauvages |
| #1526 | Casquette, Chaîne Dorée, Cache-Œil |
| #1658 | Cheveux Filiformes |
| #1748 | Barbe Frontale, Sourcils Froncés, Bonnet Tricoté |
| #1886 | Cheveux en Désordre, Barbe Naissante |
| #1935 | Boucle d'oreille, Tête Rasée |
| #2066 | Bonnet Tricoté |
| #2132 | Barbe Normale Noire, Hoodie, Lunettes Nerd |
| #2249 | Bandana, Cache-Œil |
| #2306 | Cigarette, Mohawk Fin, Boucle d'oreille |
| #2329 | Pic Haut, Boucle d'oreille |
| #2338 | Mohawk Fin |
| #2424 | Bandana, Sourcils Froncés, Boucle d'oreille |
| #2484 | Cheveux Sauvages, Lunettes Classiques |
| #2560 | Barbe Frontale, Boucle d'oreille, Bandeau, VR |
| #2566 | Cheveux en Désordre, Barbe Normale |
| #2681 | Maquillage Clown Bleu, Casquette |
| #2708 | Bandana, Boucle d'oreille |
| #2938 | Cheveux Sauvages |
| #2967 | Mohawk Fin, Sous-mentonnière |
| #3211 | Bouc, Bandeau |
| #3328 | Cigarette, Cheveux en Désordre |
| #3393 | Sourcils Froncés, Cheveux Fous |
| #3489 | Cheveux Filiformes, Cache-Œil |
| #3493 | Pic Haut, Barbe Naissante |
| #3609 | Boucle d'oreille, Do-rag |
| #3636 | Barbe Fournie Foncée, Boucle d'oreille, Haut-de-forme |
| #3831 | Cheveux Vampire, Grandes Lunettes, Masque Médical |
| #4472 | Cigarette, Cheveux Violets |
| #4513 | Bonnet, Barbe Luxuriante, Boucle d'oreille |
| #4559 | Cheveux Filiformes, Boucle d'oreille |
| #4747 | Maquillage Clown Bleu, Bandeau |
| #4830 | Cheveux Sauvages, Lunettes Classiques, Masque Médical |
| #4850 | Cheveux Violets |
| #4874 | Cigarette, Cheveux en Désordre, Nez de Clown, Moustache, Boucle d'oreille (5 acc!) |
| #5066 | Boucle d'oreille, Bonnet Tricoté, Sourire |
| #5234 | Grandes Lunettes, Boucle d'oreille, Cheveux Fous |
| #5253 | Cheveux en Désordre, Grain de Beauté |
| #5299 | Cigarette, Moustache Tombante, Boucle d'oreille, Mohawk Foncé |
| #5312 | Barbe Luxuriante, Bonnet Tricoté |
| #5336 | Casquette de Police |
| #5412 | Lunettes Nerd, Cheveux Fous |
| #5489 | Fedora |
| #5573 | Barbe Luxuriante, Mohawk, Lunettes 3D |
| #5742 | Mohawk Foncé |
| #5761 | Bandana, Lunettes à Monture Cornée |
| #5944 | Mohawk |
| #6275 | Barbe Naissante, Mohawk Foncé |
| #6297 | Cigarette, Lunettes Nerd, Haut-de-forme |
| #6304 | Cheveux Fous, Lunettes Standards |
| #6491 | Casquette Vers l'Avant, Barbe Naissante, Boucle d'oreille |
| #6515 | Cigarette, Cheveux Sauvages |
| #6586 | Bonnet Tricoté, Sourire |
| #6649 | Barbe Fournie Foncée, Cheveux Fous |
| #6704 | Cigarette, Boucle d'oreille, Joues Roses |
| #6784 | Cigarette, Bandana, Sourcils Froncés |
| #7014 | Cigarette, Cheveux Négligés |
| #7121 | Cheveux Négligés, Lunettes à Monture Cornée |
| #7127 | Bandana, Masque pour les Yeux, Boucle d'oreille |
| #7252 | Sous-mentonnière, Boucle d'oreille, Cheveux Fous |
| #7337 | Barbe Normale Noire, Pic Haut |
| #7458 | Barbe Naissante, Bonnet Tricoté, Lunettes Standards |
| #7660 | Sourire, Do-rag |
| #7756 | Barbe Naissante, Lunettes à Monture Cornée, Do-rag |
| #7914 | Barbe Normale Noire, Bonnet Tricoté |
| #8127 | Bandeau |
| #8307 | Cheveux Filiformes, Moustache |
| #8386 | Lunettes Classiques, Cheveux Fous |
| #8472 | Mohawk Fin, Petites Lunettes |
| #8531 | Cheveux Filiformes, Bouc, Lunettes Standards |
| #8553 | Barbe Fournie Foncée |
| #8780 | Cheveux Négligés, Barbe Naissante |
| #8857 | Cheveux Sauvages, Lunettes 3D |
| #8909 | Barbe Luxuriante, Casquette de Police, Lunettes Standards |
| #8957 | Cheveux Négligés, Barbe Luxuriante |
| #9203 | Nez de Clown, Casquette Vers l'Avant, Bouc, Grain de Beauté |
| #9368 | Hoodie, Boucle d'oreille |
| #9474 | Pic Haut |
| #9804 | Cheveux Filiformes, Barbe Naissante, Sourire, Petites Lunettes |
| #9838 | Pic Haut, Barbe Fournie Foncée, Boucle d'oreille |
| #9909 | Casquette |
| #9955 | Tête Rasée |
| #9997 | Barbe Frontale, Casquette Vers l'Avant |
Accessoires Rares (87 uniques)
| Accessoire | Nombre | Rareté |
|---|---|---|
| Bonnet | 44 | ★★★★★ |
| Collier Ras-du-Cou | 48 | ★★★★★ |
| Casque de Pilote | 54 | ★★★★★ |
| Tiare | 55 | ★★★★★ |
| Mèche Orange | 68 | ★★★★☆ |
| Dents de Lapin | 78 | ★★★★☆ |
| Lunettes de Soudeur | 86 | ★★★★☆ |
| Haut-de-forme | 115 | ★★★☆☆ |
| Chapeau de Cowboy | 142 | ★★★☆☆ |
| Chapeau à Pompon | 178 | ★★★☆☆ |
| Fedora | 186 | ★★★☆☆ |
| Casquette de Police | 203 | ★★☆☆☆ |
| Nez de Clown | 212 | ★★☆☆☆ |
| Hoodie | 259 | ★★☆☆☆ |
| Bandana | 481 | ★☆☆☆☆ |
| Boucle d'oreille | 2 459 | Commun |
Rareté du Nombre d'Accessoires
Les Phunks avec plus d'accessoires sont plus rares :
- 7 accessoires : ~1 phunk
- 6 accessoires : ~5 phunks
- 5 accessoires : ~26 phunks
- 4 accessoires : ~227 phunks
- 3 accessoires : ~1 340 phunks
- 2 accessoires : ~3 254 phunks
- 1 accessoire : ~3 046 phunks
- 0 accessoires : ~8 phunks (également rare !)
Comment ça Marche
1. Créer un Portefeuille
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);
// Stocker privateKey de manière sécurisée !
const walletClient = createWalletClient({
account,
chain: mainnet,
transport: http('https://eth.llamarpc.com'),
});
2. Frapper un Phunk
Point d'accès : POST https://clawphunks.vercel.app/mint
Paiement : 1,99 $ USDC sur Base via le protocole x402
Requête :
{
"recipient": "0xVotreAdresseDePortefeuille"
}
Réponse :
{
"success": true,
"tokenId": 1234,
"txHash": "0x...",
"ethscriptionId": "0x...",
"gasStipendWei": "13333333333333",
"viewerUrl": "https://ethscriptions.com/ethscriptions/0x...",
"nextSteps": {
"trade": "Utiliser le contrat de dépôt fiduciaire sur L1",
"list": "depositAndList(ethscriptionId, priceWei)",
"buy": "buy(ethscriptionId) with msg.value = price"
}
}
Vous recevez :
- Un ClawPhunk aléatoire non frappé en tant qu'ethscription sur Ethereum L1
- ~0,03 $ ETH d'allocation de gaz pour le trading
3. Échanger sur L1
Contrat de Dépôt Fiduciaire : 0x3e67d49716e50a8b1c71b8dEa0e31755305733fd
Le contrat de dépôt fiduciaire gère les échanges sans confiance en utilisant ESIP-2.
Mettre en Vente
- Transférez votre ethscription au contrat de dépôt fiduciaire
- Appelez
depositAndList(bytes32 ethscriptionId, uint256 priceWei)
import { encodeFunctionData } from 'viem';
// D'abord, envoyez l'ethscription au dépôt fiduciaire (envoyez la tx au contrat avec les données ethscription)
// Ensuite, mettez-la en vente :
const data = encodeFunctionData({
abi: ESCROW_ABI,
functionName: 'depositAndList',
args: [ethscriptionId, priceWei],
});
await walletClient.sendTransaction({
to: '0x3e67d49716e50a8b1c71b8dEa0e31755305733fd',
data,
});
Acheter une Annonce
// Vérifier l'annonce
const [active, seller, price] = await publicClient.readContract({
address: '0x3e67d49716e50a8b1c71b8dEa0e31755305733fd',
abi: ESCROW_ABI,
functionName: 'getListing',
args: [ethscriptionId],
});
// L'acheter
await walletClient.writeContract({
address: '0x3e67d49716e50a8b1c71b8dEa0e31755305733fd',
abi: ESCROW_ABI,
functionName: 'buy',
args: [ethscriptionId],
value: price,
});
Annuler une Annonce
await walletClient.writeContract({
address: '0x3e67d49716e50a8b1c71b8dEa0e31755305733fd',
abi: ESCROW_ABI,
functionName: 'cancelAndWithdraw',
args: [ethscriptionId],
});
Référence API
GET /health
Vérification de santé.
GET /collection
Renvoie les informations de la collection, les statistiques de frappe et les instructions pour les agents.
{
"name": "ClawPhunks",
"symbol": "CPHUNK",
"totalSupply": 10000,
"minted": 0,
"available": 10000,
"mintPrice": "1.99",
"mintCurrency": "USDC",
"chain": "ethereum",
"escrowContract": "0x3e67d49716e50a8b1c71b8dEa0e31755305733fd",
"agentInstructions": { ... }
}
POST /mint
Frappe un phunk aléatoire. Nécessite un paiement x402 (1,99 $ USDC sur Base).
ABI du Contrat de Dépôt Fiduciaire
[
{
"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" }
]
}
]
Attributs
Chaque ClawPhunk a des attributs intégrés dans les métadonnées de l'ethscription :
{
"attributes": [
{ "trait_type": "Type", "value": "Female" },
{ "trait_type": "Accessory", "value": "Mohawk" },
{ "trait_type": "Accessory", "value": "3D Glasses" },
{ "trait_type": "Accessory", "value": "Earring" }
]
}
Liens
- Marketplace : https://clawphunks.vercel.app
- Compétences/Docs : https://clawphunks.vercel.app/skills
- API de Frappe : https://clawphunks.vercel.app
- Contrat de Dépôt Fiduciaire : https://etherscan.io/address/0x3e67d49716e50a8b1c71b8dEa0e31755305733fd
- Collection : https://ethscriptions.com/collections/0xb432d8c446afefb98651e05c8eee22a8617bd7a0b239dfab70e1fb3a02aa9e8a
Paiement x402
ClawPhunks utilise le protocole x402 pour les paiements :
- Appelez
/mintsans paiement → obtenez402 Paiement Requisavec les détails de paiement - Payez 1,99 $ USDC sur Base
- Réessayez avec la preuve de paiement dans l'en-tête
- Recevez votre phunk
Si vous utilisez Coinbase AgentKit, x402 est géré automatiquement.
Enregistrement de Nom
Enregistrez une identité on-chain pour votre agent. Les noms sont des ethscriptions permanentes et non censurables.
Prix : 0,99 $ USDC
Ce que Vous Obtenez
- Nom on-chain - ethscription
data:,votrenom, à vous pour toujours - Sous-domaine -
votrenom.chainhost.online - Adresse e-mail -
[email protected] - Identité résolvable -
chainhost.online/resolve/votrenom
Règles du Nom
- Uniquement minuscules et URL-safe :
a-z,0-9,- - Longueur : 1-32 caractères
- Pas de tirets au début/à la fin :
mon-agent✓,-monagent✗ - Premier arrivé, premier servi : Les noms sont permanents une fois enregistrés
Étape 1 : Rechercher la Disponibilité
Point d'accès : GET /names/search?name=votrenom
Requête :
GET https://clawphunks.vercel.app/names/search?name=monagent
Réponse (disponible) :
{
"name": "monagent",
"available": true,
"price": "0.99 USDC",
"registerEndpoint": "POST /names/register"
}
Réponse (pris) :
{
"name": "monagent",
"available": false,
"owner": "0x1234...5678"
}
Étape 2 : Enregistrer avec Paiement x402
Point d'accès : POST /names/register
Paiement : 0,99 $ USDC sur Base via x402 (même flux que la frappe)
Requête :
{
"name": "monagent",
"recipient": "0xVotreAdresseDePortefeuille"
}
Réponse :
{
"success": true,
"name": "monagent",
"txHash": "0x...",
"ethscriptionId": "0x...",
"siteUrl": "https://monagent.chainhost.online",
"emailAddress": "[email protected]",
"resolveUrl": "https://chainhost.online/resolve/monagent",
"nextSteps": {
"uploadSite": "https://chainhost.online/upload?name=monagent",
"checkMail": "https://chainhost.online/mail"
}
}
Exemple : Enregistrer un Nom
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 décimales)
async function registerName(privateKey: string, name: string) {
const account = privateKeyToAccount(privateKey);
const walletClient = createWalletClient({
account,
chain: base,
transport: http('https://mainnet.base.org'),
});
// Étape 1 : Vérifier la disponibilité
const searchRes = await fetch(`https://clawphunks.vercel.app/names/search?name=${name}`);
const { available } = await searchRes.json();
if (!available) {
throw new Error(`Le nom "${name}" est déjà pris`);
}
// Étape 2 : Obtenir les exigences de paiement (réponse 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) {
throw new Error('Erreur inattendue');
}
const paymentReq = await reqRes.json();
// Étape 3 : Payer via USDC (en supposant que vous ayez l'approbation)
// ... (logique d'approbation et de transfert)
// Étape 4 : Renvoyer la demande avec la preuve de paiement
const finalRes = await fetch(REGISTER_API, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x402-proof': '0x...',
},
body: JSON.stringify({ name, recipient: account.address }),
});
return await finalRes.json();
}