# BOX Contract Workspace

BOX is scaffolded as a fixed-supply ERC-20 utility token for private Zweichain staging first, then public Zweichain.

## Contract defaults

- Name: `BOX Boxing AI Token`
- Symbol: `BOX`
- Decimals: `18`
- Initial supply: `1,000,000,000 BOX`
- Minting: constructor-only fixed mint to treasury multisig
- Owner: treasury multisig
- Admin functions: `pause()` and `unpause()`
- No future `mint()` function

## Required environment

Copy `.env.example` to `.env` locally and fill only on the deployment machine. Do not commit `.env`.

Required:

- `BOX_TREASURY_MULTISIG`
- `BOX_DEPLOYER_PRIVATE_KEY`
- `BOX_PRIVATE_RPC_URL`
- `BOX_PRIVATE_CHAIN_ID`
- `BOX_PRIVATE_EXPLORER_URL`
- `ZWEICHAIN_PUBLIC_RPC_URL`
- `ZWEICHAIN_PUBLIC_CHAIN_ID`
- `ZWEICHAIN_PUBLIC_EXPLORER_URL`

## Commands

Install dependencies:

```powershell
npm install
```

Build:

```powershell
npm run build
```

Test:

```powershell
npm test
```

Check private deployment environment:

```powershell
npm run check:env:private
```

Deploy private staging:

```powershell
npm run deploy:private
npm run verify:private
```

Check public deployment environment:

```powershell
npm run check:env:public
```

Deploy public Zweichain:

```powershell
npm run deploy:public
npm run verify:public
```

Each deployment writes a JSON record under `deployments/`.

## Release rule

Do not run public deployment until the private deployment record, token metadata, owner address, total supply, pause behavior, transfer behavior, and permit surface have all been verified.
