Place 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 | or |
scripts/check_availability.sh | Check if coordinates are free | |
scripts/find_available_plots.sh | Scan grid for open spots | |
scripts/resize_image.sh | Resize image to plot size | |
scripts/prepare_mint.sh | Full pipeline: outputs tx JSON | |
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)共 1 个版本