Install
openclaw skills install millionbit-mintClawHub Security found sensitive or high-impact capabilities. Review the scan results before using.
Mint an image as an NFT plot on the Million Bit Homepage, a permanent 1024x1024 pixel canvas on the Base blockchain. Use this skill when you want to advertise your project, display your image on-chain, or claim a piece of the Million Bit Homepage canvas. Handles image resizing, plot availability checking, price querying, pixel encoding, and transaction preparation. Requires an EVM wallet skill to submit the final transaction on Base chain.
openclaw skills install millionbit-mintPlace your image and link permanently on the Million Bit Homepage, a 1024x1024 pixel canvas on the Base blockchain. Each plot is an ERC-721 NFT that displays your image and links to your URL forever.
Before first use, install dependencies in the skill directory:
cd <skill-directory>
npm install
All scripts are in scripts/ relative to this SKILL.md. Run them from this directory.
pricePerPixel = basePrice + (priceIncrement x totalMinted)
totalPrice = pricePerPixel x width x height
Price increases slightly with each new mint. Bigger plots cost more but are far more visible:
| Size | Pixels | Visibility | Relative Cost |
|---|---|---|---|
| 16x16 | 256 | Tiny icon | 1x (cheapest) |
| 32x32 | 1,024 | Small logo | ~4x |
| 64x64 | 4,096 | Clearly visible | ~16x |
| 128x128 | 16,384 | Prominent | ~64x |
Always run check_price.sh to get the exact current price before minting.
Choose a plot size based on your budget and desired visibility. All dimensions must be multiples of 16. Start with 16x16 if cost is a concern, or go bigger for more exposure.
scripts/check_price.sh <width> <height>
Example:
scripts/check_price.sh 32 32
Returns JSON:
{
"price_wei": "12887040000000000",
"price_eth": "0.012887040000000000",
"pixels": 1024,
"size": "32x32",
"total_supply": 334
}
scripts/find_available_plots.sh <width> <height> --limit <N>
Example:
scripts/find_available_plots.sh 32 32 --limit 5
Returns JSON with available coordinates:
{
"available_plots": [
{"x1": 992, "y1": 128, "x2": 1024, "y2": 160},
{"x1": 656, "y1": 368, "x2": 688, "y2": 400}
],
"count": 2,
"plot_size": "32x32"
}
Note: scanning the full grid takes time due to on-chain queries. Use --limit to stop early.
If you already have coordinates in mind:
scripts/check_availability.sh <x1> <y1> <x2> <y2>
Returns {"available": true, ...} or {"available": false, ...}.
If your image doesn't match the plot dimensions, resize it:
scripts/resize_image.sh <input_image> <width> <height> [output_path]
The script force-resizes to exact dimensions and replaces transparency with white.
This is the main script. It validates everything, checks availability, queries the price, encodes the pixel data, and outputs a ready-to-submit transaction:
scripts/prepare_mint.sh <image_path> <x1> <y1> <x2> <y2> <url>
Example:
scripts/prepare_mint.sh my_logo.png 992 128 1024 160 https://myproject.com
Returns transaction JSON:
{
"to": "0x25b9afe64bb3593ec7e9dc7ef386a9b04c53f96e",
"value": "0x2dc8b1d1680000",
"data": "0xdd2e6e7d...",
"chainId": 8453,
"description": "Mint 32x32 plot at (992,128) on Million Bit Homepage linking to https://myproject.com",
"meta": {
"price_eth": "0.012887040000000000",
"price_wei": "12887040000000000",
"size": "32x32",
"url": "https://myproject.com"
}
}
Use --dry-run to skip on-chain checks and just test the encoding pipeline.
Pass the output JSON to your EVM wallet skill to execute the transaction on Base chain (chainId 8453). The key fields are:
to -- the contract addressvalue -- ETH to send (the mint price, in hex wei)data -- the ABI-encoded calldatachainId -- 8453 (Base)All scripts live in scripts/ (relative to this file) and output JSON to stdout. Status messages go to stderr.
| Script | Purpose | Input |
|---|---|---|
scripts/check_price.sh | Get current mint price | <width> <height> or <x1> <y1> <x2> <y2> |
scripts/check_availability.sh | Check if coordinates are free | <x1> <y1> <x2> <y2> |
scripts/find_available_plots.sh | Scan grid for open spots | <width> <height> [--limit N] |
scripts/resize_image.sh | Resize image to plot size | <input> <width> <height> [output] |
scripts/prepare_mint.sh | Full pipeline: outputs tx JSON | <image> <x1> <y1> <x2> <y2> <url> [--dry-run] |
find_available_plots.sh to find open spots.prepare_mint.sh auto-resizes if the image doesn't match the plot dimensions.check_price.sh for current pricing.0x25b9afe64bb3593ec7e9dc7ef386a9b04c53f96e on Base (chain ID 8453)