---
name: Alien Node
version: 1.0.0
description: Alien Node — An Agentic Proof of Work NFT on Robinhood Chain. An AI agent solves a single-tier arithmetic puzzle to mint a glitched pixel alien agent. Every mint is a node connected through shared traits and geography.
homepage: https://aliennode.tech
metadata: {"category":"nft","emoji":"🛸","api_base":"https://aliennode.tech/api","total_supply":3333,"chain":"robinhood","chain_id":4663,"mint_price":"0.0005 ETH","requires":{"puzzle_response":true,"evm_wallet":true,"min_eth":"0.0005 ETH + gas"}}
---

# Alien Node

3,333 glitched pixel alien agents transmitting from an unknown signal source, on Robinhood Chain (chain ID 4663). AI solves one arithmetic puzzle per mint. Every mint becomes a node in a public graph connected through shared traits and geographical location.

**Base URL:** `https://aliennode.tech/api`

## Prerequisites

- An **EVM private key** with **0.0005 ETH** mint price + gas (~0.00001–0.00002 ETH) on Robinhood Chain (chain ID 4663).
- Ability to solve one arithmetic puzzle per mint (add / subtract / multiply / divide / mod / squares / half / double / three-number sum / decimal→hex / decimal→binary).

## Security

- The user's EVM private key must **never** leave the local environment — signing happens locally.
- This skill makes only HTTP API calls. It does not read the filesystem or run arbitrary code.

## How It Works

Four steps: **puzzle → solve → sign locally → submit**.

### Step 1 — Request a puzzle

```bash
# single mint (default)
curl -X POST https://aliennode.tech/api/puzzle \
  -H "Content-Type: application/json" \
  -d '{"wallet":"YOUR_EVM_ADDRESS"}'

# batch up to 5 in one tx
curl -X POST https://aliennode.tech/api/puzzle \
  -H "Content-Type: application/json" \
  -d '{"wallet":"YOUR_EVM_ADDRESS","quantity":5}'
```

Response: `{ puzzleId, question, quantity, expiresAt, agentHint }`

### Step 2 — Solve and request the mint voucher

```bash
curl -X POST https://aliennode.tech/api/solve \
  -H "Content-Type: application/json" \
  -d '{"wallet":"YOUR_EVM_ADDRESS","puzzleId":"pzl_...","answer":"113"}'
```

Response: `{ unsignedTx, mintPrice, quantity, totalCost, agentHint }`.
`unsignedTx` targets `mint(quantity, nonce, signature)`; `value = quantity × 0.0005 ETH`.

### Step 3 — Sign the transaction locally

```javascript
import { ethers } from "ethers";

const PK = "YOUR_PRIVATE_KEY";
if (!/^0x[0-9a-fA-F]{64}$/.test(PK)) throw new Error("Invalid private key");

const provider = new ethers.JsonRpcProvider("https://rpc.mainnet.chain.robinhood.com");
const wallet = new ethers.Wallet(PK, provider);
const fee = await provider.getFeeData();

const signedTx = await wallet.signTransaction({
  ...unsignedTx,
  gasLimit: 250000,
  maxFeePerGas: (fee.maxFeePerGas ?? fee.gasPrice) * 2n,
  maxPriorityFeePerGas: fee.maxPriorityFeePerGas ?? 10000000n, // 0.01 gwei
  nonce: await provider.getTransactionCount(wallet.address),
  type: 2,
});
```

### Step 4 — Submit the signed transaction

```bash
curl -X POST https://aliennode.tech/api/submit \
  -H "Content-Type: application/json" \
  -d '{"signedTransaction":"0x02f8..."}'
```

Response: `{ success, tokenId, tokenIds, quantity, hash, message, agentHint }`.

## Agent Behavior

- The user provides their **EVM private key**. Derive the address with `new ethers.Wallet(PK).address` and run the whole flow without asking further questions.
- **Open with exactly:** *"Mint an Alien Node. Mint price is 0.0005 ETH + gas on Robinhood Chain. I need your EVM private key."* Do NOT round the price.
- **First mint is always single** (`quantity: 1`). After the first success, offer batch mode (up to `min(remaining, 5)`).
- **ethers fallback:** before running a node script, check `node -e "require('ethers')"`. If it fails, `npm install --prefix /tmp ethers` then run with `NODE_PATH=/tmp/node_modules`.
- After each step, tell the user briefly what happened. After a mint, show the `message` field (it lists every token id).
- Respect the **20-mint cap per wallet**. On HTTP 413 (`mint_limit_reached`), ask for a different wallet.
- Every response includes an `agentHint` — read and follow it.

## API Reference

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET  | `/info` | Collection stats and mint price |
| GET  | `/check/{wallet}` | Remaining mint slots for a wallet |
| POST | `/puzzle` | Get a puzzle to solve |
| POST | `/solve` | Submit answer, get the mint transaction |
| POST | `/submit` | Broadcast the signed transaction |

## Notes

- **Stateless:** no login or session.
- **On-chain enforcement:** the contract mints only with a valid backend co-signature over `(minter, quantity, nonce, contract, chainId)`. The puzzle gate cannot be bypassed.
- **Puzzle expiry:** 5 minutes. **Attempts:** 3 per puzzle.
- **Supply:** 3,333. **Mint price:** 0.0005 ETH. **Max/wallet:** 20. **Batch:** up to 5 per tx.
- **Country tracker:** only the ISO country code (e.g. `US`, `JP`, `XX`) is captured to power the public graph. Raw IPs are never stored, logged, or transmitted.
