TimeCurve: reduce dapp-style user hesitancy (communicate bounded risk) #193

Closed
opened 2026-05-11 09:11:24 +00:00 by PlasticDigits · 1 comment
PlasticDigits commented 2026-05-11 09:11:24 +00:00 (Migrated from gitlab.com)

Context

Many DeFi / onchain apps train a high-stakes mental model: the wrong approval, wrong token, wrong pool, or wrong button can move large, unbounded balances. Wallets reinforce this with scary generic warnings. Users therefore default to slow clicks, double-checking everything, and anxiety even when the underlying product is intentionally low-cost and bounded.

TimeCurve is materially different for typical entry paths: participation is designed around small, bounded buy envelopes (min/max CHARM sizing), clear onchain rules, and intentional safeguards rather than “entire wallet at risk” interactions. The gap is perception: first-time visitors still bring general dapp trauma unless we actively teach the lower-risk posture.

This issue tracks UX, copy, and affordances that make safety, security, and low blast radius obvious—without overclaiming (users still sign txs; smart-contract risk remains).

Goal

  • Reduce avoidance / hesitation on first meaningful actions (connect, approve, buy).
  • Make bounded downside legible at a glance (especially vs “unlimited approval / full balance” norms elsewhere).
  • Preserve honesty: we communicate what can go wrong at realistic magnitude, not fear-monger and not hand-wave.

Ideas (pick / split into child issues)

Bounded risk & “blast radius” copy

  1. Plain-language pre-flight panel above the primary CTA: what asset moves, approx max, what you receive (CHARM weight / DOUB), what is irreversible, in one scannable block (not legalese).
  2. Explicit “max at stake for this tx” line derived from the quoted spend and approval scope (prefer exact / capped approvals; cross-link existing ERC-20 approval sizing work — e.g. H-01 / exact approvals pattern).
  3. Contrast microcopy (tasteful, not preachy): one line like “Unlike many dapps, this flow is sized to small per-tx limits—not your whole wallet.” A/B test tone with design.
  4. CHARM min/max band called out visually as a guardrail, not just a validation error (badge, meter, or “envelope” graphic tied to onchain bounds).

Wallet-step anxiety (approve, sign, broadcast)

  1. Wallet-education strip: short bullets on why the wallet asks for approval vs swap vs transfer—mapped to our step (link out to docs/frontend/wallet-connection.md or a public FAQ).
  2. Stepper with reassurance: Connect → (Approve if needed) → Confirm buy → Done; each step shows only the next worry and what success looks like.
  3. Post-sign “nothing else required” confirmation when the tx is the last step—reduces “did I just do something else scary?” doubt.

Progressive depth & competence without overwhelm

  1. “Start small” preset on Simple: one tap to the minimum viable buy (or a low round number within bounds) with copy “Try the mechanics at the floor size.”
  2. Expandable “Advanced / Arena” framing: Simple stays calm; Arena clearly labeled as more competitive / more actions (users self-select risk appetite).
  3. Glossary tooltips for CHARM, DOUB, CL8Y, WarBow—one sentence each + “learn more” deep link.

Trust, verification, and “serious but not scary”

  1. Contract addresses + explorer links surfaced where users commit funds (already a direction elsewhere); add human-readable labels (“TimeCurve proxy”, “Buy router”) so explorers feel navigable.
  2. “How we make limits real” explainer: point to onchain reads as source of truth (not indexer)—short doc or in-app drawer.
  3. Security / incident posture (lightweight): where to report issues, bug bounty pointer if applicable, no fake “bank grade” claims.

Mistake recovery & honest failure modes

  1. Friendly revert map already a pattern—extend coverage so common user mistakes read as fixable (“wrong network”, “slippage/quote stale”, “bounds drift—refresh”) vs generic reverts.
  2. Clear distinction: reverted tx vs success but unexpected outcome (if any edge UX exists), so users do not catastrophize a harmless revert.

Social proof without pressure

  1. Recent buys / activity as liveness, not FOMO hammer—copy tone review so it feels observable, not predatory.

