You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
data/txApi.js calls signAndBroadcast() directly from handleSubmit handlers across stake, vote, bridge, withdraw-rewards, and IBC-transfer flows. The user signs in the wallet extension (Keplr/Leap shows its own confirmation), but this app does not show the user a synthesized human-readable summary of what they're about to sign before the wallet popup appears.
If a stake form is rendering wrong (e.g. wrong validator address from a stale state, wrong amount due to the precision bug fixed in 148a57f, wrong recipient from a poisoned pool list), the user has only the wallet extension's protobuf-decoded view to catch it. Most users skim past that.
Proposed UI
A confirmation step between "Submit" and signAndBroadcast:
Defense-in-depth: extends the wallet-extension safety net into the wallet app itself.
Catches a whole class of bugs (wrong amount / wrong destination from a UI state bug) before signing, which is recoverable. After signing, user funds move and are gone.
Problem
data/txApi.jscallssignAndBroadcast()directly fromhandleSubmithandlers across stake, vote, bridge, withdraw-rewards, and IBC-transfer flows. The user signs in the wallet extension (Keplr/Leap shows its own confirmation), but this app does not show the user a synthesized human-readable summary of what they're about to sign before the wallet popup appears.If a stake form is rendering wrong (e.g. wrong validator address from a stale state, wrong amount due to the precision bug fixed in 148a57f, wrong recipient from a poisoned pool list), the user has only the wallet extension's protobuf-decoded view to catch it. Most users skim past that.
Proposed UI
A confirmation step between "Submit" and
signAndBroadcast:Built once and reused across:
views/StakedToken.jsviews/Vesting.jsviews/PolygonBridge.jsx,EthToPolygonBridge.js,MntlToGravityBridge.js,GravityToEthBridge.js,OsmosisToMntl.jsxviews/ConnectModal/Redirect.js(vote flow)components/Rewards.jsx,components/Delegations.jsxWhy now
Acceptance
ConfirmTxModalcomponent incomponents/signAndBroadcastcall site (no direct broadcast without it)Followup to #198. Lift in difficulty: medium — UI work + threading through state machines.