{"id":"ERC-3475","name":"Abstract Storage Bonds","status":"Final","chain":"both","category":{"id":"defi","name":"DeFi Patterns","description":"Vaults, bonds, and financial primitives"},"journeyStages":[{"id":"management","name":"Asset Management","description":"Managing assets over time"}],"uxImpact":"Users hold complex bond instruments with multiple classes and nonces — each representing different maturity conditions and metadata. Design implications: display bond class/nonce hierarchy, show maturity conditions per bond series, implement batch operations UI for efficiency, display on-chain metadata (coupon rates, redemption conditions). Design decisions: how to simplify the class/nonce abstraction for retail users, whether to group by maturity date or class, representing the difference between issue and redeem actions.","hasDetailedContent":true,"content":{"id":"ERC-3475","summary":"ERC-3475 enables complex financial bonds as NFTs with multiple classes, tranches, and metadata. A single contract can represent bonds with different rates, maturities, and risk levels—bringing structured DeFi products into a standard, tradeable format.","applicability":{"whenToUse":["Your product addresses: deFi positions are opaque.","Your product must handle: can't trade DeFi positions easily.","The flow should deliver: position = NFT with rate, maturity, terms visible.","You are designing a bond portfolio dashboard experience with visible states and recovery paths."],"whenToAvoid":["Clearly explain seniority and what it means for risk.","Maturity date should be prominent with countdown.","Show \"Face: $1000 | Price: $980 (2% discount)\".","No token balances, swaps, lending, or yield flows appear in the product."]},"designerTakeaways":["You can design UI that delivers position = NFT with rate, maturity, terms visible.","You can design UI that delivers transfer position NFT directly.","You can design UI that delivers one contract holds all classes and tranches."],"problemsSolved":[{"problem":"DeFi positions are opaque","oldWay":"Position = balance in protocol, no details visible","newWay":"Position = NFT with rate, maturity, terms visible","impact":"critical"},{"problem":"Can't trade DeFi positions easily","oldWay":"Withdraw, transfer tokens, re-deposit","newWay":"Transfer position NFT directly","impact":"critical"},{"problem":"Multiple bond classes need multiple contracts","oldWay":"Deploy new contract for each bond series","newWay":"One contract holds all classes and tranches","impact":"high"},{"problem":"Bond terms not machine-readable","oldWay":"Check docs/UI for rate, maturity, terms","newWay":"On-chain metadata: rate, maturity, all terms","impact":"high"},{"problem":"Can't create bond derivatives","oldWay":"No standard for splitting/combining positions","newWay":"Split bond into tranches, bundle classes together","impact":"medium"}],"uxPatterns":[{"name":"Bond Portfolio Dashboard","description":"Display multiple bond classes and user positions","mockup":"generic/vault-position","userFlow":["User views bond portfolio","Sees all classes they hold","Each shows rate, maturity, risk level","Accrued yield displayed per position","Actions available for each class"]},{"name":"Bond Issuance","description":"Create bonds with multiple classes","mockup":"generic/vault-deposit","userFlow":["Issuer names bond series","Configures multiple classes","Sets rate, capacity, maturity per class","Adds additional classes as needed","Creates bond contract with all classes"]},{"name":"Bond Purchase","description":"Buy into specific bond class","mockup":"concept/nft-gallery","userFlow":["User browses bond series","Sees available classes with terms","Selects preferred risk/yield class","Enters purchase amount","Sees projected returns","Purchases, receives bond NFT"]},{"name":"Bond Trading","description":"Secondary market for bond positions","mockup":"generic/vault-position","userFlow":["User browses bond marketplace","Sees listings with price/face value","Understands discount = extra yield","Buys position at market price","Or lists their own position for sale"]},{"name":"Bond Maturity & Redemption","description":"Redeem bonds at maturity","mockup":"concept/nft-gallery","userFlow":["Bond reaches maturity date","User notified of redemption","Sees principal + interest breakdown","Chooses destination for funds","Redeems, bond NFT burns"]}],"uiComponents":[{"name":"BondClassCard","description":"Display card for a bond class","states":["available","full","matured","defaulted"],"props":["classId","rate","maturity","capacity","filled","riskLevel"]},{"name":"BondPositionNFT","description":"Visual representation of bond position","states":["active","matured","redeemed"],"props":["class","amount","purchaseDate","maturityDate","accruedYield"]},{"name":"RiskIndicator","description":"Visual risk level for bond class","states":["low","medium","high"],"props":["riskLevel","seniorityRank","showExplanation"]},{"name":"YieldCalculator","description":"Project returns over time","states":["calculating","ready"],"props":["principal","rate","startDate","maturityDate","compounding"]},{"name":"BondMarketplace","description":"Secondary market for bond trading","states":["loading","active","no-listings"],"props":["bondContract","classFilter","listings[]","onBuy","onList"]}],"antiPatterns":[{"pattern":"Hiding bond class differences","why":"Senior vs junior has very different risk profiles","instead":"Clearly explain seniority and what it means for risk","severity":"critical"},{"pattern":"Not showing maturity date prominently","why":"User doesn't know when they can redeem","instead":"Maturity date should be prominent with countdown","severity":"high"},{"pattern":"Confusing face value with market price","why":"User pays $980 for $1000 bond, doesn't understand","instead":"Show \"Face: $1000 | Price: $980 (2% discount)\"","severity":"high"},{"pattern":"No accrued interest display","why":"User doesn't see yield accumulating","instead":"Live counter showing accrued yield","severity":"medium"},{"pattern":"Hiding default risk","why":"Bonds can default, users need to understand","instead":"Show issuer info and default protection mechanisms","severity":"high"}],"onMonad":[{"aspect":"Yield Calculations","ethereum":"Real-time yield requires off-chain calc or multiple calls","monad":"Fast on-chain queries for live accrued interest","designImplication":"Can show real-time yield ticking up"},{"aspect":"Bond Trading","ethereum":"Secondary market trades cost significant gas","monad":"Cheap trades enable active bond market","designImplication":"Can build liquid secondary markets"},{"aspect":"Multi-Class Operations","ethereum":"Cross-class queries expensive","monad":"Parallel queries for portfolio views","designImplication":"Full portfolio dashboard loads instantly"},{"aspect":"Redemption","ethereum":"Redemption tx takes time to confirm","monad":"Sub-second redemption to wallet","designImplication":"Instant gratification on maturity"}],"keyTakeaways":["ERC-3475 = DeFi positions as structured bond NFTs","Multiple classes with different risk/reward in one contract","Always explain seniority and what it means","Show face value vs market price clearly","Display accrued yield and maturity countdown"],"technicalNotes":"ERC-3475 uses a multi-dimensional token model: (classId, nonceId, amount). Classes define bond terms (rate, maturity). Nonces are issuance batches. Metadata functions expose all terms on-chain. Supports issue(), redeem(), burn(), and transfer(). Built for structured products with tranches."},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-3475","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=ERC-3475","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-3475","markdown":"https://www.eipsfordesigners.com/standards/ERC-3475/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-3475/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-3475","official":"https://eips.ethereum.org/EIPS/eip-3475","discussion":"https://ethereum-magicians.org/search?q=ERC-3475"},"freshness":{"lastReviewed":"2026-04-05","lastUpdated":"2026-04-05"}}