Skip to content

feat(wallet): 未対応 Smart Account の standard モード fallback#4

Merged
cipherwebllc merged 1 commit into
mainfrom
feat/smart-account-fallback
May 25, 2026
Merged

feat(wallet): 未対応 Smart Account の standard モード fallback#4
cipherwebllc merged 1 commit into
mainfrom
feat/smart-account-fallback

Conversation

@cipherwebllc
Copy link
Copy Markdown
Owner

Summary

  • gasless モードで未対応 Smart Account delegation (EIP-7702) を検出した際、赤エラーの代わりに amber banner で standard モード (ガス付き) への切替ボタン を表示
  • ユーザーがボタンを押すと runtime で standard モードに切替わり、Smart Account を経由せず直接 ERC20 transfer で決済可能
  • TipForm は gasless 専用のため fallback 不可、別ウォレット案内 banner のみ

Background

Rabby wallet (iPhone) で Kaia チェーン上の JPYC 決済を試みた際、EOA が未知の EIP-7702 delegation (0x470a...bf19, Kaia-only contract) に委任されており IncompatibleSmartAccountError でブロックされた。Standard モードなら Smart Account を一切使わないため決済可能。

Changes

  • SmartAccountFallbackBanner 新規コンポーネント (amber style, 切替ボタン付き)
  • PaymentForm / CheckoutForm: modeOverride state で gasless→standard 切替
  • TipForm: gasless 専用のため fallback 不可、別ウォレット案内 banner のみ
  • i18n: SmartAccountFallback namespace 追加 (en/ja)

Test plan

  • npm run typecheck pass
  • npm run lint pass
  • npm run test:run pass (SmartAccountFallbackBanner 4 tests 新規)
  • gasless QR → unknown delegation 環境で amber banner 表示確認
  • 「通常決済に切替」ボタンで standard mode に切替 → 決済可能確認
  • Tip ページで amber banner (切替ボタンなし) 表示確認

🤖 Generated with Claude Code

gasless モードで IncompatibleSmartAccountError が発生した場合、赤エラーの
代わりに amber banner で standard モード (ガス付き) への切替ボタンを表示。
ユーザーがボタンを押すと runtime で standard モードに切替わり、Smart Account
を経由せず直接 ERC20 transfer で決済できる。

- SmartAccountFallbackBanner 新規コンポーネント (amber style)
- PaymentForm / CheckoutForm: modeOverride state で gasless→standard 切替
- TipForm: gasless 専用のため fallback 不可、別ウォレット案内 banner のみ
- i18n: SmartAccountFallback namespace 追加 (en/ja)

Closes: Rabby wallet (Kaia) で delegate 0x470a...bf19 に委任された EOA が
ガスレス決済できなかった問題。standard モード fallback で決済可能に。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 25, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
openpay Ready Ready Preview, Comment May 25, 2026 10:44am

@cipherwebllc cipherwebllc merged commit 021d847 into main May 25, 2026
5 of 6 checks passed
@cipherwebllc cipherwebllc deleted the feat/smart-account-fallback branch May 25, 2026 11:55
cipherwebllc added a commit that referenced this pull request May 31, 2026
… test coverage (Codex review)

Codex code-review (approve-with-changes) の minor 2 点:
- 隔離: fireMerchantMint helper で onMerchantMint を try/catch 包み、会計ログ (best-effort)
  の例外が確定済 merchant mint 後の決済 flow を中断させないようにした (3 fire site 全て)。
- テスト: (a) CCTP resume-merchant-landed が fee mint より前に callback を 1 度発火、
  (b) CCTP fee mint 失敗でも merchant callback は発火済 (income 取りこぼし無し)、
  (c) onMerchantMint throw が executor に伝播しない (隔離の検証)。

bridgeFeeMax の override 乖離 (Codex minor #4) は現状 override 経路の caller が無く latent。
将来 override 対応 caller を足す際は executor から実 ceiling を callback に渡す follow-up が必要
(estimator は default overrides 前提)。

Verified: tsc 0 · eslint 0 · full suite 2566 passed/0 failed。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant