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
settled
if balance reaches zero.
setAuthorizedMinter(minter, authorized)
[onlyOwner]Views:
getPosition(tokenId)
,isExpired(tokenId)
,isSettled(tokenId)
.
Transfers
_update
overridden to requirefrom==0 || to==0
→ only mint or burn allowed.
Last updated