Station wallet "transaction rejected by user" error when signing — console reports WalletError: User denied #208
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:implement
agent:implement
agent:open_issues
agent:ready
agent:research
agent:security_audit
agent:verify
architecture
backend
blocker:hybrid
blocker:launch
blocker:limit-orders
blocker:v2
block:log_only
block:security
bug
ci
contracts
correctness
deploy
dev
devops
docs
documentation
duplicate
e2e
enhancement
epic
feature
frontend
functional-completion
gas
good first issue
governance
help wanted
high-risk
hooks
hybrid
indexer
infra
infrastructure
integrators
invalid
launch-blocker
limit-orders
localnet
localterra
low priority
missing-implementation
needs-design
ops
performance
priority
high
priority
medium
product
qa
QA
question
ready
ready
research
scripts
security
security-hardening
smartcontracts
tech-debt
testing
ux
UX
v2
verification
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
code/cl8y-dex-terraclassic#208
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Issue Summary
When attempting to sign or broadcast a transaction using the Station wallet extension, the process fails with a "transaction rejected by user" error displayed in the UI. The browser console shows a
WalletErrorindicating "User denied, extension popup was closed," even if the user did not explicitly close the popup or reject the transaction. Interestingly, the stack trace mentionsKeplrExtension, suggesting a potential abstraction or configuration issue in how the wallet provider handles the Station extension.Reproduction Steps
WalletErrorand stack traceExpected Behavior
The transaction should be successfully signed and broadcast when the user approves it in the Station extension popup. If a rejection occurs, it should only be when the user explicitly cancels the action.
Actual Behavior
The transaction is immediately rejected with the following error logged in the console:
The UI displays:
transaction rejected by user.Environment Details
localterra(local Docker) ormainnetVITE_NETWORK=local npm run devWallet / Device Details
@goblinhunt/cosmeswallet integrationConsole Logs
Severity / Impact
Blocker: This blocks all on-chain interactions for users using the Station wallet. The reference to
KeplrExtensionin the stack trace for a Station wallet error suggests a significant bug in the wallet provider's extension detection or routing logic.Still hinders the last checklist of https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/work_items/147 being fully verified due to lack of testing with station wallet.
cc: @PlasticDigits ~"blocker:launch"
mentioned in commit
2d92b130f8Fix landed on
main(2d92b13)@Brouie — please verify Station extension signing on LocalTerra and mainnet (swap, place limit, provide liquidity).
Root cause
StationExtensionis an alias of cosmesKeplrExtension(Keplr in stack traces is expected).window.station.keplrshim mishandlessignDirectand can returnUser denied, extension popup was closedeven when the user did not reject.signAminoafter approval (fee-guard retry) could also close the popup.Changes
StationControlleralways usesuseAminoSigning = truefor extension connects (#208).applyStationKeplrShimSignDefaults()—preferNoSetFee/preferNoSetMemoon connect + before each broadcast.experimentalSuggestChainbefore/after connect (same gas steps as Keplr).withTerraWalletSignLock— serializes extensionbroadcastTxso only one popup is active.Docs / agents
skills/AGENTS_FRONTEND_STATION_SIGNING.mdVerification checklist
cd frontend-dapp && npm ci && npm run test:run(includescosmesPatch127.test.ts,terraWalletSignLock.test.ts)VITE_NETWORK=local) — approveaddNetworkif prompted (#207)WalletError: User denied, extension popup was closedon approveLeaving issue open until Station QA on real hardware confirms.
mentioned in commit
25b4793913mentioned in commit
2607f15bc1Fix landed on
main(commit2d92b13+ doc follow-up)Station extension txs were routed through
signDirecton mainnet and a secondsignAminocould run after the user already approved the first prompt. Station’s Keplr shim then often reportedUser denied, extension popup was closedeven when the user intended to approve — stack traces showingKeplrExtensionare expected (StationExtensionis an alias).What changed
StationController→useAminoSigning = truefor all extension connects; onesignAminoper tx (no fee-guard retry re-prompt).applyStationKeplrShimSignDefaults()on Station connect + before everybroadcastTerraExecuteContracts.withTerraWalletSignLockserializes extensionbroadcastTxso overlapping popups cannot clobber each other.experimentalSuggestChainbefore/after connect for Station (gas step refresh).skills/AGENTS_FRONTEND_STATION_SIGNING.md.Verification checklist
cd frontend-dapp && npm ci(patch applies:@goblinhunt/cosmes@0.0.71-ghunt.21 ✔)npm run test:run—cosmesPatch127.test.ts,terraWalletSignLock.test.ts,terraBroadcast.test.tsaddNetwork/ chain update if prompted) → swap / place limit / provide liquidityKeplrExtensionin stack is OK when wallet type is Station@brouie — please run the checklist above on your Station build (mainnet + local if available) and reply here. Leaving the issue open until verified.
/cc @PlasticDigits
mentioned in issue #127
Closing as local testing cannot be done on station wallet, only other wallets. terrastation does not work properly with localterra.
mentioned in issue #367
mentioned in issue #567
mentioned in merge request !1091
mentioned in issue #679
mentioned in issue #681