Research

  1. Short usability sessions (5 users): time-to-first-buy, where they hover longest, words they use out loud; feed into copy hierarchy.
  2. Metric: funnel from Connect → Approve → Submit → Confirmed with drop-off labels; set targets after baseline.
  • Three-view split rationale: docs/frontend/timecurve-views.md (Simple vs Arena vs Protocol).
  • Wallet gating / chain / session continuity issues already reduce accidental wrong-network mistakes—surface those wins in user-facing reassurance where appropriate.

Acceptance (meta)

This umbrella issue should spawn small, implementable child issues (copy tweak vs new component vs doc page). Close this when the team agrees on a v1 “bounded risk” messaging kit shipped on Simple + linked FAQ.

## Context Many DeFi / onchain apps train a **high-stakes mental model**: the wrong approval, wrong token, wrong pool, or wrong button can move **large, unbounded** balances. Wallets reinforce this with scary generic warnings. Users therefore default to **slow clicks, double-checking everything, and anxiety** even when the underlying product is intentionally **low-cost and bounded**. **TimeCurve is materially different** for typical entry paths: participation is designed around **small, bounded buy envelopes** (min/max CHARM sizing), **clear onchain rules**, and **intentional safeguards** rather than “entire wallet at risk” interactions. The gap is **perception**: first-time visitors still bring **general dapp trauma** unless we **actively teach** the lower-risk posture. This issue tracks **UX, copy, and affordances** that make **safety, security, and low blast radius** obvious—without overclaiming (users still sign txs; smart-contract risk remains). ## Goal - Reduce **avoidance / hesitation** on first meaningful actions (connect, approve, buy). - Make **bounded downside** legible at a glance (especially vs “unlimited approval / full balance” norms elsewhere). - Preserve honesty: we communicate **what can go wrong** at **realistic magnitude**, not fear-monger and not hand-wave. ## Ideas (pick / split into child issues) ### Bounded risk & “blast radius” copy 1. **Plain-language pre-flight panel** above the primary CTA: *what asset moves*, *approx max*, *what you receive* (CHARM weight / DOUB), *what is irreversible*, in one scannable block (not legalese). 2. **Explicit “max at stake for this tx”** line derived from the **quoted spend** and **approval scope** (prefer exact / capped approvals; cross-link existing ERC-20 approval sizing work — e.g. H-01 / exact approvals pattern). 3. **Contrast microcopy** (tasteful, not preachy): one line like *“Unlike many dapps, this flow is sized to small per-tx limits—not your whole wallet.”* A/B test tone with design. 4. **CHARM min/max band** called out visually as a **guardrail**, not just a validation error (badge, meter, or “envelope” graphic tied to onchain bounds). ### Wallet-step anxiety (approve, sign, broadcast) 5. **Wallet-education strip**: short bullets on *why* the wallet asks for approval vs swap vs transfer—mapped to **our** step (link out to `docs/frontend/wallet-connection.md` or a public FAQ). 6. **Stepper with reassurance**: Connect → (Approve if needed) → Confirm buy → Done; each step shows **only the next worry** and what success looks like. 7. **Post-sign “nothing else required”** confirmation when the tx is the last step—reduces “did I just do something else scary?” doubt. ### Progressive depth & competence without overwhelm 8. **“Start small” preset** on Simple: one tap to the **minimum viable buy** (or a low round number within bounds) with copy *“Try the mechanics at the floor size.”* 9. **Expandable “Advanced / Arena”** framing: Simple stays calm; Arena clearly labeled as **more competitive / more actions** (users self-select risk appetite). 10. **Glossary tooltips** for CHARM, DOUB, CL8Y, WarBow—**one sentence each** + “learn more” deep link. ### Trust, verification, and “serious but not scary” 11. **Contract addresses + explorer links** surfaced where users commit funds (already a direction elsewhere); add **human-readable labels** (“TimeCurve proxy”, “Buy router”) so explorers feel navigable. 12. **“How we make limits real”** explainer: point to **onchain reads** as source of truth (not indexer)—short doc or in-app drawer. 13. **Security / incident posture** (lightweight): where to report issues, bug bounty pointer if applicable, **no** fake “bank grade” claims. ### Mistake recovery & honest failure modes 14. **Friendly revert map** already a pattern—extend coverage so common user mistakes read as **fixable** (“wrong network”, “slippage/quote stale”, “bounds drift—refresh”) vs generic reverts. 15. **Clear distinction**: *reverted tx* vs *success but unexpected outcome* (if any edge UX exists), so users do not catastrophize a harmless revert. ### Social proof without pressure 16. **Recent buys / activity** as *liveness*, not FOMO hammer—copy tone review so it feels **observable**, not **predatory**. ### Research 17. **Short usability sessions** (5 users): time-to-first-buy, where they hover longest, words they use out loud; feed into copy hierarchy. 18. **Metric**: funnel from **Connect** → **Approve** → **Submit** → **Confirmed** with drop-off labels; set targets after baseline. ## Related product / docs - Three-view split rationale: `docs/frontend/timecurve-views.md` (Simple vs Arena vs Protocol). - Wallet gating / chain / session continuity issues already reduce *accidental* wrong-network mistakes—surface those wins in user-facing reassurance where appropriate. ## Acceptance (meta) This umbrella issue should spawn **small, implementable** child issues (copy tweak vs new component vs doc page). Close this when the team agrees on a **v1 “bounded risk” messaging kit** shipped on Simple + linked FAQ.
PlasticDigits commented 2026-05-11 09:14:30 +00:00 (Migrated from gitlab.com)

