Locked NFTs & Legacy Diamond Bypass
End-to-end flow (locked NFT)
User Migrator Old Façade Legacy Diamond (with bypass facet) Vault psXDC v3
│ │ │ │ │ │
│ migrate ─────►│ │ │ │ │
│ │ ownerOf, getNFTData ─►│ │ │ │
│ │ transferFrom(user→me)─► │ │ │
│ │ try claim(tokenId) ──►│ │ // best-effort: folds pending v2 rewards into staked
│ │ migratorPrepareForBurn(asset, id) ────────►│ // enforces any live v2 unlock window, then clears tokenLocked
│ │ burnAndRedeem(id) ──►│ │ │ │
│ │ …bridge → v3 shares (via PrimeStakedXDC_V3MigrationBridge)… │
│ │ mintAndStakeLocked(user, id, rarity, shares, lockEnd, lockBoost) ────────────►│ │
│ │ MigratedLocked(user, id, …) ⏎ │ │
│ ◄──── user owns new tokenId with original v2 lockEnd preserved on the v3 vault ────────────────┘What migratorPrepareForBurn actually does
migratorPrepareForBurn actually doesFunction
Returns
The legacy getNFTData caveat
getNFTData caveatWhat happens on the V3 side
What if I migrate a locked NFT before lockEnd?
lockEnd?Failure modes (handled by revert)
Condition
Revert
Live deployment
Component
Address
Last updated