# Vaultfire Genesis NFT — Deploy Guide

A 1-of-1 commemorative ERC-721 minted to `ghostkey.base.eth` on Base.
The contract auto-mints token #1 to the deployer in the constructor, so
deploy and mint happen in a single transaction.

## What gets deployed

- **Contract:** `VaultfireGenesisNFT.sol` (Solidity 0.8.25, viaIR, MIT)
- **Token URI:** `https://theloopbreaker.com/nft/vaultfire-genesis.json`
- **Image:** `https://theloopbreaker.com/nft/vaultfire-genesis.png` (1024×1024 PNG)
- **Mint:** auto-mints `tokenId = 1` to deployer
- **Chain:** Base (chainId 8453)
- **Estimated gas:** ~600-900k → about $0.05-$0.20 on Base at typical gas

## Prerequisites (on your local machine, NOT in chat)

- Foundry installed (`curl -L https://foundry.paradigm.xyz | bash && foundryup`)
- Your deployer private key in a Foundry keystore (one-time setup):
  ```bash
  cast wallet import deployer --interactive
  # paste private key when prompted; it lives in ~/.foundry/keystores/deployer
  ```
  This way the key never sits in a `.env` and is encrypted at rest.

## Deploy command (one line)

From the `vaultfire-genesis-nft/` directory:

```bash
forge script script/Deploy.s.sol \
  --rpc-url https://mainnet.base.org \
  --broadcast \
  --verify \
  --etherscan-api-key $BASESCAN_KEY \
  --account deployer
```

You'll be prompted for the keystore password. Foundry signs locally,
broadcasts the deploy tx, then submits source verification to BaseScan.

## After deploy

The console will print the contract address. Then:

1. **Verify on BaseScan**: `https://basescan.org/address/<CONTRACT>` should
   show "Contract Source Code Verified" within ~30 seconds (auto from `--verify`).
2. **View on OpenSea / Zora / Rarible**: paste contract address, token #1
   should render the genesis card with full metadata.
3. **View on Base App**: open Base App → Collectibles → it auto-discovers
   NFTs in your wallet. Pull to refresh if it doesn't appear immediately.

## If you want to mirror the mint to AVAX, ARB, Polygon later

Same contract, same constructor arg. Just change `--rpc-url` and the
etherscan endpoint per chain. Each chain becomes its own genesis 1-of-1 on
that chain (totally fine — the standard pattern for multi-chain commemoratives).

## Security notes

- Private key never enters this chat or any cloud environment.
- Keystore password is the only credential you type, locally.
- Contract is owner-gated on `setTokenURI` (single escape hatch if I
  ever need to repoint metadata) — everything else is standard ERC-721
  with no admin backdoors.
