-
Notifications
You must be signed in to change notification settings - Fork 394
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
transaction.chainId/signature.v mismatch
error when signing transactions using Ledger
#3647
Comments
Tried other dApps and networks: TEST 13. Swap 0.01 ETH to WETH on Ethereum Sepolia on Uniswap. Signing TEST 14. MM Test Dapp. Arbitrum Sepolia. Send EIP 1559 Transaction. Fail, TEST 15. Swap 0.005 ETH to WETH on Ethereum Goerli on Uniswap. Signing
and
TEST 16. MM Test Dapp. Ethereum Sepolia. Send EIP 1559 Transaction. Success, no errors. TEST 17. MM Test Dapp. Ethereum Sepolia. Send EIP 1559 Transaction. Success, no errors. TEST 18. MM Test Dapp. Ethereum Sepolia. Send EIP 1559 Transaction. Success, no errors. TEST 19. MM Test Dapp. Arbitrum Sepolia. Send EIP 1559 Transaction. Fail, TEST 20. MM Test Dapp. Arbitrum Sepolia. Send EIP 1559 Transaction. Fail, TEST 21. MM Test Dapp. Arbitrum. Send EIP 1559 Transaction. Success, no errors. After upgrading Ethereum App in Ledger to 1.10.3: TEST 22. MM Test Dapp. Arbitrum Sepolia. Send EIP 1559 Transaction. Fail, ... (will update here with other results) |
@michalinacienciala - I've done two tests on https://bridge.arbitrum.io/. I've sent from Sepolia to Arbitrum Sepolia and I didn't get the Here's the video for one: Screen.Recording.2023-10-27.at.10.43.45.AM.movAnd the scan site: https://sepolia.etherscan.io//tx/0x7e0c9cafb6b5fa5725e2451034c74cffb4c9307640b6fa9af8b3fc2667d32167 And then I also did a test the other way from Arbitrum Sepolia to Ethereum Sepolia and I didn't get the error there either: Screen.Recording.2023-10-27.at.10.50.59.AM.movhttps://sepolia.arbiscan.io//tx/0x32aff882dbabd3b55f31aba055fbdfcb588651c1038fe6063142b6e94419788b Leder Nano X with Version 1.10.2 |
@andreachapman , could you do maybe 2 more retries of the test with sending from the Arbitrum Sepolia (only if you have time)? |
@michalinacienciala - ok, I think I have some more evidence. So I did two more sending from Arb Sepolia like you said and again, both were successful. But then, I decided to move some $TAHO to my ledger account. It didn't previously have any. So I moved $TAHO from testertesting.eth to my ledger wallet and then the next transaction I did to send from Arb Sepolia, it failed and I got that error you saw in the extension logs. However, I then did another one to send from Arb Sepolia and it was successful So it's definitely not consistent from what I'm seeing. But very interesting that I did like 5 tests and never saw that error until right after I moved TAHO to my ledger wallet. |
Hmm, interesting. The account I'm seeing all those failures on also has TAHO. So it may have something to do with it - although I'm not 100% sure, as in some cases I did have TAHO and was able to do successful transactions (e.g in TEST 2, see video below) Uploading Screen Recording 2023-10-27 at 10.08.18.mov… |
My tests 1-22 were all done on the same Ledger account ( For the TEST 23 I've added another, clean Ledger account ( I'll do one more try and then send some TAHO to that account and try one more time. I'll update this comment once I have the results. [EDIT] OK, I did another try on Arbitrum Sepolia for account with no TAHO ( |
Let me post a summary here: |
… handling (#3650) It currently seems like there is an issue with Ledger's handling of high chain ids for certain transactions, where the Ledger can provide a first byte that breaks the expectations of the chain id adjustment done for legacy transactions to conform to EIP-155. The resulting `v` value returned from the signing flow is invalid and Ethers throws because of this. This fix *may* be correct, but it may not be. To adjust for this fact, the patch limits adjustments of the underlying parity value in Ledger to happen only when the chain id matches Arbitrum Sepolia's (412614), as that's the only place we've seen consistent reports of the issue. See also LedgerHQ/ledger-live#5265 . Fixes #3647 . ## Testing - Easiest way to test here is really to just hammer https://app.taho.xyz/ . In reproducing, we've found that some transactions trigger the issue and others don't, depending on what the first byte of the Ledger response to the signing request is. Latest build: [extension-builds-3650](https://github.com/tahowallet/extension/suites/17798752935/artifacts/1021248068) (as of Wed, 01 Nov 2023 09:45:37 GMT).
Unfortunately, I still see the issue. I've tested on builds from #3650 and #3613. In both cases I got the Here's a video from testing on a build from #3613: https://drive.google.com/file/d/1WxLyCzRQPbAdBOrB93JXc9Yj4Z1yNBRb/view?usp=drive_link (warning: the file is big (>400MB)). |
I did some tests of staking in the Subscape dapp (I used the stage-live deployment) on Ethereum Sepolia and although some staking transactions were successful, some failed with the following errors in the wallet logs:
and
and
I used version
0.50.0c1e7552
of the wallet and used Ledger Nano S (2.60.0
) with Ethereum app (1.10.1
) for signing.Here are the tests that I did:
TEST 1. Stake 2 TAHO. Staking failed with a different error (
Transfer amount exceeds spender allowance
) - not in scope of this issueTEST 2. Stake 2 TAHO. Both transactions successful
TEST 3. Stake 3 TAHO.
Token approval
successful,Contract interaction
failed withtransaction.chainId/signature.v mismatch
TEST 4. Stake 3 TAHO.
Contract interaction
failed withtransaction.chainId/signature.v mismatch
TEST 5. Stake 3 TAHO.
Contract interaction
successfulTEST 6: Stake 1 TAHO. Both transactions successful
TEST 7: Stake 2 TAHO. Approve asset spend successful, Contract interaction failed with
transaction.chainId/signature.v mismatch
TEST 8: Stake 2 TAHO. Contract interaction failed with
transaction.chainId/signature.v mismatch
TEST 9: Stake 2 TAHO. Contract interaction failed with
transaction.chainId/signature.v mismatch
TEST 10: Stake 2 TAHO. Contract interaction failed with
transaction.chainId/signature.v mismatch
TEST 11: Stake 2 TAHO. Contract interaction failed with
transaction.chainId/signature.v mismatch
TEST 12: Stake 2 TAHO. Contract interaction failed with
transaction.chainId/signature.v mismatch
Video covering tests 6-12:
Screen.Recording.2023-10-27.at.11.47.02.mov
Looking at the results, there's no clear rule about which transactions fail and which are successful.
I wonder if the problem may be caused by similar issue as discussed here: ethers-io/ext-signer-ledger#6 (comment). In this issue, bumping ledger libraries in
ether.js
(https://github.com/ethers-io/ethers.js/pull/1370/files) has helped. But we already use higher versions than those...The text was updated successfully, but these errors were encountered: