Warren NFT Deploy(mainnet)
by @planetai87
Deploy NFT collections permanently on MegaETH mainnet. Images are stored on-chain via SSTORE2, then published through WarrenContainer and WarrenLaunchedNFT.
clawhub install warren-nft-mainnetπ About This Skill
name: warren-nft description: Deploy NFT collections permanently on MegaETH mainnet. Images are stored on-chain via SSTORE2, then published through WarrenContainer and WarrenLaunchedNFT. metadata: {"openclaw":{"emoji":"πΌοΈ","homepage":"https://thewarren.app","source":"https://github.com/planetai87/warren-tools","requires":{"anyBins":["node"],"env":["PRIVATE_KEY"]},"primaryEnv":"PRIVATE_KEY"}} user-invocable: true
Warren NFT - On-Chain NFT Collection Deployment
Deploy complete NFT collections with permanent on-chain image storage on MegaETH mainnet.
Network: MegaETH Mainnet (Chain ID: 4326)
RPC: https://mainnet.megaeth.com/rpc
Explorer: https://megaeth.blockscout.com
How It Works
Your Images β SSTORE2 (on-chain) β WarrenContainer β WarrenLaunchedNFT
/images/1.png tokenURI renders
/images/2.png images on-chain
...
1. Each image is deployed as a Page contract (fractal tree for larger files).
2. All images are stored in a WarrenContainer NFT at /images/1.png, /images/2.png, etc.
3. A WarrenLaunchedNFT contract is deployed referencing the container.
4. Collection is registered for management and mint pages.
Setup (One Time)
cd {baseDir}
bash setup.sh
Prerequisites
1. Wallet + MegaETH ETH
Bridge ETH from Ethereum to MegaETH mainnet for gas.
Approximate cost:
2. Genesis Access Requirement
The script checks in this order:
1. Human Genesis Key (0xRabbitNeo) 2. 0xRabbit.agent Key 3. Auto-mint 0xRabbit.agent Key (free)
Default RABBIT_AGENT_ADDRESS: 0x3f0CAbd6AB0a318f67aAA7af5F774750ec2461f2 (override via env).
If you override or unset it, mint a human key:
Contract Addresses (Mainnet)
| Contract | Address |
|----------|---------|
| Genesis Key NFT (0xRabbitNeo) | 0x0d7BB250fc06f0073F0882E3Bf56728A948C5a88 |
| 0xRabbit.agent Key NFT | 0x3f0CAbd6AB0a318f67aAA7af5F774750ec2461f2 |
| WarrenContainer | 0x65179A9473865b55af0274348d39E87c1D3d5964 |
| WarrenContainerRenderer | 0xdC0c76832a6fF9F9db64686C7f04D7c0669366BB |
| Treasury/Relayer | 0xcea9d92ddb052e914ab665c6aaf1ff598d18c550 |
Environment Variables
| Variable | Required | Default | Purpose |
|----------|----------|---------|---------|
| PRIVATE_KEY | Yes | β | Wallet private key for signing transactions |
| RPC_URL | No | https://mainnet.megaeth.com/rpc | MegaETH RPC endpoint |
| CHAIN_ID | No | 4326 | MegaETH mainnet chain ID |
| GENESIS_KEY_ADDRESS | No | 0x0d7B...5a88 | Genesis Key NFT contract |
| RABBIT_AGENT_ADDRESS | No | 0x3f0C...61f2 | 0xRabbit.agent NFT contract |
| CONTAINER_ADDRESS | No | 0x6517...5964 | WarrenContainer contract |
| RENDERER_ADDRESS | No | 0xdC0c...6BB | WarrenContainerRenderer contract |
| TREASURY_ADDRESS | No | 0xcea9...8c550 | Treasury/relayer address |
| REGISTER_API | No | https://thewarren.app/api/container-nfts | Collection registration endpoint (see Security) |
| CHUNK_SIZE | No | 15000 | Bytes per chunk (15KB) |
| GROUP_SIZE | No | 500 | Max addresses per tree node |
Deploy NFT Collection
Option 1: From Image Folder
cd {baseDir}
PRIVATE_KEY=0x... node deploy-nft.js \
--images-folder ./my-art/ \
--name "Cool Robots" \
--symbol "ROBOT" \
--description "100 unique robot NFTs on-chain" \
--max-supply 100
Option 2: Auto-Generate SVG Art
cd {baseDir}
PRIVATE_KEY=0x... node deploy-nft.js \
--generate-svg 10 \
--name "Generative Art" \
--symbol "GART" \
--description "AI-generated on-chain art"
Full Configuration
PRIVATE_KEY=0x... node deploy-nft.js \
--images-folder ./collection/ \
--name "Cyber Punks" \
--symbol "CPUNK" \
--description "On-chain cyberpunk collection" \
--max-supply 1000 \
--whitelist-price 0.01 \
--public-price 0.02 \
--max-per-wallet 5 \
--royalty-bps 500
CLI Options
| Option | Required | Default | Description |
|--------|----------|---------|-------------|
| --images-folder | * | - | Folder with image files |
| --generate-svg | * | - | Generate random SVG art (1-256) |
| --name | Yes | - | Collection name |
| --symbol | Yes | - | Collection symbol (3-5 chars) |
| --description | No | Auto | Collection description |
| --max-supply | No | Image count | Maximum mintable NFTs |
| --whitelist-price | No | 0 | Whitelist mint price in ETH |
| --public-price | No | 0 | Public mint price in ETH |
| --max-per-wallet | No | 10 | Mint limit per wallet |
| --royalty-bps | No | 500 | Royalty (500 = 5%, max 1000 = 10%) |
\* Either --images-folder or --generate-svg is required.
Output
NFT Collection Deployed!NFT Contract: 0xABC...
Container ID: 15
Image Count: 10
Max Supply: 100
Public Price: 0 ETH (Free)
Management: https://thewarren.app/launchpad/0xABC.../
Mint Page: https://thewarren.app/launchpad/0xABC.../mint
Image Requirements
Example Workflows
Quick Test (3 SVGs)
cd {baseDir}
PRIVATE_KEY=0x... node deploy-nft.js --generate-svg 3 --name "Quick Test" --symbol "QT"
Medium Test (20 SVGs)
cd {baseDir}
PRIVATE_KEY=0x... node deploy-nft.js --generate-svg 20 --name "Art Collection" --symbol "ART" --public-price 0.001
Full Collection (100 SVGs)
cd {baseDir}
PRIVATE_KEY=0x... node deploy-nft.js --generate-svg 100 --name "Century" --symbol "C100" --max-per-wallet 3
Troubleshooting
"No ETH balance"
"No Genesis Key found and RABBIT_AGENT_ADDRESS is not configured"
RABBIT_AGENT_ADDRESS=0x3f0CAbd6AB0a318f67aAA7af5F774750ec2461f2, or mint human key at https://thewarren.app/mint."Image exceeds 500KB"
"Too many images"
DB registration warning
Notes
Security & Privacy
RPC_URL (default: mainnet.megaeth.com/rpc) and REGISTER_API.thewarren.app/api/container-nfts for management page registration. This is optional and non-critical β the on-chain collection works without it. No images or private keys are sent. Override with REGISTER_API env var or set to empty to disable.--images-folder. No access outside that directory.βοΈ Configuration
1. Wallet + MegaETH ETH
Bridge ETH from Ethereum to MegaETH mainnet for gas.
Approximate cost:
2. Genesis Access Requirement
The script checks in this order:
1. Human Genesis Key (0xRabbitNeo) 2. 0xRabbit.agent Key 3. Auto-mint 0xRabbit.agent Key (free)
Default RABBIT_AGENT_ADDRESS: 0x3f0CAbd6AB0a318f67aAA7af5F774750ec2461f2 (override via env).
If you override or unset it, mint a human key: