Wrapped LP / Public Chain Program (Scaffold)
Solidity for Option A (lock → mint wLP → redeem) and Option B (ERC-4626 vault + NAV oracle). This is a new vertical: not an extension of CWMultiTokenBridgeL1/L2 or catalog cW* CCIP paths.
Documentation (exhaustive index)
| Doc |
Description |
| WRAPPED_LP_PROGRAM_REFERENCE.md |
Master index, invariants, glossary, phase gates |
| ADR_WRAPPED_LP_VAULT_PUBLIC_CHAIN.md |
Architecture decisions, alternatives |
| WRAPPED_LP_MESSAGE_SCHEMA.md |
lockRef, payloads, CCIP, redemption |
| WRAPPED_LP_ORACLE_STACK.md |
Two-price model, keepers, lending |
| WRAPPED_LP_LENDING_GOVERNANCE.md |
Venues, listing, risk matrix |
| WRAPPED_LP_OPERATIONS_RUNBOOK.md |
SLOs, RACI, incidents |
| WRAPPED_LP_AUDIT_CHECKLIST.md |
Auditor scope, threats |
Contracts
| File |
Role |
Chain138LPLocker.sol |
Escrow LP on 138; lockRef; releaseLock / releaseAmount |
WLPReceiptToken.sol |
Public-chain wLP (MINTER/BURNER) |
PublicChainMintController.sol |
Idempotent mintForLock; mintPaused |
WLPRedemptionGateway.sol |
Burn + RedemptionRequested |
WrappedLPNAVVault.sol |
ERC-4626 + depositCap |
WLPNAVOracle.sol |
USD-style feed, heartbeat, breaker, isStale() |
interfaces/IWLPProgramEvents.sol |
Shared events |
Build / test (scoped Forge)
Full-repo forge test may fail on legacy 0.5.x/0.6.x vendor trees; always use scope:
Deployment
Production: two forge script runs (138 RPC then destination RPC). See WRAPPED_LP_DEPLOYMENT_RUNBOOK.md.
Post-deploy role wiring (required)
| Grant |
To |
WLPReceiptToken.MINTER_ROLE |
PublicChainMintController |
WLPReceiptToken.BURNER_ROLE |
WLPRedemptionGateway |
PublicChainMintController.RELAYER_ROLE |
Relayer worker(s) |
Chain138LPLocker.BRIDGE_RELEASE_ROLE |
Relayer (138 release path) |
WLPNAVOracle.KEEPER_ROLE |
Price keeper |
Use multisig for DEFAULT_ADMIN_ROLE on production.
Environment variables (deploy script)
| Variable |
Purpose |
LP_TOKEN |
DODO LP ERC20 on 138 |
ADMIN |
Multisig / admin |
PRIVATE_KEY |
Broadcast key (lab only) |
USDC |
Optional; if set, deploys WrappedLPNAVVault |
Limitations (read before mainnet)
- Relayer trust: Mint path assumes honest relayer until ZK/attestation hardening.
- Fungible wLP: Secondary trading breaks simple per-lock redemption; see message schema doc.
- Vault:
totalAssets() follows ERC-20 balance; off-chain strategy on 138 is operational.
Repo context
- PMM pools:
docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md §4.1
- cW bridge pattern only:
docs/07-ccip/CW_BRIDGE_APPROACH.md
- GRU policy orthogonality:
docs/04-configuration/GRU_REFERENCE_PRIMACY_AND_MESH_EXECUTION_MODEL.md