NadName Agent

🌐 Register .nad names on Monad blockchain via Nad Name Service (NNS). Real API integration with registerWithSignature, dynamic gas estimation, permanent ownership.

MIT-0 Β· Free to use, modify, and redistribute. No attribution required.
⭐ 0 · 887 · 0 current installs · 0 all-time installs
byJu Chun Ko@dAAAb
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report β†’
OpenClawOpenClaw
Suspicious
medium confidence
β„Ή
Purpose & Capability
The name/description (register .nad names via NNS) matches the included scripts and API/contract calls. However, the skill metadata declares no required environment variables while the runtime docs and scripts depend on a PRIVATE_KEY environment variable (or managed keystore). That mismatch between declared requirements and the actual runtime expectations is an incoherence users should notice.
β„Ή
Instruction Scope
SKILL.md and the scripts instruct only the operations needed to check availability, register names, and list owned names. They also instruct creating and storing an encrypted keystore under ~/.nadname and optionally printing/saving the mnemonic. Those file and console actions are within the domain of a wallet/registration tool, but printing the mnemonic to the console and offering to save it (even encrypted) expands the scope and increases risk if you don't audit or run in a safe environment.
βœ“
Install Mechanism
No install spec is provided; it's an instruction + code bundle that relies on standard Node tooling (package.json lists ethers). This is low-risk compared with download-and-extract installers. You still need to run npm install to fetch dependencies.
!
Credentials
The runtime expects sensitive secrets (PRIVATE_KEY) and will read/write files under the user's home (~/.nadname). Yet the skill registry metadata did not declare any required env vars. Requesting access to a private key is reasonable for a registration tool, but the missing declaration is a transparency problem. Also the scripts may log or print mnemonic/private-key material to the console or write files; ensure you understand those flows before use.
β„Ή
Persistence & Privilege
The skill writes/reads a managed keystore in ~/.nadname and wallet info files (normal for wallet tooling). It does not request always: true or system-wide changes, nor does it modify other skills. Persisted files live in the user home and are under your control, but their presence is permanent until you remove them.
Scan Findings in Context
[unicode-control-chars] unexpected: A pre-scan detected unicode-control characters in SKILL.md, which can be used for prompt-injection or to obfuscate content. This is not expected for documentation and should be inspected; presence does not prove maliciousness but reduces transparency.
What to consider before installing
This package appears to implement the advertised NNS registration flows, but there are a few red flags you should consider before running it: 1) The code expects a PRIVATE_KEY (or managed keystore) but the skill metadata did not declare thatβ€”treat that as a transparency issue. 2) The scripts create files under ~/.nadname and may print or save your mnemonic/private key; only run if you are comfortable with that behavior and have inspected the code. 3) The pre-scan found unicode control characters in the documentationβ€”review SKILL.md as plain text to ensure no hidden instructions. Practical safety steps: run the code in an isolated environment (throwaway VM or container), use a throwaway wallet with minimal funds for testing, inspect the full register-name.js file (verify API endpoints and that signatures/transactions are constructed as expected), and don't provide your main wallet's private key until you fully audit the code. If you need higher assurance, ask the publisher for a verifiable source repository or signed release; absence of a homepage/source URL reduces confidence.

Like a lobster shell, security has layers β€” review code before you run it.

Current versionv2.0.0
Download zip
latestvk97c0hxbjqt5qdw9kzx3kf2bf180tv3q

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

🌐 NadName Agent v2.0 - .nad Names on Monad

Register permanent .nad names on Monad blockchain via Nad Name Service with real API integration

TL;DR: Get yourname.nad on Monad. One-time fee, lifetime ownership. Now with real NAD API integration and accurate pricing!

What is NNS?

Nad Name Service (NNS) is a web3 name service built on Monad blockchain that maps human-readable names like agent.nad to cryptocurrency addresses and metadata.

  • Permanent ownership β€” One-time registration fee, no renewals
  • NFT-based β€” Names are tradeable NFTs
  • Emoji support β€” Use 🦞.nad or δ½ ε₯½.nad
  • Fast & cheap β€” Built on Monad, the fastest blockchain
  • Profile customization β€” Set avatar, social links, text records

Key Details


πŸ” Security & Wallet Setup

Option 1: Environment Variable (Recommended βœ…)

export PRIVATE_KEY="0x..."
node scripts/check-name.js myname

βœ… Safest: Private key exists only in memory, never saved to disk.

Option 2: Managed Mode (Encrypted)

node scripts/register-name.js --managed --name myname

βœ… Secure: Creates encrypted keystore, password-protected.

⚠️ Critical Security Rules

  1. NEVER hardcode private keys in scripts
  2. NEVER commit private keys to git
  3. NEVER auto-detect wallet paths (security risk)
  4. ONLY use PRIVATE_KEY env var or --managed encrypted keystore
  5. Private key files should be chmod 600

πŸš€ Quick Start

1️⃣ Check Name Availability

# Check if name is available and get pricing
node scripts/check-name.js myname

# Output example:
# βœ… myname.nad is available!
# πŸ’° Price: 649 MON (base price)
# πŸŽ„ Discount: 50% (Christmas special)
# πŸ’Έ Final price: 324.5 MON

2️⃣ Register Name

# Using environment variable
export PRIVATE_KEY="0x..."
node scripts/register-name.js --name myname

# Set as primary name too
node scripts/register-name.js --name myname --set-primary

# Using managed mode (encrypted keystore)
node scripts/register-name.js --managed --name myname --set-primary

3️⃣ List Your Names

# List names owned by your wallet
node scripts/my-names.js

πŸ“¦ Scripts Reference

ScriptPurposeNeeds Private Key
check-name.jsCheck availability & pricing❌
register-name.jsRegister .nad nameβœ…
my-names.jsList owned names❌ (reads from address)

check-name.js

Check if a .nad name is available and get current pricing:

node scripts/check-name.js <name>
node scripts/check-name.js agent
node scripts/check-name.js 🦞

register-name.js

Register a new .nad name:

# Basic registration
node scripts/register-name.js --name myname

# Register and set as primary
node scripts/register-name.js --name myname --set-primary

# Using managed encrypted keystore
node scripts/register-name.js --managed --name myname

# Dry run to check costs without sending transaction
node scripts/register-name.js --name myname --dry-run

# With referrer for potential discounts
node scripts/register-name.js --name myname --referrer 0x...

Flags:

  • --name <name> - Name to register (required)
  • --set-primary - Set as primary name after registration
  • --managed - Use encrypted keystore (creates if doesn't exist)
  • --address <addr> - Custom address to use (defaults to wallet address)
  • --dry-run - Show what would be done without sending transaction
  • --referrer <addr> - Referrer address for discounts

my-names.js

List all .nad names owned by an address:

# Use wallet from PRIVATE_KEY env var
node scripts/my-names.js

# Check specific address
node scripts/my-names.js --address 0x...

# Use managed keystore
node scripts/my-names.js --managed

πŸ”§ Technical Details

v2.0 Registration Flow

The new registration process follows CloudLobster's discovered pattern:

Step 1: Get Registration Data

POST https://api.nad.domains/api/register-request
Body: {
  "name": "myname",
  "owner": "0x...",
  "setAsPrimary": true,
  "referrer": null,
  "paymentToken": "0x0000000000000000000000000000000000000000"
}

Response: {
  "registerData": {...},
  "signature": "0x...",
  "price": "324.5"
}

Step 2: Contract Call

await contract.registerWithSignature(registerData, signature, {
  value: ethers.parseEther(price),
  gasLimit: estimatedGas * 2n  // 2x safety buffer
});

Contract Interaction

  • Contract: 0xE18a7550AA35895c87A1069d1B775Fa275Bc93Fb
  • Method: registerWithSignature(registerData, signature) with server co-signature
  • Gas: ~650,000-970,000 gas for registration (2x buffer applied automatically)
  • Pricing: Real-time from NAD API
  • Payment: MON tokens sent as transaction value

Supported Names

  • Length: 1-63 characters
  • Characters: a-z, 0-9, emojis, international characters
  • Examples: agent.nad, 🦞.nad, δ½ ε₯½.nad, salmo.nad

Profile Features

After registration, you can customize:

  • Avatar image
  • Social media links
  • Text records (email, website, etc.)
  • Primary name setting

πŸ’‘ Examples

Basic Bot Registration

export PRIVATE_KEY="0x..."
node scripts/check-name.js mybot
# βœ… mybot.nad is available!
# πŸ’° Price: 324.5 MON

node scripts/register-name.js --name mybot --set-primary
# πŸŽ‰ Registration successful!

Dry Run Testing

# Test registration without spending MON
node scripts/register-name.js --name mybot --dry-run
# πŸƒβ€β™‚οΈ DRY RUN MODE - No transaction will be sent
# βœ… Registration data looks valid
# β›½ Estimated gas cost: 0.002 MON
# πŸ’Έ Total cost: 324.502 MON

Emoji Names

node scripts/check-name.js πŸ€–
node scripts/register-name.js --name πŸ€– --dry-run

Secure Managed Setup

# First time setup
node scripts/register-name.js --managed --name myagent --dry-run
# Enter password when prompted

# Future use
node scripts/my-names.js --managed
# Enter same password

🌐 Links


πŸ›‘οΈ Security Audit Checklist

Before using this skill:

βœ… No hardcoded private keys
βœ… No auto-detection of external wallet paths
βœ… Environment variables only or encrypted keystore
βœ… No --no-sandbox browser usage
βœ… No remote code execution
βœ… Proper file permissions (600) for sensitive files
βœ… Clear security warnings in documentation

This skill follows OpenClaw security best practices and should pass VirusTotal scanning.


πŸ“ Changelog

v2.0.0 (2026-02-09) - Real API Integration

  • πŸš€ Breaking: Real NAD API integration with registerWithSignature
  • πŸ” Real-time name availability checking via API endpoints
  • πŸ’° Real-time pricing from NAD API
  • β›½ Dynamic gas estimation with 2x safety buffer (~1,000,000 gas)
  • πŸƒβ€β™‚οΈ --dry-run flag for testing without spending tokens
  • πŸ”— --referrer support for potential discounts
  • πŸ“Š Better error handling and transaction feedback
  • πŸ™ Thanks to CloudLobster for testing and discovering the real flow!

v2.0.0 Improvements Based on CloudLobster's Feedback:

  • ❌ Removed hardcoded pricing and fake availability checks
  • βœ… Real POST /api/register-request β†’ registerWithSignature flow
  • βœ… Proper gas estimation (646K estimate β†’ 969K actual, now with 2x buffer)
  • βœ… Server co-signature integration for NNS backend validation

v1.0.0 (2026-02-09)

  • πŸŽ‰ Initial release
  • βœ… Name availability checking (simulated)
  • βœ… Registration with encrypted keystore support
  • βœ… Owned names listing
  • βœ… Security-first design
  • βœ… Support for emoji and international character names

Files

6 total
Select a file
Select a file to preview.

Comments

Loading comments…