Research follow-up: how other fields reduce high-stakes hesitation

I looked across web3 wallet UX, fintech transfer UX, game onboarding, responsible-gambling controls, ecommerce checkout, and general UX error-prevention guidance. The consistent pattern: users do not become confident because a product says “safe.” They become confident when the product shows the exact consequence, the exact limit, the next step, and the recovery path at the moment of hesitation.

Cross-domain findings

  • Web3 / dapps: The dominant anxiety source is still blind signing and opaque approvals. Brave’s safer-signing writeup frames the problem well: users approve calldata they cannot interpret, so clearer balance-impact previews reduce stress and improve safety. Web3 transaction-flow guidance also emphasizes showing how many wallet/app steps remain, separating “action needed in wallet” from “pending onchain,” and giving clear success/fail/cancel states.
  • Fintech / TradFi: Transfer products reduce hesitation with review-before-send screens: amount, source, destination, recipient/contract, fee, timing/effective date, and post-submit confirmation. Plaid explicitly recommends app-side context before Transfer UI plus a post-success pane confirming amount and effective date. Circle’s wallet confirmation UI similarly exposes transfer/contract fields such as token, fiat amount, from/to or contract address, fee, function type, and parameters.
  • Gaming: Good onboarding does not front-load a manual. Roblox’s guidance favors visual hints, contextual tutorials, and timed hints only when a player stalls. The transferable lesson for TimeCurve: teach one decision at the point of need, then let the user succeed with a small first action.
  • Casinos / responsible gambling: The useful pattern is visible limits as empowerment, not danger copy. BetMGM’s safer-gambling tools make spend/loss/session limits explicit, show remaining capacity, make reductions immediate, and put friction on increases. For TimeCurve, the analogy is not “gambling language”; it is that limits should feel like a user-control feature: “this product is intentionally bounded.”
  • General product / ecommerce / UX: Confirmation dialogs and trust badges only work when they are specific and placed where anxiety peaks. NN/g’s user-control guidance highlights clear exits, back/cancel, undo where possible, and not trapping users. Checkout research repeatedly points to upfront costs, no surprises, and trustworthy local cues near the sensitive field/action rather than generic footer badges.

