Skip to content

[#432] Zap v2 Contract: Re-fork with multi-token support + mainnet deploy #433

@realproject7

Description

@realproject7

Parent: #432

Summary

Discard the current ETH-only ZapPlotLink.sol. Re-fork from MintPad's ZapUniV4MCV2 with the same multi-token fromToken interface, adapted for PlotLink's two-hop path (fromToken → PLOT → storyline token).

Reference

  • MintPad ZapUniV4MCV2: 0xa2e7BcA51A84Ed635909a8E845d5f66602742A75 (Base mainnet, verified on Basescan)
  • MintPad ABI: mintpad/src/configs/abis.ts:1052-1114

Interface to match:

function mint(address fromToken, address storylineToken, uint256 storylineAmount, uint256 maxFromTokenAmount) payable returns (uint256 fromTokenUsed)
function mintReverse(address fromToken, address storylineToken, uint256 fromTokenAmount, uint256 minStorylineAmount) payable returns (uint256 storylineAmount)
function estimateMint(address fromToken, address storylineToken, uint256 storylineAmount) returns (uint256 fromTokenAmount, uint256 totalPlotRequired)
function estimateMintReverse(address fromToken, address storylineToken, uint256 fromTokenAmount) returns (uint256 storylineAmount, uint256 plotAmount)

PlotLink adaptations from original

  • Replace HUNT with PLOT as the reserve token
  • Keep fromToken parameter for multi-token input
  • Keep owner-updatable plot token address (setPlotToken())
  • Remove MT (MerkleTree) support if present in original
  • Supported input tokens: ETH (address(0)), USDC, HUNT

Deploy to Base Mainnet

  • PoolManager: Base mainnet Uniswap V4 PoolManager
  • MCV2_Bond: 0xc5a076cad94176c2996B32d8466Be1cE757FAa27
  • MCV2_BondPeriphery: 0x492C412369Db76C9cdD9939e6C521579301473a3
  • WETH: 0x4200000000000000000000000000000000000006
  • PLOT token: current reserve token address
  • Verify on Sourcify + Basescan
  • Ensure required Uniswap V4 pools exist on mainnet for each fromToken → PLOT path

Acceptance Criteria

  • Contract compiles and passes tests
  • Deployed on Base mainnet
  • Verified on Sourcify + Basescan
  • mint() and mintReverse() work with ETH, USDC, HUNT inputs
  • estimateMint() and estimateMintReverse() return correct values
  • setPlotToken() works (owner only)
  • Post deployed address in PR description

Branch

task/432-zap-v2-contract in plotlink-contracts repo

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent/T3Assigned to T3 builder agent

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions