bridge-monitor: Mobula EIP-712 signature-confirm flow (fixes stuck deposits)#1160
Merged
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.
The Mobula bridge requires a two-step quote flow for EVM origins: unsigned quote → EIP-712 sign the returned typedData → confirm quote echoing signature/intentId/deadline/minAmountOut → broadcast the confirmed response's deposit. Our client was broadcasting the unsigned response, which the Mobula solver silently rejects as unregistered (five 1-dollar test deposits stuck this week). Wired GetSignedQuote in mobula_bridge.go, added EVMPrivateKey() accessor on TxExecutor, patched executor.go to use the signed path. One gotcha for go-ethereum apitypes: Mobula's typedData omits the EIP712Domain type definition (only BridgeIntent is listed), we synthesize the standard {name,version,chainId} entry before hashing. Verified live single-test on demo-api: 3/3 fresh 1-dollar tests settled (Sol→Base, Base→Arb, Arb→Sol) after the fix. go build/vet/test -race clean.