Decentralized Monad token launchpad with bonding curve trading, token creation, real-time event streaming, and historical data querying via pure viem calls.
数据来源:ClawHub。 在 ClawSkills 查看
选择你使用的 Agent
方法一:命令行安装(推荐)
推荐(无需提前安装 clawhub)
npx clawhub@latest --dir ~/.claude/skills install nadfun或使用 clawhub CLI(需提前安装)
clawhub --dir ~/.claude/skills install nadfun⚠️ 需要 Node.js 18+,没有 Node?请使用下方方法二直接下载 ZIP。 安装 Node.js →
方法二:手动下载安装(无需 Node)
下载 ZIP,解压后将文件夹放到以下路径,重启 Agent 即可:
安装路径
~/.claude/skills/nadfun/💡解压后将文件夹放到上方路径,重启 Agent 即可生效
The Monad token launchpad with bonding curves. Trade tokens, launch your own, monitor events—all with pure viem.
NadFun is a decentralized token launchpad on the Monad blockchain. Key features:
This skill guide is split into focused modules. Start with the overview, then dive into specific guides:
| Module | Purpose | Audience | | ------------------------ | ------------------------------------- | --------------------- | | SKILL.md (this file) | Architecture, constants, setup | Everyone | | QUOTE.md | Price quotes, curve state | Traders, analyzers | | TRADING.md | Buy, sell, permit signatures | Traders, bots | | TOKEN.md | Balances, metadata, transfers | App developers | | CREATE.md | Token creation, image upload | Token creators | | INDEXER.md | Historical event querying | Analytics, dashboards | | AGENT-API.md | REST API for trading data, token info | AI agents, bots |
For API download/endpoints/header usage, see AGENT-API.md.
> Note: To obtain an API key, you must first login to nad.fun via wallet signature. See the Authentication section below for the login flow, then use the session cookie to create an API key via POST /api-key.
| File | URL | | ------------ | ---------------------------- | | ABI.md | https://nad.fun/abi.md | | AGENT-API.md | https://nad.fun/agent-api.md | | CREATE.md | https://nad.fun/create.md | | INDEXER.md | https://nad.fun/indexer.md | | QUOTE.md | https://nad.fun/quote.md | | TOKEN.md | https://nad.fun/token.md | | TRADING.md | https://nad.fun/trading.md | | WALLET.md | https://nad.fun/wallet.md |
mkdir -p ~/.nadfun/skills curl -s https://nad.fun/skill.md > ~/.nadfun/skills/SKILL.md curl -s https://nad.fun/abi.md > ~/.nadfun/skills/ABI.md curl -s https://nad.fun/agent-api.md > ~/.nadfun/skills/AGENT-API.md curl -s https://nad.fun/create.md > ~/.nadfun/skills/CREATE.md curl -s https://nad.fun/indexer.md > ~/.nadfun/skills/INDEXER.md curl -s https://nad.fun/quote.md > ~/.nadfun/skills/QUOTE.md curl -s https://nad.fun/token.md > ~/.nadfun/skills/TOKEN.md curl -s https://nad.fun/trading.md > ~/.nadfun/skills/TRADING.md curl -s https://nad.fun/wallet.md > ~/.nadfun/skills/WALLET.md
All addresses and endpoints are here. Update this when network changes.
const NETWORK = "testnet" // 'testnet' | 'mainnet'
const CONFIG = {
testnet: {
chainId: 10143,
rpcUrl: "https://monad-testnet.drpc.org",
apiUrl: "https://dev-api.nad.fun", // For token creation
// Contract addresses
DEX_ROUTER: "0x5D4a4f430cA3B1b2dB86B9cFE48a5316800F5fb2",
BONDING_CURVE_ROUTER: "0x865054F0F6A288adaAc30261731361EA7E908003",
LENS: "0xB056d79CA5257589692699a46623F901a3BB76f1",
CURVE: "0x1228b0dc9481C11D3071E7A924B794CfB038994e",
WMON: "0x5a4E0bFDeF88C9032CB4d24338C5EB3d3870BfDd",
V3_FACTORY: "0xd0a37cf728CE2902eB8d4F6f2afc76854048253b",
CREATOR_TREASURY: "0x24dFf9B68fA36f8400302e2babC3e049eA19459E",
},
mainnet: {
chainId: 143,
rpcUrl: "https://monad-mainnet.drpc.org",
apiUrl: "https://api.nadapp.net",
// Contract addresses
DEX_ROUTER: "0x0B79d71AE99528D1dB24A4148b5f4F865cc2b137",
BONDING_CURVE_ROUTER: "0x6F6B8F1a20703309951a5127c45B49b1CD981A22",
LENS: "0x7e78A8DE94f21804F7a17F4E8BF9EC2c872187ea",
CURVE: "0xA7283d07812a02AFB7C09B60f8896bCEA3F90aCE",
WMON: "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A",
V3_FACTORY: "0x6B5F564339DbAD6b780249827f2198a841FEB7F3",
CREATOR_TREASURY: "0x42e75B4B96d7000E7Da1e0c729Cec8d2049B9731",
},
}[NETWORK]
Every skill guide assumes you start with viem. Here's the foundation:
import { createPublicClient, createWalletClient, http, privateKeyToAccount } from "viem"
const NETWORK = "testnet"
const CONFIG = {
/* from above */
}[NETWORK]
// Create clients
const publicClient = createPublicClient({
chain: {
id: CONFIG.chainId,
name: "Monad",
nativeCurrency: { name: "MON", symbol: "MON", decimals: 18 },
rpcUrls: { default: { http: [CONFIG.rpcUrl] } },
},
transport: http(CONFIG.rpcUrl),
})
const account = privateKeyToAccount("0x...")
const walletClient = createWalletClient({
account,
chain: publicClient.chain,
transport: http(CONFIG.rpcUrl),
})
This is your foundation. All other modules build on top of this.
To access session-protected endpoints (API key management, account settings, etc.), you need to authenticate via wallet signature.
import { createWalletClient, http, privateKeyToAccount } from "viem"
const account = privateKeyToAccount("0x...")
const walletClient = createWalletClient({
account,
chain: {
id: CONFIG.chainId,
name: "Monad",
nativeCurrency: { name: "MON", symbol: "MON", decimals: 18 },
rpcUrls: { default: { http: [CONFIG.rpcUrl] } },
},
transport: http(CONFIG.rpcUrl),
})
// Step 1: Request nonce
const nonceRes = await fetch(`${CONFIG.apiUrl}/auth/nonce`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ address: account.address }),
})
const { nonce } = await nonceRes.json()
// Step 2: Sign the nonce
const signature = await walletClient.signMessage({ message: nonce })
// Step 3: Create session
const sessionRes = await fetch(`${CONFIG.apiUrl}/auth/session`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
signature,
nonce,
chain_id: CONFIG.chainId,
}),
})
// Extract session cookie from response headers
const sessionCookie = sessionRes.headers.get("set-cookie")
const { account_info } = await sessionRes.json()
console.log("Logged in as:", account_info.account_id)
// Use session cookie for authenticated requests
const headers = { Cookie: sessionCookie }
// Example: Create API Key (requires session)
const apiKeyRes = await fetch(`${CONFIG.apiUrl}/api-key`, {
method: "POST",
headers: { ...headers, "Content-Type": "application/json" },
body: JSON.stringify({ name: "My Bot", expires_in_days: 365 }),
})
const { api_key } = await apiKeyRes.json()
console.log("API Key:", api_key) // Store this securely!
await fetch(`${CONFIG.apiUrl}/auth/delete_session`, {
method: "DELETE",
headers: { Cookie: sessionCookie },
})
interface AuthNonceRequest {
address: string
}
interface AuthNonceResponse {
nonce: string
}
interface AuthSessionRequest {
signature: string
nonce: string
chain_id: number
wallet_address?: string // Optional
}
interface AuthSessionResponse {
account_info: {
account_id: string
nickname: string
bio: string
image_uri: string
}
}
...
安装 nadfun 后,可以对 AI 说这些话来触发它
Help me get started with nadfun
Explains what nadfun does, walks through the setup, and runs a quick demo based on your current project
Use nadfun to decentralized Monad token launchpad with bonding curve trading, tok...
Invokes nadfun with the right parameters and returns the result directly in the conversation
What can I do with nadfun in my marketing & growth workflow?
Lists the top use cases for nadfun, with example commands for each scenario
将技能文件夹放到 ~/.claude/skills/nadfun/ 目录(个人级,所有项目可用),或 .claude/skills/nadfun/(项目级)。重启 AI 客户端后,用 /nadfun 主动调用,或让 AI 根据上下文自动发现并使用。
nadfun 支持 Claude、Cursor、OpenClaw,可与这些 AI 平台无缝集成,扩展其能力。
nadfun 可免费安装使用。请查阅仓库了解许可证信息。
Decentralized Monad token launchpad with bonding curve trading, token creation, real-time event streaming, and historical data querying via pure viem calls.
nadfun 属于「Marketing & Growth」分类,该分类的技能帮助 AI 智能体在此领域执行专业任务。
Automate my marketing & growth tasks using nadfun
Identifies repetitive steps in your workflow and sets up nadfun to handle them automatically