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 future expiry.

  • burnPosition(from, tokenId, amount) [onlyAuthorized]

    • Burns; flags as settled if balance reaches zero.

  • setAuthorizedMinter(minter, authorized) [onlyOwner]

  • Views: getPosition(tokenId), isExpired(tokenId), isSettled(tokenId).

Transfers

  • _update overridden to require from==0 || to==0 → only mint or burn allowed.

Last updated