ERC1155DualPosition
ERC‑1155 token representing Dual Investment positions. Transfers are disabled (mint/burn only) to keep positions atomic until settlement.
Position Encoding
tokenId =
keccak256(underlying, strike, expiry, direction, marketId[, user]).Use
generateTokenIdForUser(...)to avoid multi‑user collisions.
Data Model
struct Position {
address user;
address cTokenIn; // base asset (input)
address cTokenOut; // quote asset (settlement)
uint128 notional;
uint64 expiry;
uint64 strike; // 18‑decimals
uint8 direction; // 0=CALL, 1=PUT
bool settled;
}Key Functions
mintPosition(to, tokenId, amount, Position)[onlyAuthorized]Stores
Position, mints ERC‑1155 amount; requires futureexpiry.
burnPosition(from, tokenId, amount)[onlyAuthorized]Burns; flags as
settledif balance reaches zero.
setAuthorizedMinter(minter, authorized)[onlyOwner]Views:
getPosition(tokenId),isExpired(tokenId),isSettled(tokenId).
Transfers
_updateoverridden to requirefrom==0 || to==0→ only mint or burn allowed.
Last updated