Deeper TimeCurve recommendations

  1. Ship a “bounded blast radius” receipt above the buy CTA.
    Show: pay asset, estimated spend, approval cap, CHARM amount, expected DOUB / CL8Y-at-launch framing where applicable, network, destination contract label, and what cannot happen: e.g. “This action cannot spend more than the approved/quoted amount.” Keep smart-contract risk language honest.

  2. Make TimeCurve’s constraints feel like safety rails.
    The min/max CHARM envelope should be a visible guardrail meter, not just validation copy. Use language like “This round only accepts buys inside this small envelope” and “Your selected buy is inside the current onchain limit.”

  3. Create a low-stakes first action.
    Add a “Start at the floor” or “Try the minimum buy” preset. The point is psychological: users need a successful first tx that proves this is not a whole-wallet DeFi interaction.

  4. Replace generic reassurance with specific consequences.
    Avoid empty claims like “safe and secure.” Prefer concrete copy: “You are approving up to X CL8Y for this buy,” “No unlimited approval selected,” “If the transaction reverts, no buy happens,” “Network fees may still apply.”

  5. Use a single wallet-flow stepper.
    States should be explicit: “Review in TimeCurve” → “Confirm in wallet” → “Waiting onchain” → “Confirmed” / “Canceled” / “Failed, no buy recorded.” This borrows the best web3 guidance and prevents the user from wondering whether the app froze or the wallet did something scary.

  6. Show “no funds moved” when true.
    Revert/failure copy should distinguish between a harmless failed/canceled transaction and a successful state-changing buy. This directly counters catastrophic thinking after a red wallet/app message.

  7. Use timed help for hesitation.
    If a user sits on the buy panel after entering an amount, show a small contextual hint after a short delay: “Want the lowest-risk first try? Use the minimum buy preset.” This borrows gaming onboarding without interrupting confident users.

  8. Put verification where funds move.
    Contract/explorer links should sit near the review/CTA area with labels like “TimeCurve proxy” and “Buy router,” not just raw addresses. This makes “verify if you want” available without forcing everyone into auditor mode.

  9. Frame limits as product identity.
    Suggested tone: “Most dapps make you bring high-stakes caution. TimeCurve is intentionally built around small per-tx limits and exact approvals, so you can participate without putting your whole wallet on the line.” Needs legal/security review, but this is the strategic positioning.

  10. Add session-level reality checks only if buying can become repetitive.
    Borrow the casino pattern carefully: after repeated buys or extended activity, show “You’ve spent X today / this session” and make the next action intentional. This reinforces trust and avoids pressure/FOMO dynamics.

Proposed v1 bundle

For the first child issue, I’d prioritize a small bundle on /timecurve Simple:

  • Bounded-risk receipt above the buy button.
  • Visible min/max CHARM guardrail meter.
  • “Start at the floor” preset.
  • Wallet/app stepper with clear cancel/fail/success states.
  • Copy pass replacing generic safety claims with exact consequences.

