BNB Testnet Deployments
Deployed contract addresses + verification links. Testnet only today — mainnet is gated on Sprint C.7 (audit + legal).
Chain
- Network: BNB Smart Chain Testnet (chain ID 97)
- RPC:
https://data-seed-prebsc-1-s1.binance.org:8545 - Explorer: https://testnet.bscscan.com
Contracts
| Contract | Address | Source | Deployer |
|---|---|---|---|
HatchRegistry |
0xDEPLOYED_ADDRESS_PENDING |
src/HatchRegistry.sol | 0xHATCH_DEPLOYER |
HatchAttest |
0xDEPLOYED_ADDRESS_PENDING |
src/HatchAttest.sol | 0xHATCH_DEPLOYER |
Hatcher (BAP-578 NFA) |
0xDEPLOYED_ADDRESS_PENDING |
src/Hatcher.sol | 0xHATCH_DEPLOYER |
HatchNest (Treasury) |
0xDEPLOYED_ADDRESS_PENDING |
src/HatchNest.sol | 0xHATCH_DEPLOYER |
Replace 0xDEPLOYED_ADDRESS_PENDING with real addresses after the final
deploy run below. Run is intentionally deferred until immediately before
submission so the demo attestation counter doesn't drift.
Deploy command
cd packages/contracts
forge script script/DeployAll.s.sol \
--rpc-url https://data-seed-prebsc-1-s1.binance.org:8545 \
--private-key $DEPLOYER_PRIVATE_KEY \
--broadcast \
--verify \
--etherscan-api-key $BSCSCAN_API_KEY \
-vvv
Post-deploy:
- Copy the four contract addresses from the
broadcast/log. - Update this file with the verified BscScan links.
- Update
apps/api/.envon Railway withHATCH_ATTEST_ADDRESS. - Publish a sample attestation via
POST /v1/score/:id/publish. - Link the sample tx in the submission description.
First attestation (to publish before submission)
The submission must link to at least one real on-chain attestation to
close the "is this actually live?" question. We ship a one-shot script
(src/scripts/publish-first-attestation.ts) that generates a synthetic
all-live score and publishes it against the deployed contract — no
scoring pipeline or Bitquery/GoPlus keys required.
BSC_RPC_URL=https://data-seed-prebsc-1-s1.binance.org:8545 \
BSC_CHAIN_ID=97 \
HATCH_ATTEST_ADDRESS=0x<deployed> \
ATTESTER_PRIVATE_KEY=0x<funded 32-byte hex> \
pnpm --filter @hatch/api exec tsx src/scripts/publish-first-attestation.ts
Expected output:
✅ Attestation published.
attestationId: 0x…
txHash: 0x…
digest: 0x…
https://testnet.bscscan.com/tx/0x…
Paste the BscScan URL into:
README.md(badge + "live attestation" section)- Submission description +
HACKATHON-PITCH.md
Idempotent: re-running the script returns the same attestation because the publisher dedupes on the canonical digest. You only pay gas the first time.
Mainnet deploy (gated)
Not yet. Blocked on:
- Sprint C.6 — audit complete (OZ / Hacken / ToB)
- Sprint I.5 — legal opinion
- Multisig deployer (not an EOA)
- DeployAll dry-run against production params
- Four.meme Agent Wallet API access (Dep.3.1)
When all four tick, mainnet instructions land in mainnet.md.
Verification checklist
After deployment:
- BscScan shows "Verified" on every contract
-
HatchRegistry.attester()returns the hot-wallet address -
HatchNest.perTokenCap()returns > 0 -
HatchNest.dailyCap()returns > 0 -
HatchAttest.attest()succeeds with a sample payload -
Hatcher.mint()is permissioned (onlyHatchRegistry.admin)