Add Mint Club Base mint ingestor - #74
Conversation
Review Summary by QodoAdd Mint Club Base ERC1155 bonding-curve NFT ingestor
WalkthroughsDescription• Adds Mint Club ingestor for Base ERC1155 bonding-curve NFTs • Resolves Mint Club URLs by computing deterministic Create2 addresses • Supports WETH-backed ERC1155s with remaining supply via zap contract • Includes eligibility evidence for 10+ qualifying prior Base mints Diagramflowchart LR
URL["Mint Club URL<br/>mint.club/nft/base/:symbol"]
CONTRACT["Base ERC1155<br/>Contract Address"]
COMPUTE["Compute Create2<br/>Address"]
BOND["Query Bond Contract<br/>for Token Details"]
FILTER["Filter WETH-backed<br/>ERC1155s"]
TEMPLATE["Generate MintTemplate<br/>with Zap Instructions"]
URL --> COMPUTE
CONTRACT --> BOND
COMPUTE --> BOND
BOND --> FILTER
FILTER --> TEMPLATE
File Changes1. src/ingestors/index.ts
|
Code Review by Qodo
1.
|
|
Addressed the review feedback in commit 8421d2f: removed the module-level hardcoded Base RPC/contract and now build the Mint Club Bond contract from resources.alchemy.config.getProvider(), reject ineligible tokens after getDetail before reserve/metadata reads, made dynamic bonding-curve price validation non-exact, and expanded eligibility docs/tests with BaseScan holder links plus a >100 unique-collector lower bound. Re-ran build-types, lint, diff check, and the focused Mint Club mocha suite: 11 passing. |
Refs #11.
Adds a Mint Club ingestor for Base ERC1155 bonding-curve NFTs that can be minted through Mint Club's WETH zap contract.
What changed:
/nft/base/:symbolURLs by reproducing Mint Club's deterministic ERC1155 Create2 address formula.mintWithEth(token, 1, receiver)transaction.MintTemplateoutput with Mint Club metadata, Base output contract token id0, and currentgetReserveForToken(token, 1)ETH value including royalty.docs/mintclub-base-eligibility.md.Eligibility evidence:
0x9974A5CD8C484D7df85a0C56B807E98755cD732B0x3FBd3D7d9e465811db58f745eA7fA42901Aa31db0x0bBAa6f85ad8199302f16507ACc911aCd49E78630x832C76B6Ec18e37A2b5B4718a843D4633efFAaB00x3519cDa3A69Aba975065a888CD206040F5288A0b0xf3ce291d8AdE6c2bf3a4431F10D1616f2BD307fa0x102426Ce29AeF9C2952aa16507A6AcAf51216C690x7f1d47133680c89138e7c04b6411b5f4Bca7eE960x9B98A355840f01D4a6a0E97c3dF430e37A2695Dc0x69832024e4cfcfda7BA0dc8f646e4548E24E95A7Verification:
FLOOR_PACKAGES_AUTH_TOKEN=dummy yarn build-typesFLOOR_PACKAGES_AUTH_TOKEN=dummy yarn lintFLOOR_PACKAGES_AUTH_TOKEN=dummy ALCHEMY_API_KEY=dummy SIMULATE_DURING_TESTS=false NODE_OPTIONS="--loader ts-node/esm" ./node_modules/.bin/mocha --no-config --require ts-node/register --extension ts --timeout 90000 --exit test/ingestors/mintclub.test.tsgit diff --check