Sources reviewed: Brave safer signing (https://brave.com/blog/safer-signing/), Web3UX transaction flows (https://web3ux.design/transaction-flows), Circle confirmation UIs (https://developers.circle.com/wallets/user-controlled/confirmation-uis), Plaid Transfer UI (https://plaid.com/docs/transfer/using-transfer-ui/), Roblox onboarding techniques (https://create.roblox.com/docs/production/game-design/onboarding-techniques), BetMGM safer gambling tools (https://www.betmgm.co.uk/safer-gambling/safer-gambling-tools), NN/g user control/freedom (https://www.nngroup.com/articles/user-control-and-freedom/).

## Research follow-up: how other fields reduce high-stakes hesitation I looked across web3 wallet UX, fintech transfer UX, game onboarding, responsible-gambling controls, ecommerce checkout, and general UX error-prevention guidance. The consistent pattern: **users do not become confident because a product says “safe.” They become confident when the product shows the exact consequence, the exact limit, the next step, and the recovery path at the moment of hesitation.** ### Cross-domain findings - **Web3 / dapps:** The dominant anxiety source is still blind signing and opaque approvals. Brave’s safer-signing writeup frames the problem well: users approve calldata they cannot interpret, so clearer balance-impact previews reduce stress and improve safety. Web3 transaction-flow guidance also emphasizes showing how many wallet/app steps remain, separating “action needed in wallet” from “pending onchain,” and giving clear success/fail/cancel states. - **Fintech / TradFi:** Transfer products reduce hesitation with **review-before-send** screens: amount, source, destination, recipient/contract, fee, timing/effective date, and post-submit confirmation. Plaid explicitly recommends app-side context before Transfer UI plus a post-success pane confirming amount and effective date. Circle’s wallet confirmation UI similarly exposes transfer/contract fields such as token, fiat amount, from/to or contract address, fee, function type, and parameters. - **Gaming:** Good onboarding does not front-load a manual. Roblox’s guidance favors visual hints, contextual tutorials, and timed hints only when a player stalls. The transferable lesson for TimeCurve: teach **one decision at the point of need**, then let the user succeed with a small first action. - **Casinos / responsible gambling:** The useful pattern is **visible limits as empowerment**, not danger copy. BetMGM’s safer-gambling tools make spend/loss/session limits explicit, show remaining capacity, make reductions immediate, and put friction on increases. For TimeCurve, the analogy is not “gambling language”; it is that limits should feel like a user-control feature: “this product is intentionally bounded.” - **General product / ecommerce / UX:** Confirmation dialogs and trust badges only work when they are specific and placed where anxiety peaks. NN/g’s user-control guidance highlights clear exits, back/cancel, undo where possible, and not trapping users. Checkout research repeatedly points to upfront costs, no surprises, and trustworthy local cues near the sensitive field/action rather than generic footer badges. ### Deeper TimeCurve recommendations 1. **Ship a “bounded blast radius” receipt above the buy CTA.** Show: pay asset, estimated spend, approval cap, CHARM amount, expected DOUB / CL8Y-at-launch framing where applicable, network, destination contract label, and what cannot happen: e.g. “This action cannot spend more than the approved/quoted amount.” Keep smart-contract risk language honest. 2. **Make TimeCurve’s constraints feel like safety rails.** The min/max CHARM envelope should be a visible **guardrail meter**, not just validation copy. Use language like “This round only accepts buys inside this small envelope” and “Your selected buy is inside the current onchain limit.” 3. **Create a low-stakes first action.** Add a “Start at the floor” or “Try the minimum buy” preset. The point is psychological: users need a successful first tx that proves this is not a whole-wallet DeFi interaction. 4. **Replace generic reassurance with specific consequences.** Avoid empty claims like “safe and secure.” Prefer concrete copy: “You are approving up to X CL8Y for this buy,” “No unlimited approval selected,” “If the transaction reverts, no buy happens,” “Network fees may still apply.” 5. **Use a single wallet-flow stepper.** States should be explicit: “Review in TimeCurve” → “Confirm in wallet” → “Waiting onchain” → “Confirmed” / “Canceled” / “Failed, no buy recorded.” This borrows the best web3 guidance and prevents the user from wondering whether the app froze or the wallet did something scary. 6. **Show “no funds moved” when true.** Revert/failure copy should distinguish between a harmless failed/canceled transaction and a successful state-changing buy. This directly counters catastrophic thinking after a red wallet/app message. 7. **Use timed help for hesitation.** If a user sits on the buy panel after entering an amount, show a small contextual hint after a short delay: “Want the lowest-risk first try? Use the minimum buy preset.” This borrows gaming onboarding without interrupting confident users. 8. **Put verification where funds move.** Contract/explorer links should sit near the review/CTA area with labels like “TimeCurve proxy” and “Buy router,” not just raw addresses. This makes “verify if you want” available without forcing everyone into auditor mode. 9. **Frame limits as product identity.** Suggested tone: “Most dapps make you bring high-stakes caution. TimeCurve is intentionally built around small per-tx limits and exact approvals, so you can participate without putting your whole wallet on the line.” Needs legal/security review, but this is the strategic positioning. 10. **Add session-level reality checks only if buying can become repetitive.** Borrow the casino pattern carefully: after repeated buys or extended activity, show “You’ve spent X today / this session” and make the next action intentional. This reinforces trust and avoids pressure/FOMO dynamics. ### Proposed v1 bundle For the first child issue, I’d prioritize a small bundle on `/timecurve` Simple: - Bounded-risk receipt above the buy button. - Visible min/max CHARM guardrail meter. - “Start at the floor” preset. - Wallet/app stepper with clear cancel/fail/success states. - Copy pass replacing generic safety claims with exact consequences. Sources reviewed: Brave safer signing (https://brave.com/blog/safer-signing/), Web3UX transaction flows (https://web3ux.design/transaction-flows), Circle confirmation UIs (https://developers.circle.com/wallets/user-controlled/confirmation-uis), Plaid Transfer UI (https://plaid.com/docs/transfer/using-transfer-ui/), Roblox onboarding techniques (https://create.roblox.com/docs/production/game-design/onboarding-techniques), BetMGM safer gambling tools (https://www.betmgm.co.uk/safer-gambling/safer-gambling-tools), NN/g user control/freedom (https://www.nngroup.com/articles/user-control-and-freedom/).
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-05-30 13:22:28 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
code/yieldomega#193
No description provided.