Repository navigation
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces #1445 with the FIRO ↔ rsFIRO Rosen Bridge feature on current
staging, after #1448 added rsFIRO through app-specific token defaults.The bridge reuses the existing swap screens, estimates, wallet signing, trade storage and polling. It supports transparent FIRO deposits and rsFIRO ERC-20 deposits on Ethereum mainnet, exact integer fees, explicit quote refresh, and matching bridge events to the funded transaction. Signed bytes are saved before submission; interrupted or ambiguous submissions recover without creating a second deposit.
Scope is limited to this route. #1448's token catalog, app configuration and migration are unchanged, including existing token metadata and address casing. No new dependencies, CI changes, generic bridge framework or unrelated token setup. The shared swap form changes only register Rosen; existing reverse-estimate and rate-switching behavior is unchanged. Rosen's provider-level validation rejects reverse estimates. Recovery runs after existing provider polling so a stalled source node cannot hold up those updates. The shared wallet changes add a pre-broadcast persistence callback and reuse one validated FIRO data-output helper in both fee selection and construction.
Validation: 93 focused tests passed with Flutter 3.47.2 / Dart 3.13.2, covering the existing swap form and providers, Rosen fees/protocol/API/trades/recovery, token registration, FIRO signed-envelope checks, broadcast ordering, Ethereum fee caps/replaced transactions, Electrum/MWEB fees and Ethereum fee widgets. New widget tests reproduce the original receive-amount regression for ChangeNOW, Exolix and Trocador; a paused-node test reproduces the original polling delay. Both fail against the prior PR code and pass with the fixes. All 44 changed Dart files pass formatting; analysis reports no errors (existing warnings remain). Local tests used Flutter's data-only asset mode (
FLUTTER_NATIVE_ASSETS=false FLUTTER_DART_DATA_ASSETS=true) to skip unrelated native coin compilation; application source and dependencies were not stubbed. Rosen production configuration 7.1.1 was reverified on 2026-10-08; protocol references and setup are documented indocs/rosen_bridge.md.Draft pending full native/platform builds, interactive mobile/desktop checks and a small real-funds transfer in each direction. No live transfer was performed.